Once an NPC reaches its intent waypoint it now does something instead of standing in an idle T-pose: - sit: the rig settles 0.34 m into a seat and the legs swing forward on the steps - photo/film: influencers and tourists raise their camera prop briefly (a sine pulse, so it reads as taking a shot rather than a permanently raised arm) - perform: performers sway the sign board they carry Pose selection lives in NpcAvatar.theater_pose() (intent + arrived); the math is in pure helpers (crouch_for_pose, prop_lift_for_pose, sway_for_pose) so it is headless-testable. Prop/leg nodes are captured at build time and animated from their rest offsets. Performers also get a hand-held board and post. Tests/docs - Headless suite 120 -> 127 (test_npc_theater.gd). - Verified visually with a staged sit/photo/perform lineup in front of the entrance. - README, TODO section moved to DONE, MEMORY. Version 0.2.7.
2.7 KiB
2.7 KiB
TODO
Godot 4.3 prototype. Release v0.2.7 is tagged. Headless suite 127/127, plus the session, PLAN-verb, crowd, emergency, timeline, and windowed focus/radial smokes.
Host REQUIRE_SIGNIN_VIEW stays deferred.
Audio
AudioFeedback is sine beeps. DONE called that "crowd ambience"; it is not.
- Loop a low crowd bed that rises with
CrowdSystem.mood. - Radio open/close crackle on the existing radio panel, still headless-safe (no-op without an audio server).
Accessibility
- Escalation colors that still read in grayscale (shape or label, not hue alone).
- HUD font scale in settings.
Scenario content still missing vs PLAN lists
- Joke Shop: guest on the reservation list without ID; borrowed/mismatched ID; guest refuses wand screening; late arrival during a performance.
- Studio: filming-boundary repeat (influencer ignores a posted line); celebrity-arrival
crowd spike (more rubberneckers, not only one
arrivespawn). - Building: "activate body camera" and "request reason" once those verbs exist, used in at least one authored event.
Distribution follow-up (host config, deferred)
Verified via API+host credentials (2026-10-31):
- Repo is public (
private:false) and account has admin rights. - Release
v0.2.1now carries all five artifacts (portable binaries + NSIS installer + AppImage). - Remaining host setting: instance-wide
[service] REQUIRE_SIGNIN_VIEW=truemakes anonymous browsing/downloads redirect to login. Host admin:REQUIRE_SIGNIN_VIEW = falseunder[service]inapp.ini, restart Gitea. Alternative: mirror downloads.
Open Polish
- Keep
%placeholders stable inStrings.fmtwhen adding keys (positional formatting).
Screen design references (QA tooling)
tools/screen_designs.py generatewrites one reference design per screen (from thedocs/descriptions) todocs/screens/designs/, with an offline--draftwireframe mode and an OpenRouter--aimockup mode.tools/screen_designs.py comparechecksdocs/screenshots/*.pngagainst the designs (aspect ratio, size, blank-frame, and layout/palette/detail drift).- Vision-model judge for semantic screenshot comparison. Pixel and perceptual metrics cannot decide whether a frame's composition is correct; a follow-up should send the capture + reference design to a vision model and ask whether they depict the same screen.
Tooling (when an editor workflow exists)
- IDE/editor-based GUT integration. Until then the custom headless runner stays.
- Optional later: author venues as
.tresresources instead ofScenarioFactoryfunctions.