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
79 lines
2.9 KiB
Markdown
79 lines
2.9 KiB
Markdown
# M02-GMP-INPUT-001 — Player input intent seam
|
|
|
|
<!-- OPENWC_CLAIM:M02-GMP-INPUT-001:sindo-main-codex:2026-07-16 -->
|
|
|
|
## 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, `.uid` files 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`, `PlayerInputActions` and
|
|
`PlayerInputSource`
|
|
- 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:
|