Both capture helpers now accept --out=res://docs/screenshots, and tools/check_screenshots.sh renders the staged set (using xvfb-run when headless) before running screen_designs.py compare. Record the judge result: 7 match, 4 review, 0 diff. Headless 226/226 and the smoke both pass in a clean worktree.
96 lines
6.0 KiB
Markdown
96 lines
6.0 KiB
Markdown
# TODO
|
||
|
||
Godot 4.3 prototype. Latest release **v0.6.0** (Blender character/gear/prop library, baked AO, environment lift).
|
||
Headless suite **227/227** plus **86** Python tooling tests; the session, PLAN-verb, crowd, emergency,
|
||
timeline, audio, scenario-content, props, NPC-budget, movement, and windowed focus/radial smokes
|
||
pass. Anonymous downloads are enabled on the host. The realism pass is adopted (per-phase skyline
|
||
panoramas, v2 surface tiles, retuned lighting); see `DONE.md` and `TODO.md` → Realism follow-ups.
|
||
|
||
The scheduled presentation pass is complete (see `DONE.md`). The next scheduled pass is the
|
||
graphics-quality work in [`docs/plan-graphics-v0.6.md`](docs/plan-graphics-v0.6.md).
|
||
|
||
> **v0.6.0 shipped (2026-11-01):** the Blender character/gear/prop library is integrated, AO maps
|
||
> are baked and wired, and the environment textures were lifted to 1024² with normal maps. See
|
||
> `DONE.md` for the completed graphics plan.
|
||
|
||
## Visual alignment with rendered mockups
|
||
|
||
### Storage restructure
|
||
|
||
- [x] Decide the canonical runtime image root (`assets/images/` for UI/scene art): recorded in
|
||
`MEMORY.md` and [ADR-0014](docs/adr/0014-runtime-image-root.md).
|
||
- [x] Move the reference mockups from `docs/screens/designs/` into the runtime root (keep `docs/screens/designs/` as a docs-only copy or replace it with the new path).
|
||
- [x] Document one convention for game vs reference vs development images across `assets/textures/`, `assets/images/`, `assets/models/generated/`, `docs/screenshots/`, and `docs/screens/designs/` (in `docs/architecture.md`, ADR-0014).
|
||
- [x] Re-run `godot --headless --path . --import` to regenerate `.import` sidecars after any move.
|
||
- [ ] Confirm `.gitignore` still excludes development-only outputs (concepts, Blender sources, raw AI fabrics) under the new layout.
|
||
|
||
### Documentation path updates
|
||
|
||
- [x] Update `README.md` paths (screen-designs section, confirmed-assets links, the `assets/images/scenes` resize example).
|
||
- [x] Update `docs/architecture.md`, `PLAN.md`, and ADR references: docs/screens/designs/ is now explicitly the reference-only snapshot; runtime art lives in assets/images/ (ADR-0014).
|
||
- [x] Update `tools/screen_designs.py` docstrings and mark the old paths in `DONE.md` as historical.
|
||
|
||
### Code path updates
|
||
|
||
- [x] Point `tools/screen_designs.py generate` at the new design output path and keep `compare`/`judge` reading the right locations.
|
||
- [x] Update GDScript `preload()` paths if game textures move (no runtime material/model textures moved; UI art added under assets/images/).
|
||
- [x] Update capture output directories if captures relocate (none did; QA captures stay in docs/screenshots/).
|
||
|
||
### Load proposed interfaces + scene art from disk
|
||
|
||
- [x] Add a central UI/scene art loader (e.g. `src/game/ui/art.gd`) that loads the mockup-derived images from the new runtime root, with a procedural fallback when a file is missing.
|
||
- [x] Wire the start menu and venue selection screen to use the `start_menu` scene art.
|
||
- [x] Wire the pause overlay to `pause_overlay` scene art (backdrop + opaque panel cover).
|
||
- [x] Wire the settings panel to `settings_panel` art.
|
||
- [x] Wire the shift-review screen to `shift_review` art (backdrop + opaque panel cover).
|
||
- [x] Wire the wand popup to `wand_screening` art.
|
||
- [x] Style the radial menu and finish the remaining HUD chrome against their reference images.
|
||
|
||
### Align in-game visuals
|
||
|
||
- [x] Make the venue selection screen match the `start_menu` mockup (layout, palette, background).
|
||
- [x] Make the HUD match the `targeting_npc` / `escalation_hud` mockups (focus ring, escalation meter, log, hints).
|
||
- [x] Align the pause, settings, and shift-review panels to their mockups.
|
||
- [x] Align the radio and wand panels to their mockups.
|
||
- [x] Align the body-camera timeline to its mockup.
|
||
- [ ] Align scene lighting, fog, and post-processing for `venue_overview` and `late_night_avenue`.
|
||
|
||
### Verify against the mockups
|
||
|
||
- [x] Regenerate the staged captures and run `screen_designs.py compare` (11 good, 0 bad; verified in a clean HEAD worktree).
|
||
- [x] Run `screen_designs.py judge` and clear every `diff` verdict (7 match, 4 review, 0 diff).
|
||
- [x] Add the capture + compare step as a repeatable smoke so drift is caught early (`tools/check_screenshots.sh`).
|
||
|
||
## Fix mouse movement bug
|
||
|
||
- [ ] Investigate why mouse input is not being captured or processed correctly in the game window.
|
||
|
||
## Improve in-game pop-ups
|
||
|
||
- [ ] Improve the visual appearance of in-game pop-ups (layout, button style, palette, icons, and text styling).
|
||
|
||
## Realism follow-ups (v0.6.1 candidates)
|
||
|
||
- [ ] Fixed ground exposure for the entrance view: it is still ~20 % brighter than the concept.
|
||
Either put the entrance in the building's shadow (sun yaw/elevation) or add a slight
|
||
per-view exposure so the shaded sidewalk reads mid-grey.
|
||
- [ ] Make the flashlight read in the dark: the `06-night-flashlight` concept shows a visible
|
||
beam, but a Compatibility spot light only brightens the near wall. A cheap fake cone (an
|
||
additive mesh or a light-shaft quad) would sell it, and the night mockup expects it.
|
||
- [ ] NPC skin/clothing still reads as low-poly next to the concepts (judge `characters` ≈ 0–1).
|
||
The Blender library has the budgets for one more detail pass (fingers, sleeves, faces).
|
||
- [ ] The `screen_designs.py judge` default model (`google/gemini-2.5-flash-lite`) currently
|
||
fails with a provider "API key not valid" 400; the tool retries once. Re-check before the
|
||
next release and either pin a working model or document `--model`.
|
||
- [ ] Add the two venue stages to the committed gallery (they are capture-only today) and give
|
||
the Joke Shop and studio their own geometry so their concept comparisons are geometric,
|
||
not just lighting.
|
||
|
||
## Future ideas (optional, not scheduled)
|
||
|
||
- [ ] Live 3D body-camera replay (the timeline is text-only today).
|
||
- [ ] Additional venues or seasonal events authored from the new `.tres` files.
|
||
- [ ] Real voice/dialogue audio (the crowd bed and radio crackle are procedural).
|
||
- [ ] Swap the primitive prop builder for an image-to-mesh model API behind the same
|
||
`assets/models/generated/<prop>.glb` contract.
|