3.7 KiB
game-snake-poc-tauri
Host Tauri Android de référence du POC Snake. Cette application réutilise le gameplay Rust de game-snake-poc et l'unique adapter WebAssembly game-snake-poc-wasm ; elle ne possède aucune règle de jeu.
Responsabilités
La crate possède uniquement la frontière Tauri : initialisation du logging Rust, assemblage/plugins/commandes Tauri, contrat minimal de provenance native et frontend Vite/TypeScript exécuté dans la WebView Android.
L'organisation Rust suit le modèle des applications Desk KSP :
src/lib.rsreste une façade et réexporte les éléments partagés au crate-root ;src/tauri.rsassemble Tauri et fait déléguer les commandes aux modules propriétaires ;src/runtime.rspossède le petit contrat runtime/provenance ;frontend/contient le host WebView et consomme les bindings générés degame-snake-poc-wasm.
À partir de 0.3.1-0-pre.3, le frontend fournit aussi le Canvas, la boucle fixed-step, les contrôles clavier/touch et le chargement des assets canoniques. Le lifecycle mobile complet et la politique Back restent consolidés dans la tranche suivante.
Statut du POC
Ce host est conservé comme POC de référence et non comme template de production Android. La voie de jeu Android privilégiée reste SDL3 natif/Java/JNI, qui couvre déjà les besoins principaux avec une chaîne de build plus directe.
Tauri Android reste utile pour comparer une WebView/WASM à la voie native et pour tester ultérieurement des besoins spécifiques, par exemple la saisie texte. Une future distribution Tauri Desktop est une décision séparée, conditionnée à un bénéfice produit concret tel qu’une monétisation WebView exploitable.
Build
Les hooks beforeDevCommand et beforeBuildCommand de Tauri possèdent le build WASM et Vite. Aucun orchestrateur Python n'est utilisé. Les bindings WASM, la distribution Vite, les caches, node_modules/ et le projet Android généré restent hors des sources livrées ou dans des chemins générés ignorés.
Le host ne modifie pas le projet Android généré par Tauri. Pour 0.3.1, la chaîne Tauri 2.11.x est conservée telle que générée : Gradle 8.14.3 et Android Gradle Plugin 8.11.0. Le JDK Android de référence du projet est JDK 17, qui correspond au minimum et à la valeur par défaut documentés par AGP 8.11. Le Java 25 global et le JBR 25 de l'Android Studio actuellement installé ne doivent pas exécuter ce wrapper.
Voir USAGE.md pour l'initialisation locale et les smokes Android.
Lifecycle et Back Android
Le host suspend explicitement sa boucle requestAnimationFrame lorsque la WebView devient cachée et la reprend en réinitialisant son horloge locale. Une reprise après background ne doit donc pas simuler le temps passé hors écran. Resize et rotation passent par un ResizeObserver sur la zone de jeu et réévaluent aussi la provenance device.
Le POC reste mono-page et n’enregistre volontairement aucun handler Tauri onBackButtonPress. La politique EngineGame::quit_requested de Snake est actuellement la politique moteur par défaut Exit, cohérente avec le Back Android/Tauri naturel. Un futur jeu retournant Continue devra introduire une intégration Back explicite au lieu de modifier ce POC silencieusement.
Limite ergonomique connue
Le D-pad tactile reste sous le Canvas dans ce POC et peut nécessiter un scroll sur petit écran. Des contrôles superposés ou des gestes swipe seraient techniquement possibles, mais ne sont pas introduits dans 0.3.1 : ils ne changent pas la conclusion d’architecture et appartiendraient à une UX produit réelle.