0.1.0-1-alpha.2
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/000-README.md -->
|
||||
<!-- version: 13 -->
|
||||
<!-- version: 14 -->
|
||||
|
||||
# Documentation games.sasedev
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/001-WORKSPACE_ARCHITECTURE.md -->
|
||||
<!-- version: 3 -->
|
||||
<!-- version: 4 -->
|
||||
|
||||
# Architecture du workspace
|
||||
|
||||
@@ -20,11 +20,14 @@ games.sasedev/
|
||||
│ │ └── game-snake-poc/
|
||||
│ └── apps/
|
||||
│ ├── game-reflex-poc-desktop/
|
||||
│ └── game-snake-poc-desktop/
|
||||
│ ├── game-snake-poc-desktop/
|
||||
│ └── game-reflex-poc-tauri/
|
||||
├── assets/
|
||||
│ ├── common/
|
||||
│ ├── game-reflex-poc/
|
||||
│ └── game-snake-poc/
|
||||
├── Tauri/
|
||||
│ └── game-reflex-poc/
|
||||
├── Android/
|
||||
│ ├── common/
|
||||
│ ├── game-reflex-poc/
|
||||
@@ -66,3 +69,14 @@ Le runtime devra conserver une distinction logique entre ressources communes et
|
||||
## Runners Desktop
|
||||
|
||||
Chaque crate de jeu reste une bibliothèque. Une crate binaire Desktop séparée sous `crates/apps/` la consomme pour permettre les itérations locales rapides. Cette séparation évite d’introduire `main`, des choix de plateforme ou du code de lancement dans le gameplay réutilisable.
|
||||
|
||||
## Variante Tauri / WebAssembly
|
||||
|
||||
La variante Tauri est distincte du runner SDL3 natif.
|
||||
|
||||
`game-reflex-poc-tauri` porte deux faces du même launcher :
|
||||
|
||||
- une bibliothèque `wasm32-unknown-unknown` qui adapte `game-reflex-poc` à `wasm-bindgen` ;
|
||||
- un binaire natif Tauri qui héberge la WebView locale.
|
||||
|
||||
Le frontend statique sous `Tauri/game-reflex-poc/frontend/` pilote un Canvas et appelle l'adaptateur WASM. Les règles Reflex restent exclusivement dans `game-reflex-poc`.
|
||||
|
||||
97
docs/development/008-WASM_TAURI_POC.md
Normal file
97
docs/development/008-WASM_TAURI_POC.md
Normal file
@@ -0,0 +1,97 @@
|
||||
<!-- file: docs/development/008-WASM_TAURI_POC.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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.
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/FILE_CONTRACTS.md -->
|
||||
<!-- version: 3 -->
|
||||
<!-- version: 4 -->
|
||||
|
||||
# Contrats des fichiers principaux
|
||||
|
||||
@@ -24,3 +24,9 @@
|
||||
- `assets/` contient les ressources runtime communes et spécifiques aux jeux ; aucune ressource runtime n'est placée dans une crate Rust.
|
||||
- `Android/` contient le projet Gradle multi-module et son code Java commun/spécifique.
|
||||
- `crates/apps/` contient les exécutables de développement et launchers Rust, notamment les runners Desktop par jeu.
|
||||
|
||||
## Tauri
|
||||
|
||||
- `Tauri/<game>/frontend/` contient le frontend Web statique versionné d'une variante Tauri.
|
||||
- Les bindings JavaScript et modules `.wasm` générés restent ignorés par Git.
|
||||
- Le backend Rust Tauri reste sous `crates/apps/`.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/RULES_COMMANDS.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Règles d'exécution des commandes
|
||||
|
||||
@@ -53,6 +53,8 @@
|
||||
|
||||
- **CMD-WEB-001** — Aucun gestionnaire de paquets JavaScript ni build Web n'est exécuté tant qu'un frontend Web réel n'a pas été introduit dans le dépôt.
|
||||
- **CMD-WEB-002** — Lorsqu'une cible Web existe, ses commandes de build et test sont documentées avant d'être ajoutées aux gates.
|
||||
- **CMD-WEB-003** — Le POC Tauri/WASM utilise `scripts/build_reflex_tauri_wasm.py`; aucun gestionnaire de paquets JavaScript ni serveur Web externe n'est requis pour cette variante.
|
||||
- **CMD-WEB-004** — Les fichiers produits par `wasm-bindgen` sont générés localement et ne sont pas commités.
|
||||
|
||||
## Git et fichiers générés
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/RULES_PROJECT.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Règles spécifiques games.sasedev
|
||||
|
||||
@@ -49,6 +49,8 @@
|
||||
- **GAME-PLATFORM-004** — Ads et Billing sont des capacités optionnelles ; le gameplay reste fonctionnel lorsqu'elles sont disponibles, désactivées ou non supportées.
|
||||
- **GAME-PLATFORM-005** — Un backend de monétisation est spécifique à sa plateforme et à sa distribution ; une intégration Android n'est pas réutilisée implicitement sur Web ou Desktop.
|
||||
- **GAME-PLATFORM-006** — Le runner Desktop natif SDL3 est la forme Desktop par défaut. Une variante Tauri peut coexister uniquement lorsqu'un besoin explicite le justifie et consomme la même crate lib de jeu.
|
||||
- **GAME-PLATFORM-007** — Une variante Tauri conserve son backend Rust sous `crates/apps/`; son frontend Web statique réside sous `Tauri/<game>/` et ne duplique pas le gameplay Rust.
|
||||
- **GAME-PLATFORM-008** — Le gameplay compilé en WebAssembly est adapté par une frontière dédiée ; le code JavaScript orchestre la WebView, les événements et le rendu Canvas mais ne réimplémente pas les règles du jeu.
|
||||
|
||||
## POC
|
||||
|
||||
|
||||
Reference in New Issue
Block a user