Files
games/docs/architecture/001-WORKSPACE_ARCHITECTURE.md
2026-09-15 23:26:37 +02:00

57 lines
1.7 KiB
Markdown

<!-- file: docs/architecture/001-WORKSPACE_ARCHITECTURE.md -->
<!-- version: 1 -->
# Architecture du workspace
## Vue générale
```text
games.sasedev/
├── crates/
│ ├── engines/
│ │ ├── engine-v1-common/
│ │ ├── engine-v1-platform-api/
│ │ └── engine-v1-sdl/
│ └── games/
│ ├── game-reflex-poc/
│ └── game-snake-poc/
├── assets/
│ ├── common/
│ ├── game-reflex-poc/
│ └── game-snake-poc/
├── Android/
│ ├── common/
│ ├── game-reflex-poc/
│ └── game-snake-poc/
├── docs/
├── deltas/
├── prompts/
└── scripts/
```
## Générations du moteur
Une génération `engine-vN` est une ligne de compatibilité. Un jeu peut rester sur `engine-v1` pendant qu'un nouveau jeu expérimente `engine-v2`. Les anciens jeux sont ensuite migrés individuellement.
Les subdivisions sont exprimées par crates afin de ne pas forcer un jeu à dépendre de capacités inutiles. La baseline sépare déjà :
- `engine-v1-common` : types et comportements génériques indépendants des plateformes ;
- `engine-v1-platform-api` : contrats abstraits des services plateforme ;
- `engine-v1-sdl` : frontière d'intégration SDL3, volontairement minimale dans la baseline.
## Jeux
Chaque jeu est une crate indépendante sous `crates/games/`. Un jeu ne duplique pas une crate moteur. Il sélectionne explicitement la génération qu'il consomme.
## Assets
Les assets sont extérieurs aux crates. Le packaging compose :
```text
assets/common/
+
assets/<game>/
```
Le runtime devra conserver une distinction logique entre ressources communes et ressources spécifiques afin d'éviter les collisions silencieuses.