# TODO Work is grouped by theme. Each item should be small enough to complete and verify on its own; see `AGENTS.md` for the workflow and `MEMORY.md` for the decisions behind these plans. ## Forward+ desktop preset and a volumetric flashlight (v0.7.1) The Compatibility renderer has no volumetrics, so the flashlight is a tight pool of light with no visible shaft. A second desktop build can render it properly without touching the CI/default path. - [ ] Write the preset as an `override.cfg` (Godot reads it beside the binary/project) that sets `rendering/renderer/rendering_method="forward_plus"`, enables `volumetric_fog_*` and SDFGI, and keeps the Compatibility build as the default (`project.godot` unchanged). - [ ] Gate the effect in code: only give the flashlight a volumetric component when the renderer is Forward+ (`RenderingServer.get_rendering_device() != null`), so Web/CI builds are untouched and the existing headless tests keep passing. - [ ] Tune `light_volumetric_fog_energy`/`fog_density` for the LATE phase and re-check the entrance so the shaft does not wash the facade again (the reason the wide cone was cut). - [ ] A/B the two renderers with `capture_realism.gd` (same stages, two `--out` dirs) and record the diff + judge scores in `docs/screens/realism/-forward-plus/`. - [ ] Add the preset to `tools/build_releases.sh` and `docs/RELEASING.md` as an optional "desktop HQ" artifact, and note the runtime requirement (Vulkan driver) in `README.md`. - [ ] Test: a headless run must still boot when Forward+ is unavailable (the preset must degrade to Compatibility instead of failing to start). ## Realism follow-ups (deferred) - [ ] Re-run the screen-design judge for `12-joke-shop` / `13-studio-arrival` when `OPENROUTER_API_KEY` is valid; the 2026-11-01 attempt failed with an invalid-key HTTP 400. - [ ] Capture a hooded/winter NPC close-up once a scenario spawns types 5-7 (the explicit `--portrait-type` override is already in `capture_realism.gd`). - [ ] Human-authored tree/hedge silhouettes: the whole scene now reads well except the foliage, which is still flat-shaded clumps (`_shrub()`/`_tree()` in `tools/blender_assets.py`). Only worth doing if a higher-poly organic builder is added to the library. - [ ] Camera height: the concept frames are shot at ~1.55 m with a slightly wider lens; the game camera sits at 1.7 m. Decide whether the first-person height should match the art direction or stay at the current gameplay value. ## 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.