6bd2e84048
Work-Package: M02-GMP-INPUT-001 Agent: sindo-main-codex Tests: verify_player_input; renderer baseline dry-run; coordinate, streaming, documentation and coordination gates Fidelity: preserves current sandbox bindings and movement/camera behavior; exact build-12340 semantics remain unverified
2.9 KiB
2.9 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: active
- Done: claim and isolated worktree
- Next: implement contract, adapter, integration, tests and documentation
- Blocked by: