# TODO Godot 4.3 prototype. Latest release **v0.4.0** (prop collision, placement, variants). Headless suite **187/187** plus **53** Python tooling tests; the session, PLAN-verb, crowd, emergency, timeline, audio, scenario-content, props, and windowed focus/radial smokes pass. Anonymous downloads are enabled on the host. The sections below are the rest of the presentation pass: NPC characters and player movement. Each task is meant to be a small, reviewable slice with its own verification. ## Better NPC Characters ### Appearance and rig - [ ] Replace the rigid capsule limbs with an articulated rig: shoulder, elbow, hip, and knee joints, so a walk cycle can bend knees and swing arms instead of rotating whole capsules. - [ ] Add layered clothing: jacket over shirt, hi-vis vest, security uniform, dress/skirt, and coat, with deterministic per-profile colourways and material roles. - [ ] Extend the accessory catalogue: bag, umbrella, phone, camera, clipboard, headphones, and a coffee cup; attach them to the correct hand/back socket. - [ ] Add face and hair variety: several hair silhouettes, beards, hats, eye/brow shapes, age and height ranges, and a small set of face textures or decal planes so heads are not identical. - [ ] Keep appearance deterministic per `(profile, seed)` and add a test that the same seed produces the same outfit while different types stay recognisable. ### Animation and staging - [ ] Add an idle layer: breathing, weight shift, occasional look-around, phone check, and arms-crossed, blended with the current walk and reaction states. - [ ] Add conversation gestures: facing the guard when addressed, talking hand movement, nodding, backing away, and pointing, driven by the existing reaction/escalation events. - [ ] Improve the walk cycle: stride length tied to speed, foot planting without sliding, and a distinct hurry/flee gait that matches `FLEE_SPEED`. - [ ] Stage a door queue: waiting offsets, one-at-a-time approach, no overlapping capsules, and a step-aside after the admission decision. - [ ] Make reactions readable at a distance with body language plus a short icon/label (rubberneck, panic, calm, angry) so crowd state is legible without the debug panel. ### Performance and budgets - [ ] Add three LOD tiers (full rig, simplified mesh, billboard) with distance hysteresis, and disable shadows for far tiers; keep the switch deterministic and testable. - [ ] Re-measure the live-NPC budget with the full rig at `MAX_LIVE_NPCS`, and add a perf smoke that fails when frame time crosses the documented budget. - [ ] Add tests for animation state transitions (idle → walk → react) and for queue spacing at the door. ## Better Player Movement ### Feel and handling - [ ] Split acceleration and deceleration in `guard_controller.gd` (faster stop than start, no ice-skating), then tune `move_speed` and `accel` against a windowed feel pass. - [ ] Add step-up assist for kerbs and the entrance steps (about 0.3 m) and keep wall sliding smooth so the guard does not stick on doorframes, railings, or prop colliders. - [ ] Add subtle head bob tied to stride and speed, a small FOV change in precision walk, and a landing dip; expose a motion-sickness toggle in settings with persistence. - [ ] Give precision walk (Shift) visible feedback: a HUD state chip and an audio tick when it engages, in addition to the slower speed. - [ ] Add surface-aware footsteps (concrete, asphalt, stone steps) with stride-synced timing and a distinct landing sound, reusing the procedural audio helpers. ### Input and accessibility - [ ] Add gamepad support: move/look actions, radial and action bindings, deadzone and look sensitivity, with prompts that follow the active device. - [ ] Move the remaining hard-coded keys into `InputMap` actions and persist any remaps through the settings panel (keyboard and gamepad). - [ ] Add a mouse-sensitivity and invert-Y setting if missing, and test the values survive a settings save/load round trip. - [ ] Add movement tests: acceleration ramp, step-up height limit, precision-walk speed, wall slide, and gamepad deadzone. - [ ] Run one windowed movement smoke per change above (walk the full block, climb the steps, strafe along the wall) and capture a short screenshot set for the compare tool. ## 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.