Files
games/deltas/0.1.0/0-pre.10.md
2026-09-16 10:21:09 +02:00

123 lines
3.2 KiB
Markdown

<!-- file: deltas/0.1.0/0-pre.10.md -->
<!-- version: 1 -->
# 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`.