scenes/maps/playground.tscn and crag.tscn are generated by the map scripts' Rebuild (inspector
button, or godot-mono --headless --path . tools/rebuild_maps.tscn) and loaded as saved by the game,
so hand edits stick. The crag route is saved as Marker3D nodes and crag_spike checks the saved
scene. Layout verified identical to the code-built one (tools/map_dump.tscn).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Look-down flip: body facing from BodyMath.HeadFacing (visor + crown), robust past vertical;
stick direction uses it too; crouch lean pitch measured against the facing.
- Landing: falling legs touch down only within their reach, so leg strength stops the body
below its stance (dip scales with impact, big falls fold the legs). Rise eased so gravity
can stop it at the stance; legs untuck speed-limited. Fixed the vertical play-space
correction leaking into ground control's feed-forward (a bounce).
- Jump on right A: countermovement dip + leg push over the stroke (crouch = higher).
- Stick crouch on right stick Y (RagdollDriver.StickCrouch: virtual floor offset).
- Menu summon on left X only.
- XR origin drawn with the bodies' physics interpolation (camera/body desync).
- RagdollSpike: landing/fall/jump/look-down/stick-crouch phases, `-- only=` filter.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- one 3D view-follow rule (2 cm deadzone, hard 4 cm limit), no separate
floor-follow; play-space-relative targets mean no feedback loop
- head guide drives the character's eye to the HMD while on your feet
- slow floor re-centering; Braced ignores the floor; anatomical head box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- legs brake landings at 4.5 g; vertical support is a rate-limited servo
(no launch when stepping onto a mantled ledge)
- ground control pushes back on movable ground (seesaw tips under the player)
- playground hinges use absolute paths (joint paths resolve from the joint)
- big props grabbable via surface query; Reset props keeps playground pieces
- spike: landing, seesaw, playground joints/grab, person-like wall climb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- view follows the body (deadzone, smoothed, hard 8 cm limit); no drift over
six held poses; hanging keeps the view on the character's head
- hold-back measured at the hips, capped leg push while held, stiffer balance
- sticky legs tuck with free-space check (fixes the mantle shove loop)
- strength asymmetric by direction; structural guide strength push-only
- limb/torso friction set before AddChild (Box3D reads it only at creation)
- new phases: pose hold, hang, human-motion mantle, hand-over-hand wall climb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Spike now runs real input (90 Hz sample-and-hold tracking + jitter under 144 Hz
physics), which reproduced the playtest. Root causes fixed:
- PoseFilter/RagdollDriver: timestamped extrapolation of tracking, one tick
pipeline shared by PlayerRig and the spike
- low-pass all feed-forwards (ground control amplified jitter by body mass)
- arm muscles back to local targets (physical-frame aim fed chest rotation back)
- structural hand strength only when braced or holding
- no free-path view chasing while grounded (8 m crouch slide); stick hold-back
- explicit inertia for the Legs body (shape-less tuck tumbled the pelvis)
- world grab: Box3D shape queries return a null collider, use collider_id
- new crouch-hold phases; world-grab detection asserted
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>