Files
open-wc/targets/02-player-decomposition.md
T
sindoring 1bf5b526be qar(M02): close player decomposition milestone
Work-Package: M02-QAR-INTEGRATOR-CLOSEOUT-001
Agent: sindo-main-codex
Tests: all M02 contracts, renderer dry-run, documentation and coordination gates passed
Fidelity: direct binding evidence and reference-only timing/routing are separated; remaining locomotion/camera gaps stay explicit
2026-07-15 23:35:00 +04:00

4.4 KiB
Raw Blame History

M02 — Player Decomposition

Outcome

Разделить тестового player controller на input, movement, camera, terrain query и presentation без изменения наблюдаемого поведения.

Steps

  • Заменить hardcoded keys на remappable Input Map actions с профилем 3.3.5a.
  • Выделить PlayerInputSource → MoveIntent.
  • Выделить local movement state/controller.
  • Выделить TerrainQuery и убрать прямой ADT parsing из player.
  • Выделить third-person camera rig и camera collision policy.
  • Выделить character appearance и animation presenters.
  • Оставить sprint/flight debug-функции только в sandbox profile.
  • Добавить movement/camera state tests и regression scene.

Fidelity evidence

Скорости, повороты, jump/fall/swim/fly, camera orbit/zoom и input semantics сверяются с клиентом 3.3.5a. Debug sprint не считается gameplay parity.

Exit criteria

Каждый компонент заменяем независимо; sandbox управляется не хуже baseline; gameplay logic не загружает визуальные assets.

Evidence

  • Date: 2026-07-15
  • Revision/worktree: merged master eb122d5; closeout work/sindo-main-codex/m02-integrator-closeout.
  • Commands: verify_player_input.gd; verify_local_player_movement.gd; verify_player_movement_capabilities.gd; verify_terrain_query.gd; verify_third_person_camera_rig.gd; verify_character_presentation.gd; verify_coordinate_conversion_boundaries.gd; verify_streaming_focus.gd; tools/run_render_baseline.ps1 -DryRun; documentation, coordination and diff-hygiene gates.
  • Results: input PASS (16 actions, 9 intent cases, 3 profiles, one provenance fixture, 3 real-scene cases); movement PASS (15 cases, 2 state transitions); profile capabilities PASS (3 profiles, sprint/flight allow/reject and 2 scenes); terrain PASS (4 contract, interpolation, cache and 2 failure cases); camera PASS (12 state and 3 policy cases); presentation PASS (9 appearance and 10 animation cases across 3 scenes); coordinate boundary PASS (103 files, 5 consumers); StreamingFocus PASS (2 runtime scenes, 3 capture tools). Renderer dry-run passed project, material, dedupe and shutdown gates, manifest 7/7/7, calibration maximum error 0.000015, server-spawn renderer and all seven planned checkpoints.
  • Fidelity comparison: selected build-12340 default bindings are direct private observations pinned by DefaultBindings.wtf SHA-256 35FFA0E4E2356A13A0633A848F9E57ABE7DF9D8A16C2245E15D33013AD2F56A5 and Bindings.xml SHA-256 2E01276AFB7462F1417710F13B4BF1A456341F7F28CC8AE0D6D9C7442D7F6793; only sanitized selected facts are committed. 3.141594 rad/s keyboard turn is pinned to TrinityCore 3.3.5 revision 2853a621d6af91a803787a2b8a509f4ce3e0300d; right-mouse A/D strafe routing is supported by WoWee revision 626243e937fb93965fa583a6507ed5a1aa7dda4b. These two sources are compatibility references, not direct client timing/ conditional-behavior proof. Translation speeds and camera values remain sandbox regression baselines rather than original-client parity evidence; jump/fall/swim/fly gameplay is not implemented by this decomposition target. Debug sprint/free flight is proven unable to execute in Blizzlike335.
  • Changed files: typed input intent/actions/source, local movement/capabilities, terrain query, camera rig/collision policy, character appearance/animation presenters, player composition, Input Map configuration, asset-free regression scenes, sanitized input fixture, M02 verifiers, module specifications and M02 coordination claims.
  • Remaining risks: direct build-12340 timing evidence for movement/camera, jump/fall/swim/fly, autorun, left-button camera/select behavior, active camera collision, terrain slopes/holes/liquids, persisted keybindings, server authority, prediction and reconciliation remain for M09/M10/M12. Runtime renderer scenes continue to default to explicit RenderSandbox until an application shell selects Blizzlike335. M02 makes no complete 1:1 compatibility claim.