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

2.8 KiB

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 :

0.04

L'axe dominant sélectionne :

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

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 :

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 :

python3 scripts/build_android_rust.py snake --abi x86_64

cd Android
gradle :game-snake-poc:assembleDebug
cd ..

Puis :

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.