0.1.0-0-pre.11-fix.3
This commit is contained in:
117
deltas/0.1.0/0-pre.11.fix.3.md
Normal file
117
deltas/0.1.0/0-pre.11.fix.3.md
Normal file
@@ -0,0 +1,117 @@
|
||||
<!-- 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`.
|
||||
Reference in New Issue
Block a user