# POC WebAssembly embarqué dans Tauri ## Objectif Le POC vérifie qu'une même crate de gameplay Rust peut fonctionner : - dans le runner Desktop SDL3 natif ; - compilée en WebAssembly ; - dans une WebView Tauri locale ; - sans site distant ni serveur applicatif. Le POC ne remplace pas le runner SDL3 natif. ## Découpage ```text game-reflex-poc | +--> game-reflex-poc-desktop --> engine-v1-sdl --> SDL3 natif | +--> game-reflex-poc-tauri --wasm32--> wasm-bindgen --> Canvas Web | +--natif--> Tauri WebView ``` Le JavaScript ne contient aucune règle Reflex. Il traduit les événements pointeur vers l'adaptateur WASM et dessine la scène générique exposée par le moteur. ## Frontend local Tauri agit comme hôte de fichiers Web statiques locaux. `frontendDist` pointe sur : ```text Tauri/game-reflex-poc/frontend/ ``` Aucun site, CDN, Vite ou gestionnaire de paquets JavaScript n'est requis par ce POC. ## Sécurité La CSP reste locale. `wasm-unsafe-eval` est autorisé uniquement parce que la WebView charge du WebAssembly. Aucun script distant n'est autorisé. ## Build WASM Préparer une fois : ```bash rustup target add wasm32-unknown-unknown cargo install wasm-bindgen-cli --locked ``` Puis : ```bash python3 scripts/build_reflex_tauri_wasm.py ``` Les fichiers générés sont ignorés par Git. ## Prérequis Tauri Linux Le développement Tauri v2 requiert les bibliothèques système WebKitGTK/GTK correspondantes. Sur Debian, vérifier notamment la présence de `libwebkit2gtk-4.1-dev` et des autres prérequis documentés par Tauri avant la gate Tauri. Installer une fois le CLI si nécessaire : ```bash cargo install tauri-cli --version "^2.0.0" --locked ``` ## Exécution Après génération du WASM : ```bash cd crates/apps/game-reflex-poc-tauri cargo tauri dev ``` Critères : - une fenêtre locale 405 × 720 s'ouvre ; - le Canvas affiche le même fond et la même cible que Reflex SDL3 ; - cliquer sur la cible incrémente le score et déplace la cible ; - aucun site distant n'est requis ; - le runtime est identifiable comme `Desktop + Wasm + TauriWebView + KeyboardMouse`. ## Frontière services Web Ce POC ne choisit aucune régie publicitaire. Il valide seulement qu'une variante Tauri possède une WebView capable d'héberger une frontière Web distincte. Ads, rewarded ads, revive, analytics et autres services resteront derrière `engine-v1-platform-api` et feront l'objet de tranches dédiées.