# Build WASM du POC Snake Web direct ## Objectif `game-snake-poc-wasm` fournit le bridge Rust/WASM du premier host navigateur direct. Cette tranche valide uniquement la production du module WebAssembly et de ses bindings JavaScript ; le frontend Vite/TypeScript et le shell Bootstrap 5 appartiennent à `0-pre.4`. ## Prérequis À installer une fois si nécessaire : ```bash rustup target add wasm32-unknown-unknown cargo install wasm-bindgen-cli --locked ``` Le CLI `wasm-bindgen` utilisé doit rester compatible avec la version de la crate `wasm-bindgen` résolue par Cargo. ## Build Rust Depuis la racine du dépôt : ```bash cargo build -p game-snake-poc-wasm --target wasm32-unknown-unknown ``` La configuration Cargo racine place l'artefact sous : ```text ../builds/sasedev-games/target/wasm32-unknown-unknown/debug/game_snake_poc_wasm.wasm ``` ## Génération des bindings navigateur Créer les bindings avec l'outil natif, sans orchestrateur Python : ```bash 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 ``` Les fichiers générés restent intégralement hors du dépôt sous `../builds/sasedev-games/`. Ils ne sont ni commités ni copiés dans `crates/` par cette tranche. ## Frontière avec `0-pre.4` `0-pre.3` s'arrête au module WASM et à ses bindings générés. `0-pre.4` ajoutera le frontend Vite/TypeScript qui les consomme, le document HTML Bootstrap 5, le Canvas, le clavier et les contrôles tactiles. Le frontend reste responsable de la cadence d'appel à `tick()` et de la traduction des événements navigateur vers `left()`, `right()`, `up()` et `down()`.