0.1.0-0-pre.2
This commit is contained in:
49
docs/architecture/005-ASSET_ARCHITECTURE.md
Normal file
49
docs/architecture/005-ASSET_ARCHITECTURE.md
Normal file
@@ -0,0 +1,49 @@
|
||||
<!-- 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.
|
||||
Reference in New Issue
Block a user