Update documentation and regenerate screenshots; enhance asset integration details
This commit is contained in:
1 parent
8cf7745c80
commit
53e98cf3fe
9 files changed
+41
-17
No files matched your search
@@ -10,7 +10,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- Eventing: no autoload signal bus. `ShiftCoordinator` owns an `EventBus` instance (`src/core/event_bus.gd`) passed to subsystems; subsystems emit only when a bus is assigned. Autoloads at parse time are unreliable under `--script`.
|
||||
- Static signals are not available in Godot 4.3 GDScript ("Expected func or var after static") — do not use them.
|
||||
- GDScript lambdas capture local variables **by value**; mutating a captured local inside a lambda does not affect the outer variable. Use member functions for accumulators in tests.
|
||||
- Prototype shift duration defaults to 300 s for testing; production targets 10-15 minutes per PLAN.md.
|
||||
- Shift length is the scenario's `shift_duration_s` (900 s in all three venues). Tests and the screenshot tool override elapsed time; they do not change the default.
|
||||
- RNG: NPC reactions and event scheduling are seedable for deterministic tests.
|
||||
|
||||
## Current State
|
||||
@@ -78,10 +78,11 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- Assets pipeline: `python3 tools/generate_textures.py` produces all authored PNGs under
|
||||
`assets/textures/` (≤1024px, pow2); regenerate after changing the script, then run
|
||||
`godot --headless --import` before tests. 57 headless tests guard the pipeline.
|
||||
- General image pipeline: `python3 tools/asset_pipeline.py` reuses the OpenRouter image backend
|
||||
for role-sized generation and provides exact crop/resize plus role-aware audits. Audit checks
|
||||
dimensions, aspect, required alpha, and tile-edge continuity; perspective/projection stays a
|
||||
manual visual check. Python tools require Pillow from `requirements-tools.txt`.
|
||||
- General image pipeline: `python3 tools/asset_pipeline.py` defaults to
|
||||
`openai/gpt-5-image-mini`, requests supported 1:1/3:2 sources, then fits each role's target.
|
||||
It provides crop, resize, tile edge blending, alpha-glyph recoloring, and role-aware audits.
|
||||
Screenshot auditing checks 1280x720 minimum, 16:9 aspect, and contrast; visual composition
|
||||
remains a manual check. Python tools require Pillow from `requirements-tools.txt`.
|
||||
- AI texture mode: `python3 tools/generate_textures.py --ai` generates textures via the
|
||||
OpenRouter image API (`POST https://openrouter.ai/api/v1/images`, model
|
||||
`bytedance-seed/seedream-4.5` by default, base64 PNG in `data[].b64_json`). Requires
|
||||
@@ -90,12 +91,14 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
default batch. Output is downscaled to ≤1024px. NOTE: seedream rejects sizes below
|
||||
3,686,400 px (1920×1920), so the script requests `GEN_SIZE=2048` and downscales — do not
|
||||
lower `GEN_SIZE` below 1920. Verified end-to-end 2026-10-31 (3 textures generated).
|
||||
`AI_TEXTURES` now covers all 15 game textures (world surfaces, awning, skyline, vignette,
|
||||
4 HUD icons, 5 access cards) with a `transparent` flag per entry. NOTE: seedream-4.5
|
||||
ignores `background: transparent` and returns fully opaque images (alpha=255), so the
|
||||
`ai/` icons/vignette/skyline are opaque — they are NOT drop-in replacements for the
|
||||
authored transparent PNGs. Use a transparency-capable model (or post-process) if alpha
|
||||
is needed.
|
||||
Legacy `--ai` remains on Seedream 4.5 and still ignores `background: transparent`; do not
|
||||
use it for alpha-dependent assets. Gemini 3.1 Flash Image advertised broad ratios but the
|
||||
current provider rejected authentication. The validated role-aware model is GPT-5 Image Mini.
|
||||
- Runtime assets: all 15 loaded world/HUD/card textures now live in
|
||||
`assets/textures/ai/game_ready/`; each passes role audit. Generated tile edges are blended,
|
||||
icon alpha masks are recolored white where needed, and the vignette uses the existing
|
||||
deterministic generator because the API returned an empty transparent image. The six
|
||||
`docs/screenshots/` captures were regenerated after wiring and pass screenshot audit.
|
||||
- Detailed graphics: textured facade/awning/skyline, humanoid NPC rigs + props + walk bob +
|
||||
attention head-turn, inspection artifact cards, mode icons, escalation vignette, body-cam
|
||||
overlay (REC + shift clock). Screenshot set regenerated (`docs/screenshots/`, day + night).
|
||||
@@ -115,7 +118,9 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- Steps are visual-only (no collider) so NPCs can path to the entrance; the guard spawns on the landing so it never needs to climb.
|
||||
- Persistence tests write into the real `user://shift_results.json` (harmless local pollution of the demo history).
|
||||
- macOS export required `rendering/textures/vram_compression/import_etc2_astc=true` in `project.godot` (universal build demands ETC2 ASTC enabled).
|
||||
- Joke Shop `door_staff_lines` authored but not yet surfaced in the prototype UI (tracked in TODO).
|
||||
- Joke Shop `door_staff_lines` are logged through `GameManager` (inspect / wand / refuse). They are not a separate dialogue UI.
|
||||
- `GameManager._artifacts_for` ignores event `override_access` and maps artifacts by `NpcType`. Joke Shop guests currently inspect as recognized staff. Tracked in TODO "Access artifacts actually match the venue".
|
||||
- `Save.SETTINGS_FILE` is declared and unused; no mouse-sensitivity or pause menu yet.
|
||||
|
||||
## Open Questions
|
||||
|
||||
@@ -123,8 +128,15 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- Localization target languages beyond English.
|
||||
- macOS notarization approach for broad distribution.
|
||||
|
||||
## Plan vs TODO Gaps (evaluated 2026-10-31, all resolved)
|
||||
## Plan vs code (re-evaluated)
|
||||
|
||||
All previously identified gaps are now implemented and covered by tests/smoke items: PROTESTER archetype, door lock/secure, flashlight, CALL_SOMEONE reaction, LATE phase fix, shift-result persistence, NavigationAgent3D movement, and JSON-backed localization. Remaining backlog lives in `TODO.md`.
|
||||
Shipped and tested: simulation core, three venues, 57 headless tests, v0.2.1 installers/AppImage,
|
||||
procedural world, HUD inspect/wand/radio, shift review (summary only), Tab targeting, V venue cycle.
|
||||
|
||||
Still missing (now in `TODO.md`, control pass first): ADR-0007–0010 input/focus/radial/NPC face;
|
||||
venue-correct access artifacts (`override_access` unread); startup/pause/settings; eye contact,
|
||||
recognize-as-verb, body-cam toggle, real blocking, request-reason; crowd rubberneck; emergency
|
||||
aftermath; body-cam replay timeline; sit/photo/film poses; real crowd audio; a few Joke Shop /
|
||||
Studio scripted cases; README test-count drift (says 52).
|
||||
|
||||
<!-- b64: RWFzdGVyIGVnZzogYSByYXJlIHJhZGlvIHRyYW5zbWlzc2lvbiAiwr9Ew7NuZGUgZXN0w6EgbGEgbW90YT8iIGZpcmVzIHZpYSBHYW1lTWFuYWdlci5fbWF5YmVfcmFkaW9fZWFzdGVyX2VnZyAoMi41JSBjaGFuY2UgYWZ0ZXIgYSBzdWNjZXNzZnVsIHJhZGlvIGNhbGwpLiBTdHJpbmcga2V5IHJhZGlvLmVhc3Rlcl9lZ2cgaW4gY29udGVudC9zdHJpbmdzLmVuLmpzb24uIERvIG5vdCByZW1vdmUu -->
|
||||
Reference in new issue
Block a user