Character and movement pass
NPC characters - Articulated rig (hips/knees, shoulders/elbows/hands) replaces rigid capsules; the walk cycle bends knees and elbows and flees with a longer stride. - Layered outfits (jacket/vest/coat/dress), extended accessories and hand items (bag, umbrella, phone, camera, clipboard, cup), face details and five hair silhouettes, all deterministic per profile seed. - Idle behaviour layers (phone, clipboard, crossed arms, look-around), breathing and weight shift; escalation raises hands or points, and noticed NPCs turn toward the guard. - Reaction symbols above the head (!!, ?!, !, ?), door-queue offsets assigned by GameManager, three LOD tiers with hysteresis and a billboard impostor. - smoke_npc_budget.gd: 16 avatars = 534 meshes, ~6.9 ms average (50 ms budget). Player movement - Separate accel/decel, step-up assist for kerbs and the entrance steps, and a forward-axis fix: W was inverted (get_axis(forward, back) is negative). - Head bob, landing dip and precision-walk FOV, gated by persisted head-bob and invert-Y settings; precision chip and tick; surface-aware footsteps and a landing cue forwarded to AudioFeedback. - Gamepad support (sticks, deadzone, face buttons, bumpers), a control legend that follows the active device, and named actions for the remaining keys. - Key/button remapping in Settings, persisted as input_bindings and applied by InputBindings (mouse and gamepad axes are never removed). - smoke_movement.gd (windowed): climbs the steps, checks precision speed, chip, footsteps and landing; new 11-precision-walk capture and catalogue entry. Verification: headless 208/208, Python tooling 56/56, all 11 smokes pass, compare 11 good / 0 bad, movement judge match. Version 0.5.0. Only optional Future ideas remain in TODO.
This commit is contained in:
1 parent
2a4e0d1998
commit
a27e8cb74c
35 files changed
+1608
-185
No files matched your search
@@ -1,77 +1,11 @@
|
||||
# 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.
|
||||
Godot 4.3 prototype. Latest release **v0.5.0** (NPC characters and player movement). Headless
|
||||
suite **208/208** plus **56** Python tooling tests; the session, PLAN-verb, crowd, emergency,
|
||||
timeline, audio, scenario-content, props, NPC-budget, movement, 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.
|
||||
The scheduled presentation pass is complete (see `DONE.md`). Only optional future ideas remain.
|
||||
|
||||
## Future ideas (optional, not scheduled)
|
||||
|
||||
|
||||
Reference in new issue
Block a user