TODO cleanup per AGENTS.md; rebuild 0.2.0 binaries with the detailed-graphics pass baked in
- TODO.md: drop fully-done sections (CI cache mitigation, Detailed Graphics completed items, CI packaging follow-up — all recorded in DONE.md); keep the PRIORITY release task (token-blocked), backlog, polish, and perf-only items - Rebuild build/ artifacts so the shipped graphics include textures/rigs/HUD - Linux binary smoke-tested (0 script errors); suite 57/57
This commit is contained in:
1 parent
031503e161
commit
da5ef32ce8
1 file changed
+19
-58
@@ -1,77 +1,38 @@
|
|||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
## 🔧 CI — cache timeout mitigation (from .gitea/logs/ review)
|
|
||||||
|
|
||||||
`actions/cache@v4` times out against GitHub's cache service on this runner
|
|
||||||
(`/twirp/github.actions.results.api.v1.CacheService/…` — the Gitea host has no
|
|
||||||
local actions-cache configured). Restore/save retry for ~2 min per run. The
|
|
||||||
checks job still passes; this is noise + risk of flaky timeouts.
|
|
||||||
|
|
||||||
- [x] Remove the `actions/cache@v4` step from `checks` in `.gitea/workflows/build.yml`
|
|
||||||
(Godot import takes ~4s; caching .godot is not worth the timeout risk).
|
|
||||||
- [x] Add `GODOT_SILENCE_ROOT_WARNING=1` to godot steps to quiet container-as-root noise.
|
|
||||||
- [x] Push and confirm the next `.gitea/logs/` run has no `CacheService` timeouts (run 1090:
|
|
||||||
0 cache lines — previously ~12; 54/54 tests, job succeeded).
|
|
||||||
- [x] Optional (host admin): document in `docs/RELEASING.md` that `actions/cache` needs a
|
|
||||||
Gitea `[cache.actions]` + cache server before it can be reintroduced.
|
|
||||||
|
|
||||||
## 🔴 PRIORITY — Ship downloadable builds (so the README Downloads links work)
|
## 🔴 PRIORITY — Ship downloadable builds (so the README Downloads links work)
|
||||||
|
|
||||||
Goal: users hitting the README **Downloads** section can actually download a playable version from
|
Goal: users hitting the README **Downloads** section can download a playable version from
|
||||||
`https://git.allucanget.biz/zwitschi/security-game/releases`.
|
`https://git.allucanget.biz/zwitschi/security-game/releases`.
|
||||||
|
|
||||||
- [x] Install Godot 4.3 export templates locally (see `docs/RELEASING.md` step 1).
|
- [x] Install Godot 4.3 export templates locally.
|
||||||
- [x] Run `./tools/build_releases.sh` and confirm the three artifacts appear in `build/`.
|
- [x] `./tools/build_releases.sh` produces Linux/Windows/macOS artifacts (built for 0.2.0).
|
||||||
- [x] Smoke-test the Linux binary launches (`./build/step-line-linux-0.1.0.x86_64 --headless --quit-after 120` → 0 script errors).
|
- [x] Linux binary smoke-tested (headless, 0 script errors).
|
||||||
- [ ] Create a Gitea release `v0.1.0` (tag matching `config/version` in `project.godot`) — **needs `GITEA_TOKEN`**: `GITEA_TOKEN=... ./tools/publish_release.sh 0.1.0`.
|
- [ ] Publish the release — **blocked on `GITEA_TOKEN`**: once the token is available run
|
||||||
- [ ] Verify the README Downloads links resolve: visit the release page and download one artifact.
|
`GITEA_TOKEN=... ./tools/publish_release.sh 0.2.0`, or (if the repo secret is already set
|
||||||
- [x] (Local workflow) `tools/publish_release.sh` exists so future releases need only a `GITEA_TOKEN`.
|
on the host) push the `v0.2.0` tag and let CI publish via `.gitea/workflows/build.yml`.
|
||||||
|
- [ ] Confirm the README Downloads links resolve: check
|
||||||
### Follow-ups once the first release is live
|
`https://git.allucanget.biz/zwitschi/security-game/releases` and download one artifact.
|
||||||
|
|
||||||
- [x] CI packaging: Gitea Actions workflow (`.gitea/workflows/build.yml`) builds and uploads artifacts on tags and dispatch.
|
|
||||||
|
|
||||||
## Future Systems (design-level backlog)
|
## Future Systems (design-level backlog)
|
||||||
|
|
||||||
- [ ] Body-camera replay timeline in the shift review.
|
- [ ] Body-camera replay timeline in the shift review.
|
||||||
- [ ] Long (10-15 minute) shift lengths and phase-based lighting (darkened evening / late phases).
|
- [ ] Long (10-15 minute) shift lengths (phase lighting already implemented).
|
||||||
- [ ] Venue selection screen with a proper startup menu (keyboard cycling with `V` is implemented; a menu is the next iteration).
|
- [ ] Venue selection startup menu (keyboard cycling with `V` is implemented).
|
||||||
- [ ] IDE/editor-based GUT integration when a Godot editor workflow is introduced.
|
- [ ] IDE/editor-based GUT integration when a Godot editor workflow is introduced.
|
||||||
- [ ] Reduce RefCounted reference cycles (NPCController <-> FSM) noted in `MEMORY.md`.
|
- [ ] Reduce RefCounted reference cycles (NPCController <-> FSM) noted in `MEMORY.md`.
|
||||||
|
|
||||||
## Open Polish
|
## Open Polish
|
||||||
|
|
||||||
- [ ] Add a body/wand cooldown feel: wand screening currently has no reuse penalty; consider a short per-guest scan animation.
|
- [ ] Add a body/wand cooldown feel: wand screening currently has no reuse penalty; consider a
|
||||||
- [ ] Add an escape-to-circuit handling note: `signals` in `Strings.fmt` are positional; keep `%` placeholders stable when adding keys.
|
short per-guest scan animation.
|
||||||
|
- [ ] Keep `%` placeholders stable in `Strings.fmt` when adding keys (positional formatting).
|
||||||
|
|
||||||
## Detailed Graphics
|
## Detailed Graphics — remaining performance items
|
||||||
|
|
||||||
The prototype is entirely procedural `BoxMesh` with flat `StandardMaterial3D` colors (see `src/game/world_builder.gd` and `src/game/npc_avatar.gd`). The items below upgrade it toward a finished look. **When a task needs a texture, sprite, decal, or reference image, use the integrated image-generation function to produce it** (e.g. seamless building facade, sidewalk concrete, asphalt, awning sign, wristband/ID inspection cards, HUD icons). Generated images go under `assets/` and are imported as Godot textures; keep them small (≤1024px) and power-of-two where possible.
|
The visual pass is done (textures, rigs, HUD feedback — see `DONE.md`). Remaining work is
|
||||||
|
performance hardening only.
|
||||||
|
|
||||||
### Environment
|
- [ ] Profile the crowd: ensure textured materials and props hold target frame rate around a
|
||||||
|
busy entrance.
|
||||||
- [x] Replace flat facade boxes with textured materials: brick/concrete facade, glass door, awning with a readable sign (`tools/generate_textures.py` → `assets/textures/`).
|
|
||||||
- [x] Add a sidewalk concrete texture and street asphalt texture with center dashes (seamless PNGs).
|
|
||||||
- [x] Add a sky: `ProceduralSkyMaterial` + generated skyline backdrop planes + soft sun shadows (4-split parallel).
|
|
||||||
- [x] Add props for depth: street lamps (emissive bulbs + omni lights), planters, low-poly trees (bollards/trash can still optional).
|
|
||||||
- [x] Add a night/evening lighting pass: dim ambient, warm street-lamp point lights, marquee glow, flashlight cone (`G`).
|
|
||||||
|
|
||||||
### NPCs
|
|
||||||
|
|
||||||
- [x] Replace capsule bodies with a simple humanoid rig (torso/head/limbs) keeping the archetype color coding as the base.
|
|
||||||
- [x] Add per-archetype visual identity: camera (influencer), delivery box, performer hat, protest sign, tourist backpack.
|
|
||||||
- [x] Add a simple procedural walk animation (body bob + lean) so NPCs don't glide.
|
|
||||||
- [x] Add a facing/attention cue: NPC head turns toward the guard once `perceive_guard` raises awareness.
|
|
||||||
|
|
||||||
### UI and feedback
|
|
||||||
|
|
||||||
- [x] Replace text-only inspection with visual artifact cards (ID/wristband/ticket/credential/guest-list card art + tooltips).
|
|
||||||
- [x] Add HUD icons for wand, flashlight, and door-lock states (small white PNGs); tone-picker icon was removed with the tone system.
|
|
||||||
- [x] Add a screen-space vignette tinted per escalation level.
|
|
||||||
- [x] Add a body-camera frame overlay: corner brackets, REC indicator, and a running shift clock.
|
|
||||||
|
|
||||||
### Performance and pipeline
|
|
||||||
|
|
||||||
- [x] Set up an `assets/` import convention (≤1024px, power-of-two) and document it in `README.md`; assets generated by `tools/generate_textures.py` (deterministic, PIL).
|
|
||||||
- [ ] Profile the crowd: ensure textured materials and props don't hurt the target frame rate around a busy entrance.
|
|
||||||
- [ ] Add LOD or culling for distant NPCs/props if the crowd grows.
|
- [ ] Add LOD or culling for distant NPCs/props if the crowd grows.
|
||||||
Reference in new issue
Block a user