Files
games/docs/architecture/012-MODULAR_LAYERING_AND_OWNERSHIP.md
2026-09-18 23:30:16 +02:00

57 lines
2.2 KiB
Markdown

<!-- file: docs/architecture/012-MODULAR_LAYERING_AND_OWNERSHIP.md -->
<!-- version: 1 -->
# Architecture modulaire et ownership
## Décision
Le framework est structuré par responsabilité et non par jeu ou plateforme unique.
```text
game-specific
game-systems
technical capabilities
engine kernel contracts
```
La composition produit ajoute latéralement les platform adapters, providers, server contracts et tooling.
## Engine kernel
Le kernel contient uniquement les primitives nécessaires à tous les jeux consommateurs : lifecycle, update/render, temps, runtime events, provenance et contrats minimaux input/render.
Il ne contient pas de logique Snake, publicité, authentification, HTTP ou règles Uroburas.
## Technical capabilities
Les capabilities fournissent des mécanismes techniques réutilisables : input, rendu 2D, audio, assets/content, localisation, persistence, networking et logging/telemetry.
## Game-systems
Les game-systems portent des mécaniques réutilisables entre jeux lorsque leur API est réellement justifiée : grid/tilemap, collision, caméra gameplay, stages, score, vies/attempts, timed entities, pickups/inventory et status effects lorsque leur généralisation devient réelle.
## Game-specific
Une crate jeu conserve les règles propres au jeu, la composition des systèmes et les concepts qui n'ont pas encore de second consommateur crédible.
Une mécanique n'est pas extraite uniquement parce qu'elle pourrait théoriquement servir ailleurs.
## Adapters, providers et services
Les adapters traduisent un environnement local. Les providers encapsulent un service externe. Le gameplay ne dépend pas directement d'un adapter ou SDK provider concret.
Les services serveur possèdent leurs modèles métier et leurs contrats de transport dédiés. Actix, Tungstenite, Protobuf ou Maud ne remontent pas dans le gameplay.
## Tooling
Éditeurs, build tooling, audits et outils de publication restent séparés du runtime du jeu.
## Création de crates
Une nouvelle crate est justifiée par une frontière stable ou un besoin de réutilisation réel.
Le projet évite à la fois la crate jeu monolithique et l'explosion artificielle en une crate par concept minuscule.