0.3.0-0-pre.2
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 60
|
# version: 61
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
@@ -19,7 +19,7 @@ members = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.3.0-0-pre.1.fix.2"
|
version = "0.3.0-0-pre.2"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/games"
|
repository = "https://git.sasedev.com/Sasedev/games"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: README.md -->
|
<!-- file: README.md -->
|
||||||
<!-- version: 28 -->
|
<!-- version: 29 -->
|
||||||
|
|
||||||
# games.sasedev
|
# games.sasedev
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ Workspace expérimental puis productif pour des jeux multiplateformes principale
|
|||||||
|
|
||||||
Version stable de référence : `0.2.0`.
|
Version stable de référence : `0.2.0`.
|
||||||
|
|
||||||
Version de développement : `0.3.0-0-pre.1.fix.2`.
|
Version de développement : `0.3.0-0-pre.2`.
|
||||||
|
|
||||||
Les deux premiers jeux sont des POC structurels : `game-reflex-poc` et `game-snake-poc`. Ils existent d'abord pour valider les frontières du workspace, le moteur, les assets et le packaging multiplateforme.
|
Les deux premiers jeux sont des POC structurels : `game-reflex-poc` et `game-snake-poc`. Ils existent d'abord pour valider les frontières du workspace, le moteur, les assets et le packaging multiplateforme.
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# file: crates/games/game-reflex-poc/Cargo.toml
|
# file: crates/games/game-reflex-poc/Cargo.toml
|
||||||
# version: 3
|
# version: 4
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "game-reflex-poc"
|
name = "game-reflex-poc"
|
||||||
@@ -12,7 +12,6 @@ publish.workspace = true
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
engine-v1-common = { path = "../../engines/engine-v1-common" }
|
engine-v1-common = { path = "../../engines/engine-v1-common" }
|
||||||
engine-v1-platform-api = { path = "../../engines/engine-v1-platform-api" }
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
game-logging-lib = { path = "../../common/game-logging-lib" }
|
game-logging-lib = { path = "../../common/game-logging-lib" }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# file: crates/games/game-snake-poc/Cargo.toml
|
# file: crates/games/game-snake-poc/Cargo.toml
|
||||||
# version: 3
|
# version: 4
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "game-snake-poc"
|
name = "game-snake-poc"
|
||||||
@@ -12,7 +12,6 @@ publish.workspace = true
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
engine-v1-common = { path = "../../engines/engine-v1-common" }
|
engine-v1-common = { path = "../../engines/engine-v1-common" }
|
||||||
engine-v1-platform-api = { path = "../../engines/engine-v1-platform-api" }
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
game-logging-lib = { path = "../../common/game-logging-lib" }
|
game-logging-lib = { path = "../../common/game-logging-lib" }
|
||||||
|
|||||||
102
deltas/0.3.0/0-pre.2.md
Normal file
102
deltas/0.3.0/0-pre.2.md
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
<!-- file: deltas/0.3.0/0-pre.2.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta 0.3.0-0-pre.2
|
||||||
|
|
||||||
|
## Base
|
||||||
|
|
||||||
|
Base requise : `0.3.0-0-pre.1.fix.2`.
|
||||||
|
|
||||||
|
Les validations utilisateur de `0-pre.1.fix.1` et `0-pre.1.fix.2` sont consignées sous `history/0.3.0/` conformément au workflow documentaire.
|
||||||
|
|
||||||
|
## Objet
|
||||||
|
|
||||||
|
Fermer la baseline Snake portable avant l'introduction de l'adapter WASM :
|
||||||
|
|
||||||
|
- retirer des crates de gameplay les dépendances plateforme déclarées mais inutilisées ;
|
||||||
|
- confirmer que le gameplay Snake ne consomme que les contrats moteur indépendants de la plateforme ;
|
||||||
|
- documenter le contrat minimal que le futur host Web devra adapter sans introduire encore de code WASM ou frontend.
|
||||||
|
|
||||||
|
## Version
|
||||||
|
|
||||||
|
La version workspace passe de `0.3.0-0-pre.1.fix.2` à `0.3.0-0-pre.2`.
|
||||||
|
|
||||||
|
## Nettoyage des dépendances
|
||||||
|
|
||||||
|
`engine-v1-platform-api` est retiré de :
|
||||||
|
|
||||||
|
- `game-snake-poc` ;
|
||||||
|
- `game-reflex-poc`.
|
||||||
|
|
||||||
|
Ces deux crates n'utilisent aucun symbole de cette dépendance. Les launchers et adapters qui utilisent réellement des capacités plateforme conservent leur dépendance.
|
||||||
|
|
||||||
|
Ce nettoyage ne déplace aucune responsabilité et ne change aucun comportement de gameplay.
|
||||||
|
|
||||||
|
## Contrat Snake portable
|
||||||
|
|
||||||
|
La baseline confirmée pour Snake est :
|
||||||
|
|
||||||
|
- état et update via `EngineGame` ;
|
||||||
|
- entrée via `InputState` ;
|
||||||
|
- actions de gameplay utilisées : `Left`, `Right`, `Up`, `Down` ;
|
||||||
|
- rendu abstrait via `EngineScene` ;
|
||||||
|
- aucune dépendance SDL3, Web/DOM/Canvas ou `engine-v1-platform-api` dans `game-snake-poc`.
|
||||||
|
|
||||||
|
Le host reste responsable de traduire ses périphériques ou widgets en actions logiques. Le futur adapter WASM `0-pre.3` doit réutiliser cette frontière sans créer un modèle Web parallèle.
|
||||||
|
|
||||||
|
## Historique des validations précédentes
|
||||||
|
|
||||||
|
Ajout de :
|
||||||
|
|
||||||
|
- `history/0.3.0/0-pre.1.fix.1.md` ;
|
||||||
|
- `history/0.3.0/0-pre.1.fix.2.md`.
|
||||||
|
|
||||||
|
Ces fichiers enregistrent uniquement les résultats effectivement fournis par l'utilisateur : audits statiques, `cargo fmt --all -- --check` et `cargo check --workspace`. Aucun Clippy, test ou smoke non exécuté n'est déclaré validé.
|
||||||
|
|
||||||
|
## Fichiers ajoutés
|
||||||
|
|
||||||
|
- `deltas/0.3.0/0-pre.2.md` ;
|
||||||
|
- `history/0.3.0/0-pre.1.fix.1.md` ;
|
||||||
|
- `history/0.3.0/0-pre.1.fix.2.md`.
|
||||||
|
|
||||||
|
## Fichiers modifiés
|
||||||
|
|
||||||
|
- `Cargo.toml` ;
|
||||||
|
- `README.md` ;
|
||||||
|
- `crates/games/game-reflex-poc/Cargo.toml` ;
|
||||||
|
- `crates/games/game-snake-poc/Cargo.toml` ;
|
||||||
|
- `docs/architecture/004-INPUT_AND_CONTROLS.md` ;
|
||||||
|
- `docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md`.
|
||||||
|
|
||||||
|
## Suppressions
|
||||||
|
|
||||||
|
Aucune.
|
||||||
|
|
||||||
|
## Validations applicables
|
||||||
|
|
||||||
|
Audits statiques de préparation :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 scripts/audit_rust_workspace_rules.py
|
||||||
|
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android deltas history
|
||||||
|
python3 scripts/audit_distribution_layout.py
|
||||||
|
```
|
||||||
|
|
||||||
|
Validation utilisateur demandée :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo fmt --all -- --check
|
||||||
|
cargo check --workspace
|
||||||
|
cargo clippy -p game-snake-poc --all-targets --all-features -- -D warnings
|
||||||
|
cargo clippy -p game-reflex-poc --all-targets --all-features -- -D warnings
|
||||||
|
cargo test -p game-snake-poc
|
||||||
|
cargo test -p game-reflex-poc
|
||||||
|
cargo tree -p game-snake-poc --edges normal
|
||||||
|
cargo tree -p game-reflex-poc --edges normal
|
||||||
|
```
|
||||||
|
|
||||||
|
Les deux `cargo tree` doivent confirmer que les crates de gameplay ne tirent plus `engine-v1-platform-api`. Aucun smoke Desktop n'est requis : ni `engine-v1-sdl`, ni le mapping SDL, ni le runner Snake ne sont modifiés dans cette tranche.
|
||||||
|
|
||||||
|
## Suite
|
||||||
|
|
||||||
|
Après validation de `0-pre.2`, ouvrir `0-pre.3` pour l'adaptation WASM minimale de Snake conformément au plan actif. Aucun frontend Bootstrap/Vite n'est introduit avant `0-pre.4`.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/architecture/004-INPUT_AND_CONTROLS.md -->
|
<!-- file: docs/architecture/004-INPUT_AND_CONTROLS.md -->
|
||||||
<!-- version: 7 -->
|
<!-- version: 8 -->
|
||||||
|
|
||||||
# Abstraction des entrées et contrôles
|
# Abstraction des entrées et contrôles
|
||||||
|
|
||||||
@@ -97,6 +97,20 @@ Pour souris et tactile :
|
|||||||
|
|
||||||
Reflex conserve son impulsion `Primary` sur `Down` et reste donc indépendant de la reconnaissance du swipe.
|
Reflex conserve son impulsion `Primary` sur `Down` et reste donc indépendant de la reconnaissance du swipe.
|
||||||
|
|
||||||
|
## Baseline Snake portable `0.3.0`
|
||||||
|
|
||||||
|
La crate `game-snake-poc` consomme uniquement le contrat générique `engine-v1-common` pour son gameplay. Elle ne dépend pas de `engine-v1-platform-api`, de SDL3, du DOM ou d'un type de périphérique concret.
|
||||||
|
|
||||||
|
Le contrat d'entrée Snake retenu pour le premier POC Web est volontairement minimal :
|
||||||
|
|
||||||
|
- `Left`, `Right`, `Up` et `Down` pilotent la direction ;
|
||||||
|
- le rejet d'un demi-tour opposé reste une règle du gameplay Snake ;
|
||||||
|
- `Primary`, `Secondary`, `Pause` et le pointeur normalisé ne sont pas requis par le gameplay Snake actuel ;
|
||||||
|
- le host traduit clavier, swipe ou boutons virtuels vers les mêmes actions directionnelles ;
|
||||||
|
- le rendu reste exposé par `EngineGame::scene` sous forme d'`EngineScene`, sans dépendance au Canvas ou à SDL3.
|
||||||
|
|
||||||
|
Le futur adapter WASM de `0-pre.3` doit donc adapter ce contrat existant plutôt que créer un second modèle d'entrée ou de rendu propre au Web. Les besoins de provenance, monétisation ou autres services plateforme appartiennent au host/launcher et ne justifient pas une dépendance plateforme inutilisée dans la crate de gameplay.
|
||||||
|
|
||||||
## Requête de sortie
|
## Requête de sortie
|
||||||
|
|
||||||
La plateforme ne décide plus directement de terminer un jeu. Elle traduit l'événement physique en `QuitRequest` :
|
La plateforme ne décide plus directement de terminer un jeu. Elle traduit l'événement physique en `QuitRequest` :
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md -->
|
<!-- file: docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md -->
|
||||||
<!-- version: 2 -->
|
<!-- version: 3 -->
|
||||||
|
|
||||||
# Plan v0.3.0 — baseline Snake et premier POC Web direct
|
# Plan v0.3.0 — baseline Snake et premier POC Web direct
|
||||||
|
|
||||||
@@ -53,7 +53,9 @@ Créer `docs/plans/`, formaliser le caractère vivant du plan, corriger le contr
|
|||||||
|
|
||||||
Nettoyer les dépendances inutiles/spécifiques au launcher, stabiliser la frontière gameplay/input et confirmer les tests Snake ainsi que le runner Desktop SDL3.
|
Nettoyer les dépendances inutiles/spécifiques au launcher, stabiliser la frontière gameplay/input et confirmer les tests Snake ainsi que le runner Desktop SDL3.
|
||||||
|
|
||||||
Gate : audits statiques, tests ciblés des crates touchées et smoke Desktop si le runtime SDL est modifié.
|
Livraison candidate : `engine-v1-platform-api` est retiré des crates de gameplay Snake et Reflex où il n'est pas consommé ; les launchers qui utilisent réellement les capacités plateforme conservent leur dépendance. Le contrat Snake est fixé sur `EngineGame`, `InputState`, les quatre actions directionnelles et `EngineScene`, sans SDL3, DOM, Canvas ni API plateforme dans la crate de gameplay. Aucun adapter WASM n'est introduit avant `0-pre.3`.
|
||||||
|
|
||||||
|
Gate : audits statiques, `cargo check --workspace`, tests ciblés Snake et vérification du graphe de dépendances des crates de gameplay. Un smoke Desktop n'est requis que si le runtime SDL ou son mapping est modifié.
|
||||||
|
|
||||||
### `0-pre.3` — adaptation Snake WASM
|
### `0-pre.3` — adaptation Snake WASM
|
||||||
|
|
||||||
|
|||||||
29
history/0.3.0/0-pre.1.fix.1.md
Normal file
29
history/0.3.0/0-pre.1.fix.1.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<!-- file: history/0.3.0/0-pre.1.fix.1.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Historique 0.3.0-0-pre.1.fix.1
|
||||||
|
|
||||||
|
## Statut
|
||||||
|
|
||||||
|
Correctif de cadrage validé par l'utilisateur le 2026-09-20 avant ouverture de `0-pre.1.fix.2`.
|
||||||
|
|
||||||
|
## Validation utilisateur
|
||||||
|
|
||||||
|
Les commandes exécutées ont validé :
|
||||||
|
|
||||||
|
```text
|
||||||
|
General Rust rule audit: clean
|
||||||
|
Rust export completeness audit: 0 candidate(s)
|
||||||
|
games.sasedev workspace audit: clean
|
||||||
|
Markdown table audit: clean (5 table(s), 171 file(s))
|
||||||
|
Distribution layout audit: clean (19 required path(s), 1 forbidden path(s) absent)
|
||||||
|
cargo fmt --all -- --check: clean
|
||||||
|
cargo check --workspace: clean
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contenu accepté
|
||||||
|
|
||||||
|
- création de `docs/plans/` et du plan vivant `0.3.0` ;
|
||||||
|
- prévision souple des tranches jusqu'à la stable ;
|
||||||
|
- contrat explicite des archives issues d'un tag comme baseline autoritaire sans `.git` ;
|
||||||
|
- règle de session dimensionnée pour fermer au minimum la version concrète ouverte.
|
||||||
29
history/0.3.0/0-pre.1.fix.2.md
Normal file
29
history/0.3.0/0-pre.1.fix.2.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<!-- file: history/0.3.0/0-pre.1.fix.2.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Historique 0.3.0-0-pre.1.fix.2
|
||||||
|
|
||||||
|
## Statut
|
||||||
|
|
||||||
|
Dernier correctif de cadrage `0-pre.1` validé par l'utilisateur le 2026-09-20 avant ouverture de `0-pre.2`.
|
||||||
|
|
||||||
|
## Validation utilisateur
|
||||||
|
|
||||||
|
Les commandes exécutées ont validé :
|
||||||
|
|
||||||
|
```text
|
||||||
|
General Rust rule audit: clean
|
||||||
|
Rust export completeness audit: 0 candidate(s)
|
||||||
|
games.sasedev workspace audit: clean
|
||||||
|
Markdown table audit: clean (5 table(s), 172 file(s))
|
||||||
|
Distribution layout audit: clean (19 required path(s), 1 forbidden path(s) absent)
|
||||||
|
cargo fmt --all -- --check: clean
|
||||||
|
cargo check --workspace: clean
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contenu accepté
|
||||||
|
|
||||||
|
- shell Web HTML/Vite/TypeScript explicite autour du Canvas/WASM ;
|
||||||
|
- Bootstrap 5 retenu comme baseline de présentation du premier POC Snake Web ;
|
||||||
|
- séparation durable frontend / Canvas-WASM / gameplay ;
|
||||||
|
- tranche prévisionnelle explicite de consolidation documentaire, `CHANGELOG.md`, `ROADMAP.md`, history et prompt suivant avant RC.
|
||||||
Reference in New Issue
Block a user