Pass explicit grounded/airborne contact bytes from MovementResult into MoveToState and AutonomousPosition, and add ACDREAM_DUMP_MOVE_TRUTH logging for outbound movement plus player UpdatePosition echoes. Co-authored-by: OpenAI Codex <codex@openai.com>
2.1 KiB
2.1 KiB
Movement & Collision Conformance Crib
Phase
Active phase: L.2 - Movement & Collision Conformance.
Plan: docs/plans/2026-04-29-movement-collision-conformance.md.
Roadmap: docs/plans/2026-04-11-roadmap.md.
One-Sentence Framing
B.3 shipped the MVP resolver foundation; L.2 is the holistic conformance program for physics, collision, buildings, edge/wall sliding, cell ownership, movement packets, and server correction.
Active Movement Spine
InputDispatcher / PlayerMovementController
-> MotionInterpreter + local body prediction
-> PhysicsEngine.ResolveWithTransition
-> TransitionTypes + BSPQuery + ShadowObjectRegistry
-> ResolveResult contact/cell state
-> MoveToState / AutonomousPosition outbound messages
-> WorldSession server echo or correction diagnostics
Lane Ownership
- L.2a: truth probes, diagnostics, fixture capture.
- L.2b: movement wire/contact truth, cell id on packets, correction handling.
- L.2c: transition parity, edge-slide, cliff-slide, precipice-slide,
NegPolyHit. - L.2d:
CSphere/CCylSphere, live entity shapes, building object identity. - L.2e: outdoor seams,
CELLARRAY,find_cell_list, adjacent-cell checks,cell_bsp, building entry/exit boundaries. - L.2f: real-DAT fixtures and live retail-observer conformance.
Non-Negotiables
- Grep named retail before changing AC-specific physics or movement behavior.
- Do not treat ACE accepting a position as proof of retail collision parity.
- Do not reintroduce rewrite-from-zero collision guidance. Continue the partial retail port by L.2 lanes.
- G.3 dungeon/portal delivery waits on L.2e for trustworthy cell/building ownership.
- L.1 animation work must coordinate with L.2 when root motion or observer movement changes the predicted body path.
Shipped Slices
- 2026-04-29: L.2a/L.2b first diagnostic slice.
ACDREAM_DUMP_MOVE_TRUTH=1logsmove-truth OUTfor outboundMoveToState/AutonomousPositionandmove-truth ECHOfor playerUpdatePositionechoes, including local/server delta.GameWindownow passes explicit grounded/airborne contact bytes fromMovementResult.IsOnGroundto both movement packet builders.