44 lines
2.2 KiB
Markdown
44 lines
2.2 KiB
Markdown
<!-- file: docs/objectives/001-PROJECT_OBJECTIVES.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Objectifs du projet games.sasedev
|
|
|
|
## Finalité
|
|
|
|
Le dépôt doit permettre de développer rapidement plusieurs petits jeux, notamment rétro, arcade, casual et hyper-casual, en réutilisant un socle technique commun tout en conservant l'indépendance fonctionnelle de chaque jeu.
|
|
|
|
La première orientation produit est Android, sans enfermer le gameplay dans Android. Les mêmes crates de jeu doivent pouvoir servir à des runners Desktop et, lorsque le support sera introduit, à une cible Web/WASM.
|
|
|
|
## Principes structurants
|
|
|
|
- Rust porte le moteur, le gameplay et le maximum de logique portable.
|
|
- SDL3 constitue la frontière principale pour fenêtre, rendu, événements, audio et entrées lorsque ces capacités sont disponibles sur la cible.
|
|
- Android ajoute une couche Java/JNI externe au workspace Rust pour les services spécifiques à la plateforme.
|
|
- Les assets sont externes aux crates et composent un espace commun et un espace propre à chaque jeu.
|
|
- Les jeux restent des crates `lib` réutilisables ; des crates `bin` Desktop distinctes servent au développement et aux smokes locaux.
|
|
- Les générations `engine-vN` peuvent coexister lorsqu'une rupture d'API ou d'architecture l'exige.
|
|
|
|
## Stratégie de construction
|
|
|
|
Le moteur n'est pas conçu intégralement avant les jeux. Les POC alimentent progressivement le moteur : un besoin réellement rencontré est extrait vers une abstraction commune, puis stabilisé lorsque plusieurs jeux le réutilisent.
|
|
|
|
La séquence générale visée est :
|
|
|
|
```text
|
|
POC jeu
|
|
↓
|
|
besoin concret
|
|
↓
|
|
abstraction minimale
|
|
↓
|
|
réutilisation par un second jeu
|
|
↓
|
|
stabilisation du moteur
|
|
```
|
|
|
|
## Vision à moyen terme
|
|
|
|
Le socle peut évoluer vers un SDK interne comprenant notamment : core, SDL, input, audio, UI, assets, physique optionnelle, services plateforme, publicité, billing, leaderboard, achievements, analytics, réseau et outillage.
|
|
|
|
Le but n'est pas d'imiter un moteur généraliste complet dès le départ, mais d'obtenir un moteur 2D léger comparable fonctionnellement aux briques utiles d'un moteur comme melonJS : scènes, entités, sprites, animations, input, collisions, audio, tilemaps, UI, particules, caméra et loaders.
|