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-wasmcomme crate d'application dédiée ; - réutiliser exclusivement
engine-v1-commonetgame-snake-poc; - exposer à
wasm-bindgenles 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-bindgendirect 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
SnakeStateissu de la crate de gameplay ; - un
FixedStepRunnerà pas déterministe de 16 ms ; - un
InputStateen 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.