Завершить state machine персонажа
This commit is contained in:
@@ -178,6 +178,12 @@ baseline-задачи также имели явного владельца по
|
||||
- content не содержит blocker-softlocks и обязательных невосстановимых объектов;
|
||||
- принят `goon-game-milestone-production`.
|
||||
|
||||
Статус на 19 августа 2026: Stage 6 начат в изолированном production stream.
|
||||
Первый foundation slice `goon-game-character-states` завершён: явные
|
||||
Idle/Run/Turn/Jump/Fall/Land/Interact/Stunned/Death transitions, configured
|
||||
timings и отдельные non-color animation poses прошли 81 JVM-тест и финальную
|
||||
Android 16 matrix `36/36`. Следующий foundation slice — `CorpseManager`.
|
||||
|
||||
### Этап 7. Техническая стабилизация и release engineering — P0, 4–8 дней
|
||||
|
||||
Задачи:
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# Stage 6 character state machine
|
||||
|
||||
Date: 19 August 2026
|
||||
|
||||
Beads task: `goon-game-character-states`
|
||||
|
||||
## Contract
|
||||
|
||||
`CharacterStateMachine` is a deterministic public model driven by the physics
|
||||
facts already owned by `GameView`: alive, grounded, velocity and facing. It
|
||||
publishes:
|
||||
|
||||
- `IDLE`, `RUN`, `JUMP`, `FALL`, `DEATH` base states;
|
||||
- configured transient `TURN` and `LAND` states;
|
||||
- configured command states `INTERACT` and `STUNNED`;
|
||||
- priority `DEATH > STUNNED > INTERACT > locomotion`.
|
||||
|
||||
The model does not own collision or movement and therefore does not change the
|
||||
accepted Stage 5 physics. Switch contact drives the production `INTERACT`
|
||||
transition. `STUNNED` has a public command and a tested animation contract; its
|
||||
production hazard source belongs to the Stage 6 hazards work.
|
||||
|
||||
`PhysicsConfig` remains the single source for movement, coyote/input buffer,
|
||||
respawn and the new turn/land/interact/stunned durations. The config/level
|
||||
physics version remains `1` because no movement or collision constant changed.
|
||||
|
||||
## Visual contract
|
||||
|
||||
Every living state maps explicitly to a `VolunteerRig.Motion`. `TURN`, `LAND`,
|
||||
`INTERACT` and `STUNNED` change skeleton joints, so the states remain distinct
|
||||
without relying on color. Collision dimensions stay `62 x 100`.
|
||||
|
||||
## TDD evidence
|
||||
|
||||
Separate RED cycles covered the missing state model, airborne/death states,
|
||||
configured turn, configured land, interaction, stun priority, visual mapping,
|
||||
GameView automation integration and the regression where interaction could
|
||||
downgrade an active stun. Each RED was followed by its focused GREEN before the
|
||||
next behavior was introduced.
|
||||
|
||||
## Final gates
|
||||
|
||||
- JSON validator: `10/10`, format `1`, physics `1`.
|
||||
- JVM: `81`, failures `0`, errors `0`.
|
||||
- `lintDebug`, `assembleDebug`, `assembleDebugAndroidTest`: GREEN.
|
||||
- focused Android 16 state integration: `1/1` GREEN.
|
||||
- final unfiltered Android 16 matrix: `36/36`, failures `0`, errors `0`,
|
||||
`720.578 s`, on the exact final APK/test APK.
|
||||
- debug APK ZIP integrity: `unzip -t` GREEN.
|
||||
- debug APK SHA-256:
|
||||
`d25b7dd0a06cead0d514539773acd0a84ed92bf7c2510b9b880ded2f66508581`.
|
||||
|
||||
The AVD was stopped after the final gate.
|
||||
Reference in New Issue
Block a user