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