diff --git a/Android/game-reflex-poc/build.gradle b/Android/game-reflex-poc/build.gradle index 8882d93..f5f4f8c 100644 --- a/Android/game-reflex-poc/build.gradle +++ b/Android/game-reflex-poc/build.gradle @@ -1,5 +1,5 @@ // file: Android/game-reflex-poc/build.gradle -// version: 11 +// version: 12 plugins { id 'com.android.application' @@ -18,7 +18,7 @@ android { minSdk 21 targetSdk 36 versionCode 1 - versionName '0.1.0-1-alpha.2' + versionName '0.1.0-1-alpha.2.fix.1' } compileOptions { diff --git a/Android/game-snake-poc/build.gradle b/Android/game-snake-poc/build.gradle index 5cac17d..a48fe79 100644 --- a/Android/game-snake-poc/build.gradle +++ b/Android/game-snake-poc/build.gradle @@ -1,5 +1,5 @@ // file: Android/game-snake-poc/build.gradle -// version: 11 +// version: 12 plugins { id 'com.android.application' @@ -18,7 +18,7 @@ android { minSdk 21 targetSdk 36 versionCode 1 - versionName '0.1.0-1-alpha.2' + versionName '0.1.0-1-alpha.2.fix.1' } compileOptions { diff --git a/Cargo.toml b/Cargo.toml index e47c311..b98004d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ # file: Cargo.toml -# version: 28 +# version: 29 [workspace] resolver = "3" @@ -18,7 +18,7 @@ members = [ ] [workspace.package] -version = "0.1.0-1-alpha.2" +version = "0.1.0-1-alpha.2.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/games" diff --git a/crates/apps/game-reflex-poc-tauri/build.rs b/crates/apps/game-reflex-poc-tauri/build.rs index e99a476..24848af 100644 --- a/crates/apps/game-reflex-poc-tauri/build.rs +++ b/crates/apps/game-reflex-poc-tauri/build.rs @@ -1,5 +1,7 @@ // file: crates/apps/game-reflex-poc-tauri/build.rs -// version: 1 +// version: 2 + +//! Tauri build script skipped for the WebAssembly library target. fn main() { let target_arch = std::env::var("CARGO_CFG_TARGET_ARCH"); diff --git a/crates/apps/game-reflex-poc-tauri/icons/icon.png b/crates/apps/game-reflex-poc-tauri/icons/icon.png new file mode 100644 index 0000000..fb9eef6 Binary files /dev/null and b/crates/apps/game-reflex-poc-tauri/icons/icon.png differ diff --git a/crates/apps/game-reflex-poc-tauri/tauri.conf.json b/crates/apps/game-reflex-poc-tauri/tauri.conf.json index db99203..800680d 100644 --- a/crates/apps/game-reflex-poc-tauri/tauri.conf.json +++ b/crates/apps/game-reflex-poc-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Reflex POC Tauri", - "version": "0.1.0-1-alpha.2", + "version": "0.1.0-1-alpha.2.fix.1", "identifier": "com.sasedev.games.reflex.tauri", "build": { "frontendDist": "../../../Tauri/game-reflex-poc/frontend" diff --git a/crates/games/game-reflex-poc/Cargo.toml b/crates/games/game-reflex-poc/Cargo.toml index 20f6b68..4c04238 100644 --- a/crates/games/game-reflex-poc/Cargo.toml +++ b/crates/games/game-reflex-poc/Cargo.toml @@ -1,5 +1,5 @@ # file: crates/games/game-reflex-poc/Cargo.toml -# version: 2 +# version: 3 [package] name = "game-reflex-poc" @@ -13,7 +13,6 @@ publish.workspace = true [dependencies] engine-v1-common = { path = "../../engines/engine-v1-common" } engine-v1-platform-api = { path = "../../engines/engine-v1-platform-api" } -engine-v1-sdl = { path = "../../engines/engine-v1-sdl" } [dev-dependencies] game-logging-lib = { path = "../../common/game-logging-lib" } diff --git a/crates/games/game-snake-poc/Cargo.toml b/crates/games/game-snake-poc/Cargo.toml index 98d63bc..57fdb39 100644 --- a/crates/games/game-snake-poc/Cargo.toml +++ b/crates/games/game-snake-poc/Cargo.toml @@ -1,5 +1,5 @@ # file: crates/games/game-snake-poc/Cargo.toml -# version: 2 +# version: 3 [package] name = "game-snake-poc" @@ -13,7 +13,6 @@ publish.workspace = true [dependencies] engine-v1-common = { path = "../../engines/engine-v1-common" } engine-v1-platform-api = { path = "../../engines/engine-v1-platform-api" } -engine-v1-sdl = { path = "../../engines/engine-v1-sdl" } [dev-dependencies] game-logging-lib = { path = "../../common/game-logging-lib" } diff --git a/deltas/0.1.0/1-alpha.2.fix.1.md b/deltas/0.1.0/1-alpha.2.fix.1.md new file mode 100644 index 0000000..fec4151 --- /dev/null +++ b/deltas/0.1.0/1-alpha.2.fix.1.md @@ -0,0 +1,114 @@ + + + +# Delta 0.1.0-1-alpha.2.fix.1 + +## Base + +Base déclarée : `0.1.0-1-alpha.2`, non validée. + +## Échecs observés + +### Build script Tauri + +Clippy strict remonte : + +```text +missing documentation for the crate +``` + +sur `build.rs`. + +Le build script reçoit une documentation de crate. + +### Contexte Tauri + +`tauri::generate_context!()` échoue car : + +```text +icons/icon.png +``` + +est absent. + +Une icône PNG minimale de développement est ajoutée. + +### Build WebAssembly + +Le build `wasm32-unknown-unknown` tirait `sdl3` via une dépendance inutile de la crate de gameplay. + +`game-reflex-poc` n'utilise aucun symbole SDL3 ; `game-snake-poc` non plus. + +Les dépendances directes suivantes sont donc retirées des deux crates jeu : + +```text +engine-v1-sdl +``` + +La frontière redevient : + +```text +gameplay -> engine-v1-common / engine-v1-platform-api +runner Desktop -> engine-v1-sdl +runner WASM/Tauri -> wasm-bindgen / Canvas +``` + +Le gameplay ne dépend plus d'un backend de rendu/input particulier. + +## Validation + +```bash +cargo fmt --all +cargo fmt --all -- --check + +python3 scripts/audit_rust_workspace_rules.py +python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Tauri Android deltas history + +cargo check --workspace +cargo clippy --workspace --all-targets --all-features -- -D warnings + +cargo test -p engine-v1-platform-api --all-targets --all-features +cargo test -p game-reflex-poc --all-targets --all-features +cargo test -p game-snake-poc --all-targets --all-features +``` + +## Gate WASM + +Le target et `wasm-bindgen-cli` sont déjà installés sur la machine de validation. + +Relancer : + +```bash +python3 scripts/build_reflex_tauri_wasm.py +``` + +Attendu : + +```bash +test -f Tauri/game-reflex-poc/frontend/game_reflex_poc_tauri.js +test -f Tauri/game-reflex-poc/frontend/game_reflex_poc_tauri_bg.wasm +``` + +## Smoke Tauri + +Une fois le CLI Tauri et les dépendances système disponibles : + +```bash +cd crates/apps/game-reflex-poc-tauri +cargo tauri dev +``` + +Critères inchangés : + +- fenêtre locale 405 × 720 ; +- cible Reflex visible ; +- clic sur la cible comptabilisé ; +- déplacement de cible ; +- score visible ; +- aucun site distant requis. + +## Transition + +Si les gates passent, `0.1.0-1-alpha.2.fix.1` valide le POC WASM + Tauri. + +En cas d'échec imputable au projet, produire `0.1.0-1-alpha.2.fix.2`. diff --git a/docs/development/008-WASM_TAURI_POC.md b/docs/development/008-WASM_TAURI_POC.md index b739daf..db9ce85 100644 --- a/docs/development/008-WASM_TAURI_POC.md +++ b/docs/development/008-WASM_TAURI_POC.md @@ -1,5 +1,5 @@ - + # POC WebAssembly embarqué dans Tauri @@ -95,3 +95,19 @@ Critères : 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. + +## Frontière de dépendances WASM + +Les crates de gameplay `game-reflex-poc` et `game-snake-poc` ne dépendent pas de `engine-v1-sdl`. + +Le backend SDL3 appartient aux runners natifs. Cette séparation est obligatoire pour que le graphe `wasm32-unknown-unknown` ne tire pas SDL3 ni ses dépendances natives. + +## Icône de développement + +Tauri attend une icône PNG lors de la génération du contexte natif. Le POC contient donc : + +```text +crates/apps/game-reflex-poc-tauri/icons/icon.png +``` + +Il s'agit d'une icône minimale de développement ; l'identité graphique définitive viendra plus tard.