1bf5b526be
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
5.1 KiB
5.1 KiB
M02-GMP-INPUT-001 — Player input intent seam
Ownership
- Target: M02
- Program: GMP/FND
- Owner/Agent ID: sindo-main-codex
- Branch:
work/sindo-main-codex/m02-player-input - Lease expires UTC: 2026-07-16
- Integrator: M02 milestone integrator
Outcome
Replace direct keyboard polling in the runtime player with remappable Input Map
actions and an immutable PlayerInputSource → MoveIntent boundary while
preserving the current render-sandbox movement behavior.
Non-goals
- Extract local movement, terrain query, camera rig or character presenters.
- Claim exact build-12340 movement/keybinding parity before original-client fixtures.
- Change movement speeds, camera geometry, terrain sampling or renderer behavior.
- Mark M02 complete or edit its checklist/Evidence.
Paths
- Exclusive:
src/domain/input/,src/gameplay/input/,src/tests/scenes/player_input_regression.tscn,src/tools/verify_player_input.gd,docs/modules/player-input.md, this claim - Shared/hotspots:
project.godot,src/scenes/player/third_person_wow_controller.gd,docs/modules/README.md - Generated/ignored: Godot import metadata,
.uidfiles and local renderer corpus
Contracts and data
- Public API: immutable
MoveIntent;PlayerInputSource.sample_move_intent - Configuration: additive
openwc_player_*Input Map actions - Persistence/schema/cache: unchanged
- Consumers: current sandbox player controller; later local movement controller
Dependencies
- Requires: merged M01 coordinate/streaming-focus contracts on master
62eece9 - Blocks: later M02 movement-controller extraction
- External state: none; tests use synthetic Input Map events
Verification
- Commands: dedicated player-input verifier, headless project load, coordinate boundary gate, coordination/documentation gates and diff hygiene
- Fixtures: synthetic action strengths and configured default bindings
- Fidelity evidence: current W/S/A/D, Shift, E/Q and Space sandbox behavior remains mapped through actions; exact 3.3.5a semantics remain unverified
- Performance budget: one immutable intent allocation per physics tick; no I/O
Documentation deliverables
- Inline API documentation for
MoveIntent,PlayerInputActionsandPlayerInputSource - Player-input module specification with inputs/outputs, data-flow and sequence diagrams
- Module registry/source map and honest capability status
Simplicity and naming
- Important names:
MoveIntent,PlayerInputSource,PlayerInputActions - Simplest approach: immutable value, one input adapter and one controller consumer
- Rejected complexity: input provider hierarchy, event bus and generic command framework
- Unavoidable complexity: none
- Measured optimization evidence: not applicable
Status
- State: ready-for-review
- Done: twelve remappable actions, immutable
MoveIntent, statelessPlayerInputSource, controller migration, asset-free regression scene, dedicated verifier and module specification - Next: M02 integrator reviews and merges before local movement extraction
- Blocked by:
Handoff
- Commit:
6bd2e84 - Branch:
work/sindo-main-codex/m02-player-input - Outcome: the runtime player no longer polls physical keyboard keys. Movement
action strengths cross an immutable
MoveIntentseam; camera and immediate sandbox-flight events use the same remappable action catalog. - Public contract: additive
MoveIntent,PlayerInputActionsandPlayerInputSource; no schema, cache, coordinate or renderer contract change. - Verification:
PLAYER_INPUT PASS actions=12 intent_cases=6 controller=1 regression_scene=1; asset-free scene smoke exited0; coordinate boundary (88files) and StreamingFocus gates passed; unified renderer dry-run passed all eight pre-capture gates and produced seven dry-run checkpoint results; coordination/documentation/diff gates passed. - Fidelity: W/S/A/D, Shift, E/Q, Space, right mouse, wheel and Escape remain the default sandbox bindings. Regression drives forward movement, camera zoom and immediate flight toggle through the real controller. This does not establish exact build-12340 default bindings, turn/strafe policy or gameplay movement parity.
- Local verification inputs: the isolated worktree reused the existing ignored native DLL and generated ADT resource scripts. Proprietary extracted data and the character GLB were absent, so the renderer dry-run logged the expected missing-corpus diagnostics while all contract steps returned success.
- Rebuild/migration: none. Action names are additive; persisted user-binding migration does not exist yet and is documented as a gap.
- Remaining risks: production profile gating for sprint/free flight, exact 3.3.5a bindings, local movement/terrain/camera/presentation extraction and broader movement/camera state tests remain M02 work.
- Documentation: inline API comments plus
docs/modules/player-input.mdwith inputs/outputs, data-flow and sequence diagrams, ownership, recovery, capability status, known gaps and source map.