2.2 KiB
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
libréutilisables ; des cratesbinDesktop distinctes servent au développement et aux smokes locaux. - Les générations
engine-vNpeuvent 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 :
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.