0.1.0-0-pre.8
This commit is contained in:
128
deltas/0.1.0/0-pre.8.md
Normal file
128
deltas/0.1.0/0-pre.8.md
Normal file
@@ -0,0 +1,128 @@
|
||||
<!-- file: deltas/0.1.0/0-pre.8.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.1.0-0-pre.8
|
||||
|
||||
## Base
|
||||
|
||||
Base validée : `0.1.0-0-pre.7.fix.1`.
|
||||
|
||||
## Validation du delta précédent
|
||||
|
||||
`0.1.0-0-pre.7.fix.1` a été validée le 2026-09-16.
|
||||
|
||||
Les gates légères, les deux builds Rust Android, la présence des bibliothèques natives et les deux builds APK sont propres.
|
||||
|
||||
`adb` est installé et fonctionnel, mais aucun appareil ou émulateur n'était attaché. Le smoke runtime Android n'était donc pas requis pour accepter ce jalon.
|
||||
|
||||
## Objectifs
|
||||
|
||||
- introduire un input tactile portable dans le moteur ;
|
||||
- utiliser les événements SDL3 Android plutôt qu'un bridge JNI pour les touch events ;
|
||||
- rendre le bridge Java/JNI minimal réellement vérifiable ;
|
||||
- conserver une exception FFI Rust strictement bornée.
|
||||
|
||||
## Input tactile
|
||||
|
||||
`engine-v1-common` introduit `PointerState` :
|
||||
|
||||
- état actif/inactif ;
|
||||
- coordonnées normalisées `x` et `y` ;
|
||||
- bornage dans `[0.0, 1.0]`.
|
||||
|
||||
`InputState` transporte désormais ce pointeur.
|
||||
|
||||
`engine-v1-sdl` maintient l'état tactile entre les frames :
|
||||
|
||||
- `FingerDown` et `FingerMotion` activent/mettent à jour le pointeur ;
|
||||
- `FingerUp` et `FingerCanceled` le désactivent ;
|
||||
- un pointeur actif active également `GameAction::Primary` dans cette baseline.
|
||||
|
||||
## Bridge Java/JNI
|
||||
|
||||
`NativeBridge` expose :
|
||||
|
||||
```java
|
||||
public static native int nativeContractVersion();
|
||||
```
|
||||
|
||||
La bibliothèque Rust exporte le symbole JNI correspondant et retourne `1`.
|
||||
|
||||
`SaseGameActivity.onCreate()` appelle `NativeBridge.requireCompatibleContract()` après l'initialisation SDL.
|
||||
|
||||
Le bridge est ainsi réellement vérifié au premier lancement Android disponible.
|
||||
|
||||
## Exception FFI
|
||||
|
||||
L'exception Rust du crate `game-android-entrypoint` autorise désormais exactement deux exports :
|
||||
|
||||
- `SDL_main` ;
|
||||
- `Java_com_sasedev_games_common_NativeBridge_nativeContractVersion`.
|
||||
|
||||
Les blocs `unsafe`, fonctions `unsafe`, déréférencements de pointeurs bruts et autres attributs unsafe restent interdits.
|
||||
|
||||
## Validation Rust à exécuter
|
||||
|
||||
Le delta modifie du 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
|
||||
```
|
||||
|
||||
Tests ciblés :
|
||||
|
||||
```bash
|
||||
cargo test -p engine-v1-common --all-targets --all-features
|
||||
cargo test -p engine-v1-sdl --all-targets --all-features
|
||||
cargo test -p game-android-entrypoint --no-default-features
|
||||
```
|
||||
|
||||
## Validation Android
|
||||
|
||||
Reconstruire les bibliothèques natives :
|
||||
|
||||
```bash
|
||||
python3 scripts/build_android_rust.py reflex
|
||||
python3 scripts/build_android_rust.py snake
|
||||
```
|
||||
|
||||
Puis les APK :
|
||||
|
||||
```bash
|
||||
cd Android
|
||||
gradle :game-reflex-poc:assembleDebug
|
||||
gradle :game-snake-poc:assembleDebug
|
||||
cd ..
|
||||
```
|
||||
|
||||
## Smoke appareil
|
||||
|
||||
Si un appareil ou émulateur est attaché :
|
||||
|
||||
```bash
|
||||
adb devices
|
||||
```
|
||||
|
||||
installer puis lancer les deux applications.
|
||||
|
||||
Critères supplémentaires de ce delta :
|
||||
|
||||
- aucun `UnsatisfiedLinkError` sur `NativeBridge.nativeContractVersion` ;
|
||||
- aucune erreur de contrat JNI ;
|
||||
- un contact tactile ne provoque aucun crash ;
|
||||
- SDL3 continue à recevoir les événements tactiles.
|
||||
|
||||
Si aucun device n'est disponible, les builds peuvent valider le delta mais le smoke runtime reste explicitement en attente dans l'historique.
|
||||
|
||||
## Règle de transition
|
||||
|
||||
Si les gates Rust et Android sont propres, passer automatiquement à `0.1.0-0-pre.9`.
|
||||
|
||||
En cas d'échec imputable au projet, produire `0.1.0-0-pre.8.fix.1`.
|
||||
Reference in New Issue
Block a user