0.1.0-0-pre.10

This commit is contained in:
2026-09-16 10:21:09 +02:00
parent a3d5572c37
commit 88eda8390b
16 changed files with 573 additions and 37 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/000-README.md -->
<!-- version: 11 -->
<!-- version: 12 -->
# Documentation games.sasedev
@@ -56,3 +56,5 @@ Voir [`../RULES.md`](../RULES.md), notamment [`rules/RULES_COMMANDS.md`](rules/R
## Historique validé
- [`../history/README.md`](../history/README.md) — convention et navigation de l'historique transitoire immuable des jalons validés.
- [`architecture/009-ENGINE_V1_RENDER_SCENE.md`](architecture/009-ENGINE_V1_RENDER_SCENE.md) — scène 2D portable, rectangles normalisés et backend SDL3.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/architecture/004-INPUT_AND_CONTROLS.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# Abstraction des entrées et contrôles
@@ -67,3 +67,14 @@ SDL3 fournit cette abstraction sur Android avec les événements `FingerDown`, `
La baseline `0.1.0-0-pre.8` mappe également un doigt actif vers `GameAction::Primary`. Cette association est volontairement minimale et pourra être remplacée par des zones tactiles ou boutons virtuels par jeu.
Le gameplay ne dépend d'aucun type Android, Java ou SDL3.
## Impulsion Primary et état maintenu
À partir de `0.1.0-0-pre.10`, `GameAction::Primary` représente une impulsion de déclenchement pour souris/tactile :
- `MouseButtonDown` gauche produit une impulsion `Primary` ;
- `FingerDown` produit une impulsion `Primary` ;
- les mouvements mettent à jour `PointerState` sans répéter `Primary` ;
- `MouseButtonUp`, `FingerUp` et `FingerCanceled` désactivent le pointeur.
Cette séparation empêche un contact maintenu de produire un succès par frame.

View File

@@ -0,0 +1,53 @@
<!-- file: docs/architecture/009-ENGINE_V1_RENDER_SCENE.md -->
<!-- version: 1 -->
# Scène de rendu Engine V1
## Principe
Le gameplay ne dépend pas de SDL3.
`engine-v1-common` expose un modèle de scène 2D volontairement minimal :
- `RenderColor` ;
- `NormalizedRect` ;
- `RenderRect` ;
- `EngineScene`.
Toutes les géométries sont normalisées dans `[0.0, 1.0]`.
`EngineGame::scene()` produit un snapshot après chaque update. L'implémentation par défaut fournit uniquement un fond sombre, ce qui permet aux jeux non migrés de rester compatibles.
## Backend SDL3
`engine-v1-sdl` :
1. reçoit la scène portable ;
2. récupère la taille de sortie courante du renderer ;
3. convertit les rectangles normalisés en `FRect` physiques ;
4. dessine le fond et les rectangles ;
5. présente la frame.
Le resize Desktop ne modifie donc pas les coordonnées logiques du jeu.
## Baseline Reflex
Le POC Reflex expose une cible rectangulaire jaune.
Un clic/tap ne marque un point que si le pointeur se trouve dans la cible au moment de l'impulsion `Primary`.
Après chaque succès, la cible se déplace selon une séquence déterministe afin que les tests restent reproductibles.
## Limites V1 actuelles
Le modèle ne fournit pas encore :
- texte de production ;
- textures ;
- sprites ;
- audio ;
- transformations ;
- clipping complexe ;
- batching spécialisé.
Ces capacités seront ajoutées uniquement lorsqu'un besoin concret du POC le justifiera.