# 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/.glb` contract.