0.1.0-0-pre.2

This commit is contained in:
2026-09-16 00:03:45 +02:00
parent 8b4c79c431
commit 8c0252e34e
27 changed files with 713 additions and 34 deletions

View File

@@ -0,0 +1,43 @@
<!-- 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.