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
@@ -752,3 +752,65 @@ Completed 2026-11-01. Python tooling **56/56**, headless **188/188**, prop galle
|
||||
triangle/vertex budget in the pipeline docstring.
|
||||
- [x] README lists the gallery capture command and image; the pipeline docstring and audit docs
|
||||
describe the budget checks.
|
||||
|
||||
## Better NPC Characters
|
||||
|
||||
Completed 2026-11-01 (v0.5.0). Headless suite **208/208**; NPC budget smoke reports 16 avatars,
|
||||
534 meshes, ~6.9 ms average frame time; PLAN-verb, crowd, emergency, and timeline smokes pass.
|
||||
|
||||
- [x] Replaced the rigid capsules with an articulated rig: hip -> thigh -> knee -> shin -> shoe and
|
||||
shoulder -> upper arm -> elbow -> forearm -> hand, with knee/elbow pivots driven by the walk
|
||||
cycle and the seated pose.
|
||||
- [x] Layered clothing (`layer_for`): jacket, hi-vis vest, coat, and dress over the base outfit,
|
||||
with role-appropriate defaults and deterministic colourways.
|
||||
- [x] Extended accessories and hand items: bag, umbrella, phone, camera, clipboard, cup, plus the
|
||||
existing cap/hood/backpack/sunglasses/lanyard. Hand items attach to the right hand socket.
|
||||
- [x] Face and hair variety: ears, brows, mouth, five hair silhouettes (long, bun, beard, bald,
|
||||
short), height range, and deterministic per-seed appearance.
|
||||
- [x] Added idle behaviour layers (`idle_style_for`): breathing, weight shift, look-around, phone,
|
||||
clipboard, and crossed arms; escalation gestures raise both hands (L3+) or point (L2), and
|
||||
noticed NPCs turn their head toward the guard.
|
||||
- [x] Walk cycle now swings hips/shoulders, bends knees and elbows, and uses a faster, longer
|
||||
stride when fleeing.
|
||||
- [x] Door queue staging: GameManager sorts waiting guests and assigns spaced `queue_slot_for`
|
||||
offsets, so one person is at the door and the rest wait behind without overlapping.
|
||||
- [x] Reaction readability: a billboarded symbol above the head (`!!` panic, `?!` watching, `!`
|
||||
blocked, `?` warned) updates from the reaction/escalation state.
|
||||
- [x] Three LOD tiers with hysteresis: full detail, simplified (props/shadows off), and a
|
||||
billboard impostor; `apply_lod` is tested for the swap.
|
||||
- [x] Re-measured the live-NPC budget with the full rig (16 avatars, 534 meshes) and added
|
||||
`smoke_npc_budget.gd`, which fails above the documented 50 ms frame budget.
|
||||
- [x] Tests: deterministic layers/hand items/hair, role layers, queue slot spacing, LOD
|
||||
thresholds/hysteresis, reaction labels, articulated pivots, mesh budget, and the
|
||||
walk-to-idle animation transition.
|
||||
|
||||
## Better Player Movement
|
||||
|
||||
Completed 2026-11-01 (v0.5.0). Windowed `smoke_movement.gd` passes; headless tests cover surface
|
||||
lookup, constants, gamepad bindings, and settings persistence.
|
||||
|
||||
- [x] Split acceleration and braking (`accel` 22, `decel` 30 m/s²) so stopping is snappier than
|
||||
starting, and fixed the inverted forward axis found while staging the movement smoke: W now
|
||||
walks toward the camera's forward vector instead of moonwalking.
|
||||
- [x] Step-up assist (0.32 m) climbs kerbs and the entrance steps, with wall sliding left to
|
||||
`move_and_slide`; the smoke walks the guard from the sidewalk onto the landing.
|
||||
- [x] Camera feel: speed-scaled head bob, a landing dip, and a precision-walk FOV change, all
|
||||
gated by the new "Head bob and camera motion" setting; a motion-sickness toggle persists.
|
||||
- [x] Precision walk shows a HUD chip and plays a short tick when it engages, in addition to the
|
||||
slower speed.
|
||||
- [x] Surface-aware footsteps (concrete/asphalt/stone) synced to stride distance, plus a landing
|
||||
cue; both have observable counters for tests.
|
||||
- [x] Gamepad support: left-stick movement, right-stick look with deadzone, A/B/X/Y face buttons,
|
||||
LB slow, RB wand; bindings are added at runtime and the control legend swaps to gamepad
|
||||
hints when a pad event is seen.
|
||||
- [x] Moved the remaining hard-coded gameplay keys (Q/F/G/L/B/V, Tab cycle) onto named InputMap
|
||||
actions, and the panel allow/deny keys onto movement actions.
|
||||
- [x] Key/button remapping in the settings panel: click a binding, press a key or pad button,
|
||||
persisted as `input_bindings` through `Save`; `InputBindings.apply` rewrites only key/button
|
||||
events and leaves mouse and gamepad axes alone.
|
||||
- [x] Added invert-Y and head-bob settings (with save/load round-trip tests) alongside the
|
||||
existing look sensitivity.
|
||||
- [x] Tests: surface lookup, step/stride/precision constants, gamepad binding presence and
|
||||
deadzone, remap descriptor/apply/labels, and settings persistence for camera and bindings.
|
||||
- [x] Added `smoke_movement.gd` (windowed) and `11-precision-walk.png` with a movement catalogue
|
||||
entry, AI mockup, and compare coverage.
|
||||
Reference in new issue
Block a user