Files
games/deltas/0.1.0/0-pre.11.fix.3.md

118 lines
2.8 KiB
Markdown

<!-- file: deltas/0.1.0/0-pre.11.fix.3.md -->
<!-- version: 1 -->
# Delta 0.1.0-0-pre.11.fix.3
## Base
Base déclarée : `0.1.0-0-pre.11.fix.2`, techniquement propre mais contrôle tactile Snake jugé insuffisant lors du smoke Android.
## Problème observé
Le mapping directionnel basé sur la position absolue du tap par rapport au centre est fonctionnel mais peu naturel pour Snake.
Un tap peut facilement produire une direction involontaire et le joueur doit viser une zone plutôt qu'exprimer directement la direction souhaitée.
## Correctif
Snake utilise désormais un geste de swipe reconnu dans `engine-v1-sdl`.
### Début
`MouseButtonDown` ou `FingerDown` mémorise l'origine du geste.
L'impulsion `Primary` reste émise sur `Down`, afin que Reflex conserve son comportement.
### Mouvement
`MouseMotion` et `FingerMotion` mettent à jour `PointerState` sans émettre de direction.
### Fin
`MouseButtonUp` ou `FingerUp` calcule le déplacement normalisé depuis l'origine.
La direction est produite uniquement si l'amplitude dominante atteint :
```text
0.04
```
L'axe dominant sélectionne :
```text
Left
Right
Up
Down
```
Un tap ou micro-mouvement ne change donc pas la direction.
`FingerCanceled` annule le geste sans produire d'action.
## Tests
Trois tests ciblés vérifient :
- qu'un geste trop court n'émet aucune direction ;
- qu'un swipe horizontal choisit l'axe horizontal ;
- qu'un swipe vertical choisit l'axe vertical.
## Validation
```bash
cargo fmt --all
cargo fmt --all -- --check
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android deltas history
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p engine-v1-sdl --all-targets --all-features
cargo test -p game-snake-poc --all-targets --all-features
```
Smoke Desktop :
```bash
cargo run -p game-snake-poc-desktop
```
Les flèches restent disponibles. Un drag souris suffisamment long peut également changer la direction.
Android x86_64 :
```bash
python3 scripts/build_android_rust.py snake --abi x86_64
cd Android
gradle :game-snake-poc:assembleDebug
cd ..
```
Puis :
```bash
android emulator start sasedev_games_api36
adb devices
android run \
--apks=Android/game-snake-poc/build/outputs/apk/debug/game-snake-poc-debug.apk \
--device=emulator-5554
```
Critères :
- swipe gauche/droite/haut/bas naturel ;
- tap simple sans changement de direction ;
- demi-tour immédiat toujours refusé par le gameplay ;
- aucun impact sur Reflex `Primary`.
## Transition
Si les gates et le smoke Android passent, `0.1.0-0-pre.11.fix.3` valide la fin de la phase `0-pre.*`.
En cas d'échec imputable au projet, produire `0.1.0-0-pre.11.fix.4`.