Files
games/deltas/0.3.1/0-pre.3.md
2026-09-21 01:13:37 +02:00

6.0 KiB

Delta 0.3.1-0-pre.3

Base

Base déclarée : 0.3.1-0-pre.2.fix.3, validée par l'utilisateur le 2026-09-20.

Objet

Cette tranche transforme le host Tauri Android minimal en POC Snake visuellement jouable : Canvas, boucle de simulation fixed-step, contrôles clavier/touch, assets canoniques et shell responsive.

Elle enregistre aussi la décision issue du smoke précédent : Tauri Android est conservé comme POC de référence, mais la voie Android de production reste SDL3 natif tant qu'un besoin fonctionnel explicite ne justifie pas la WebView.

Frontend Tauri Snake

Le host ajoute des modules propriétaires séparés :

frontend/ts/assets.ts       validation des assets common/game
frontend/ts/game.ts         projection Canvas + fixed-step WASM
frontend/ts/input.ts        clavier + pointer/touch
frontend/ts/provenance.ts   device/input observés pour le host Tauri

main.ts reste l'orchestrateur frontend et ne réimplémente aucune règle Snake. Le gameplay continue de résider dans game-snake-poc et le même game-snake-poc-wasm reste consommé par le navigateur direct et la WebView Tauri.

Le shell reste volontairement léger : CSS local, aucun Bootstrap/SimpleBar/ResizeObserver ajouté. Le Canvas conserve le ratio logique 3 / 5 du Snake et les boutons directionnels sont utilisables au tactile/pointer.

Assets

vite-plugin-static-copy est ajouté au package Tauri pour exposer exactement les deux assets canoniques :

assets/common/data/runtime.json          -> common/data/runtime.json
assets/game-snake-poc/data/game.json     -> game/data/game.json

Les assets restent hors des crates Rust et aucun duplicat runtime n'est créé sous frontend/ ou gen/android.

Provenance

Le backend Rust fournit toujours les dimensions statiques Android / TauriWebView / Wasm. Le frontend observe désormais la classe de device et les sources d'input pour configurer l'adapter partagé avec phone/tablet/desktop/unknown et touch/keyboard-mouse/mixed/unknown.

La stabilisation lifecycle/background/foreground appartient encore à 0-pre.4.

Vite dev

La configuration WebSocket garde server.ws, mécanisme Vite 8 courant. Sur l'émulateur sans TAURI_DEV_HOST, le client HMR utilise le même port 1436 que le serveur dev/forwarding Tauri ; avec un host réseau explicite, le port HMR séparé 1437 reste utilisé.

Cette correction vise le warning HMR observé au smoke précédent mais n'est pas un critère fonctionnel du gameplay.

Positionnement Tauri après le POC minimal

La documentation durable et la roadmap sont réconciliées :

  • Tauri Android reste un POC de référence ;
  • SDL3 natif reste la cible Android productive par défaut ;
  • les futurs jeux ne reçoivent pas automatiquement une app Tauri Android ;
  • la saisie texte/WebView reste une hypothèse à comparer aux capacités SDL réelles ;
  • Tauri Desktop devient une évaluation conditionnelle, notamment selon la viabilité d'une monétisation publicitaire WebView.

Aucune extraction Web/Tauri commune n'est créée dans cette tranche. Le statut de POC de référence réduit au contraire la valeur d'une abstraction qui n'aurait pas au moins deux consommateurs durablement retenus.

Historique créé

Conformément à DOC-HIST-002/003, la tranche crée :

history/0.3.1/0-pre.2.fix.3.md

qui enregistre uniquement les validations réellement fournies pour le jalon précédent.

Fichiers principaux modifiés

  • Cargo.toml ;
  • README.md ;
  • ROADMAP.md ;
  • docs/architecture/015-PLATFORM_POC_ARCHITECTURE.md ;
  • docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md ;
  • crates/apps/game-snake-poc-tauri/README.md ;
  • crates/apps/game-snake-poc-tauri/USAGE.md ;
  • crates/apps/game-snake-poc-tauri/frontend/main.html ;
  • crates/apps/game-snake-poc-tauri/frontend/css/main.css ;
  • crates/apps/game-snake-poc-tauri/frontend/ts/main.ts ;
  • crates/apps/game-snake-poc-tauri/package.json ;
  • crates/apps/game-snake-poc-tauri/vite.config.ts ;
  • scripts/audit_distribution_layout.py.

Fichiers ajoutés

  • crates/apps/game-snake-poc-tauri/frontend/ts/assets.ts ;
  • crates/apps/game-snake-poc-tauri/frontend/ts/game.ts ;
  • crates/apps/game-snake-poc-tauri/frontend/ts/input.ts ;
  • crates/apps/game-snake-poc-tauri/frontend/ts/provenance.ts ;
  • history/0.3.1/0-pre.2.fix.3.md ;
  • deltas/0.3.1/0-pre.3.md.

Gate utilisateur

Conserver JDK 17 pour les commandes Tauri Android :

export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64
"$JAVA_HOME/bin/java" -version

Le package Tauri possède une nouvelle dépendance frontend ; mettre à jour ses dépendances sans lancer manuellement son build :

(cd crates/apps/game-snake-poc-tauri && npm install)

Puis exécuter :

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 Web deltas history
python3 scripts/audit_distribution_layout.py

cargo fmt --all
cargo fmt --all -- --check
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p game-snake-poc-wasm --all-targets --all-features

Le smoke frontend reste possédé par Tauri :

(cd crates/apps/game-snake-poc-tauri && cargo tauri android dev)

Ne pas exécuter npm run dev ou npm run build manuellement.

Critère d'acceptation

Sur l'AVD Android :

  • le Canvas Snake est visible avec un ratio 3 / 5 ;
  • le Snake avance automatiquement ;
  • score et longueur sont visibles ;
  • les quatre boutons directionnels répondent au pointer/tactile ;
  • le clavier fonctionne lorsqu'il est disponible ;
  • Assets affiche snake / engine-v1 ;
  • la provenance est android / tauri-webview / wasm / <device> / <input> et évolue après une entrée ;
  • aucune règle gameplay n'est dupliquée dans TypeScript ;
  • aucun fichier sous gen/android n'est modifié par le projet.

Le background/foreground, la reprise sans catch-up, la rotation consolidée et Back restent les objectifs explicites de 0-pre.4.