acdream/memory/project_movement_collision_conformance.md
Erik 3be0c8b7c7 fix(physics): #30 #34 L.2a movement truth diagnostics
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>
2026-04-29 21:52:53 +02:00

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=1 logs move-truth OUT for outbound MoveToState / AutonomousPosition and move-truth ECHO for player UpdatePosition echoes, including local/server delta. GameWindow now passes explicit grounded/airborne contact bytes from MovementResult.IsOnGround to both movement packet builders.