Files
games/docs/architecture/005-ASSET_ARCHITECTURE.md
2026-09-16 00:03:45 +02:00

50 lines
1.4 KiB
Markdown

<!-- file: docs/architecture/005-ASSET_ARCHITECTURE.md -->
<!-- version: 1 -->
# Architecture des assets
## Séparation physique
Les assets ne résident jamais dans les crates Rust. La racine `assets/` contient :
```text
assets/
├── common/
├── game-reflex-poc/
├── game-snake-poc/
└── <future-game>/
```
`assets/common/` ne contient que les ressources dont la mutualisation est réelle : fonts, UI générique, sons communs, icônes, particules ou shaders selon les besoins.
Chaque jeu possède son propre répertoire pour textures, audio, données, niveaux et autres ressources spécifiques.
## Espace logique
Le runtime doit éviter les collisions silencieuses. Une résolution logique peut distinguer :
```text
common://ui/button.png
game://textures/player.png
```
ou préserver des préfixes équivalents dans le package final.
## Packaging
Chaque plateforme assemble les deux sources sans créer de copie source durable dans la crate :
```text
assets/common/
+
assets/<game>/
=
package runtime du jeu
```
Desktop, Android et Web peuvent utiliser des mécanismes de packaging différents tout en conservant les mêmes noms logiques.
## Évolution
Un AssetManager commun pourra ultérieurement prendre en charge cache, loaders, textures, audio, fonts, données, erreurs, hot-reload de développement et éventuellement bundles. Ces capacités ne doivent être ajoutées qu'au rythme des besoins réels des jeux.