Files
games/deltas/0.3.0/0-pre.3.md
2026-09-20 07:03:34 +02:00

4.9 KiB

Delta 0.3.0-0-pre.3

Base

Base requise : 0.3.0-0-pre.2.

La validation complète de 0-pre.2 est consignée dans history/0.3.0/0-pre.2.md.

Objet

Introduire l'adapter WASM minimal de Snake avant tout frontend navigateur :

  • ajouter game-snake-poc-wasm comme crate d'application dédiée ;
  • réutiliser exclusivement engine-v1-common et game-snake-poc ;
  • exposer à wasm-bindgen les directions logiques et la scène portable ;
  • préserver la cadence de simulation en séparant événement d'entrée et tick() ;
  • documenter un chemin Cargo + wasm-bindgen direct sans orchestrateur Python ;
  • ne pas introduire Vite, Bootstrap, DOM, Tauri ou SDL3 dans cette tranche.

Version

La version workspace passe de 0.3.0-0-pre.2 à 0.3.0-0-pre.3.

Adapter Snake WASM

La nouvelle crate crates/apps/game-snake-poc-wasm contient une façade lib.rs et un runtime propriétaire séparé.

SnakeWasmGame possède :

  • un SnakeState issu de la crate de gameplay ;
  • un FixedStepRunner à pas déterministe de 16 ms ;
  • un InputState en attente pour la prochaine update.

Les appels left(), right(), up() et down() ne font pas avancer la simulation. Ils remplacent la direction logique en attente. tick() consomme ensuite cette entrée une fois, la remet à zéro et avance le runner d'une update. La cadence reste ainsi sous la responsabilité du futur host navigateur.

L'API expose également le score, la longueur, la couleur de fond et les rectangles normalisés de l'EngineScene. Le futur frontend 0-pre.4 peut donc dessiner le Canvas sans accéder à la structure interne de Snake.

Frontières conservées

game-snake-poc-wasm ne dépend pas de :

  • engine-v1-platform-api ;
  • engine-v1-sdl ;
  • Tauri ;
  • DOM/Canvas Rust ;
  • code frontend TypeScript.

La duplication limitée des getters de scène avec game-reflex-poc-wasm est volontairement conservée à ce stade. Une abstraction commune ne sera extraite que si les POC suivants démontrent un besoin partagé suffisamment stable.

Documentation et audits

L'architecture du workspace mentionne désormais l'adapter Snake WASM et le contrat d'entrée précise la file directionnelle consommée par tick().

L'audit de distribution exige maintenant crates/apps/game-snake-poc-wasm/Cargo.toml, portant le nombre de chemins requis de 19 à 20.

Le plan actif est réconcilié avec la livraison réelle de 0-pre.3. docs/development/009-SNAKE_WEB_WASM_BUILD.md documente le build natif Cargo + wasm-bindgen, avec tous les artefacts générés sous ../builds/sasedev-games/.

Historique

Ajout de history/0.3.0/0-pre.2.md avec les résultats réellement fournis par l'utilisateur : audits, formatage, check workspace, Clippy workspace strict, tests Snake/Reflex et graphes de dépendances.

Fichiers ajoutés

  • crates/apps/game-snake-poc-wasm/Cargo.toml ;
  • crates/apps/game-snake-poc-wasm/src/lib.rs ;
  • crates/apps/game-snake-poc-wasm/src/runtime.rs ;
  • crates/apps/game-snake-poc-wasm/unit_tests/runtime.rs ;
  • deltas/0.3.0/0-pre.3.md ;
  • docs/development/009-SNAKE_WEB_WASM_BUILD.md ;
  • history/0.3.0/0-pre.2.md.

Fichiers modifiés

  • Cargo.toml ;
  • README.md ;
  • docs/architecture/001-WORKSPACE_ARCHITECTURE.md ;
  • docs/000-README.md ;
  • docs/architecture/004-INPUT_AND_CONTROLS.md ;
  • docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md ;
  • scripts/audit_distribution_layout.py.

Suppressions

Aucune.

Validations applicables

Audits statiques de préparation :

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

Validation utilisateur demandée :

cargo fmt --all
cargo fmt --all -- --check
cargo check --workspace
cargo clippy -p game-snake-poc-wasm --all-targets --all-features -- -D warnings
cargo test -p game-snake-poc-wasm
cargo build -p game-snake-poc-wasm --target wasm32-unknown-unknown
wasm-bindgen ../builds/sasedev-games/target/wasm32-unknown-unknown/debug/game_snake_poc_wasm.wasm --target web --out-dir ../builds/sasedev-games/game-snake-poc-web/wasm --out-name game_snake_poc_wasm
cargo tree -p game-snake-poc-wasm --edges normal

Le cargo tree doit rester limité à engine-v1-common, game-snake-poc, wasm-bindgen et leurs dépendances nécessaires ; aucune dépendance SDL3, Tauri ou engine-v1-platform-api ne doit apparaître.

La commande wasm-bindgen doit produire les bindings navigateur sans écrire d'artefact généré dans le dépôt. Aucun build Vite/Bootstrap et aucun smoke navigateur ne sont requis dans cette tranche, car le frontend appartient à 0-pre.4.

Suite

Après validation de 0-pre.3, ouvrir 0-pre.4 pour le frontend Web direct Vite/TypeScript, son shell HTML Bootstrap 5, le Canvas et les contrôles clavier/tactiles.