3.2 KiB
Delta 0.1.0-0-pre.10
Base
Base validée : 0.1.0-0-pre.9.fix.1.
Objectif
Rendre le POC Reflex effectivement jouable avec le même gameplay Rust sur Desktop et Android.
Scène portable
engine-v1-common introduit :
RenderColor
NormalizedRect
RenderRect
EngineScene
EngineGame::scene() fournit un snapshot portable après chaque update.
Le backend SDL3 convertit les coordonnées normalisées vers la taille de sortie courante, donc le redimensionnement Desktop reste indépendant des coordonnées gameplay.
Gameplay Reflex
La cible est visible sous forme de rectangle jaune.
Le score augmente uniquement lorsqu'une impulsion Primary porte un pointeur situé à l'intérieur de la cible.
Après chaque succès, la cible se déplace selon une séquence déterministe de huit positions.
Input
Desktop :
- clic gauche = impulsion
Primary; - déplacement souris avec bouton maintenu = mise à jour du pointeur ;
- relâchement = pointeur inactif.
Android :
FingerDown= impulsionPrimary;FingerMotion= mise à jour sans répétition du déclenchement ;FingerUp/FingerCanceled= pointeur inactif.
Un contact maintenu ne peut donc plus compter comme un succès à chaque frame.
Validation Rust
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-common --all-targets --all-features
cargo test -p engine-v1-sdl --all-targets --all-features
cargo test -p game-reflex-poc --all-targets --all-features
Smoke Desktop
cargo run -p game-reflex-poc-desktop
Critères :
- cible jaune visible ;
- clic hors cible : aucun déplacement ;
- clic dans la cible : déplacement immédiat vers la position suivante ;
- plusieurs succès consécutifs possibles ;
- resize de fenêtre : la cible conserve ses coordonnées relatives ;
Escapeet fermeture système restent propres.
Build Android
Le code natif a changé : reconstruire impérativement le cdylib Reflex.
python3 scripts/build_android_rust.py reflex
Puis :
cd Android
gradle :game-reflex-poc:assembleDebug
cd ..
Si un appareil ou émulateur est disponible :
adb install -r Android/game-reflex-poc/build/outputs/apk/debug/game-reflex-poc-debug.apk
adb shell am start -n com.sasedev.games.reflex/.ReflexActivity
Critères appareil :
- surface SDL visible ;
- cible jaune visible ;
- tap hors cible sans succès ;
- tap dans la cible déplace la cible ;
- pas de crash JNI ou natif.
Si aucun device n'est disponible, le build natif + APK et le smoke Desktop suffisent pour valider techniquement le delta, avec smoke Android explicitement reporté.
Transition
Si les gates sont propres, passer automatiquement à 0.1.0-0-pre.11 pour rendre Snake jouable et vérifier la réutilisation du modèle de scène.
En cas d'échec imputable au projet, produire 0.1.0-0-pre.10.fix.1.