99 lines
4.0 KiB
Markdown
99 lines
4.0 KiB
Markdown
<!-- file: deltas/0.1.0/0-pre.3.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.1.0-0-pre.3
|
|
|
|
## Base
|
|
|
|
Base déclarée : `0.1.0-0-pre.2` validée par l'utilisateur le 2026-09-16.
|
|
|
|
## Validation du delta précédent
|
|
|
|
L'utilisateur a exécuté la gate complète suivante sur `0.1.0-0-pre.2` :
|
|
|
|
```bash
|
|
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 Android deltas
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
cargo test --workspace --all-targets --all-features
|
|
```
|
|
|
|
Résultat communiqué : propre. Les audits ont annoncé `1 table(s), 28 file(s)`, tous les packages du workspace ont passé `cargo check` et Clippy strict, et les tests Reflex/Snake ont chacun passé leur test unitaire.
|
|
|
|
`0.1.0-0-pre.2` est donc accepté comme base de ce delta.
|
|
|
|
## Objectifs
|
|
|
|
- introduire la première boucle moteur commune exécutable sans dépendre encore de SDL3 ;
|
|
- représenter temps/frame et input logique indépendamment de la plateforme ;
|
|
- faire consommer cette boucle par les deux POC et les deux runners Desktop ;
|
|
- rendre explicite le caractère optionnel de la monétisation ;
|
|
- distinguer les modèles Android, Web et Desktop sans imposer un backend publicitaire universel ;
|
|
- préciser le rôle du runner Desktop SDL3 et d'une éventuelle variante Tauri ;
|
|
- formaliser la validation Cargo par l'utilisateur et l'enchaînement automatique delta/fix.
|
|
|
|
## Code
|
|
|
|
`engine-v1-common` ajoute :
|
|
|
|
- `EngineFrame` ;
|
|
- `InputState` ;
|
|
- `EngineGame` ;
|
|
- `FixedStepRunner`.
|
|
|
|
Les deux états POC implémentent `EngineGame`. Leur action `Primary` déclenche respectivement un succès Reflex ou une croissance Snake, ce qui fournit un comportement volontairement minimal mais observable pour les runners.
|
|
|
|
Les deux runners Desktop exécutent trois ticks fixes de 16 ms avec l'action `Primary` active. Ils ne créent toujours ni fenêtre ni renderer : l'intégration SDL3 réelle reste `0-pre.4`.
|
|
|
|
## Monétisation optionnelle
|
|
|
|
`engine-v1-platform-api` ajoute :
|
|
|
|
- `PlatformServiceAvailability::{Available, Disabled, Unsupported}` ;
|
|
- `MonetizationCapabilities`.
|
|
|
|
Le runner Desktop déclare actuellement la monétisation désactivée. Android pourra fournir une implémentation publicitaire/billing, Web pourra utiliser des backends Web distincts, et Desktop peut rester sans publicité.
|
|
|
|
## Desktop natif et Tauri
|
|
|
|
Le binaire SDL3 natif reste la distribution Desktop de jeu par défaut. Une variante `<game>-desktop-tauri` pourra être introduite ultérieurement pour un besoin réel de WebView/launcher/interface riche ; elle devra consommer la même crate lib de jeu et ne constituera jamais une duplication du gameplay.
|
|
|
|
## Validation exécutée pendant la préparation
|
|
|
|
Les audits Python et contrôles structurels disponibles dans l'environnement de génération sont exécutés avant livraison. Les commandes Cargo finales ne sont pas exécutées par le générateur sauf demande explicite de l'utilisateur.
|
|
|
|
## Commandes de validation à exécuter par l'utilisateur
|
|
|
|
Gate complète obligatoire :
|
|
|
|
```bash
|
|
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 Android deltas
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
cargo test --workspace --all-targets --all-features
|
|
```
|
|
|
|
Smokes Desktop requis pour ce delta, car la boucle exécutable a changé :
|
|
|
|
```bash
|
|
cargo run -p game-reflex-poc-desktop
|
|
cargo run -p game-snake-poc-desktop
|
|
```
|
|
|
|
Résultats fonctionnels attendus des smokes :
|
|
|
|
```text
|
|
Reflex POC desktop runner: score=3 frames=3
|
|
Snake POC desktop runner: length=4 frames=3
|
|
```
|
|
|
|
## Règle de transition
|
|
|
|
Si toutes ces validations sont propres, `0.1.0-0-pre.3` est accepté et le travail passe automatiquement à `0.1.0-0-pre.4`, sauf avis contraire.
|
|
|
|
Si une validation échoue, ne pas passer à `0-pre.4` : produire `0.1.0-0-pre.3.fix.1`, puis incrémenter le suffixe de fix si nécessaire jusqu'à validation.
|