# 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 : ```text 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` = impulsion `Primary` ; - `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 ```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-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 ```bash 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 ; - `Escape` et fermeture système restent propres. ## Build Android Le code natif a changé : reconstruire impérativement le `cdylib` Reflex. ```bash python3 scripts/build_android_rust.py reflex ``` Puis : ```bash cd Android gradle :game-reflex-poc:assembleDebug cd .. ``` Si un appareil ou émulateur est disponible : ```bash 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`.