Prototype d’un Action-RPG en vue de dessus, réalisé avec .NET 8 et MonoGame. Ce repository représente la version prototype du projet : un terrain d’expérimentation pour le gameplay, les systèmes critiques et les pipelines de données.
La version finale du jeu sera portée vers Rust, potentiellement sur Bevy Engine, afin de viser un moteur entièrement data-oriented, AOT, et au plus près du métal.
L’objectif principal de cette version est de :
- stabiliser les systèmes fondamentaux (mouvement, collisions, combat, monde, dialogues),
- valider la structure ECS/DOD du moteur,
- établir les invariants gameplay avant la migration vers Rust.
Ce prototype n’est pas une “version finale”, mais une maquette exécutable destinée à dérisquer l’architecture.
L’objectif à long terme est un moteur :
- Data-Oriented (SoA, transformations séquentielles, accès mémoire cohérents),
- AOT et deterministe,
- portable sur Desktop / Mobile / WebAssembly,
- potentiellement basé sur Bevy Engine ou une stack Rust plus bas-niveau si nécessaire.
Le prototype sert donc à figer les systèmes avant la réécriture native.
Un point de clarification s’impose : ce projet n’est pas un moteur orienté objets classique.
- Le moteur ne manipule pas des objets lourds (héritage, polymorphisme).
- Il traite des tableaux de données compactes, organisés pour passer efficacement dans les caches CPU.
- Les comportements viennent de systèmes qui parcourent ces données séquentiellement.
- stabilité temporelle (tick déterministe),
- meilleure utilisation du CPU sur toutes les plateformes (mobile compris),
- facilité de parallélisation,
- pipeline clair, prévisible, testable.
Toute la structure du jeu repose déjà sur :
- une séparation stricte données / logique,
- une architecture ECS optimisée pour limiter les allocations et accès aléatoires,
- des systèmes spécialisés déclenchés via un graph de mise à jour déterministe.
L’objectif est d’assurer que ce paradigme reste cohérent lors du passage au moteur Rust.
- Genre : Action-RPG / Aventure
- Style : Vue du dessus, pixel art
- Plateformes du prototype : Windows / Linux / Android
- Plateforme du futur moteur : Rust natif (PC / Mobile / Web)
- Langue : Français
-
Boucle de jeu ECS data-oriented
-
Systèmes spécialisés (Input, Movement, Collision, Physics, Combat…)
-
Séparation stricte :
- Domain (données brutes, composants)
- Systems (transformations)
- Rendering (MonoGame uniquement pour le prototype)
- Graph d’exécution déterministe
- Accès mémoire séquentiels et batch processing
- Zéro polymorphisme runtime
- Minimisation des allocations
Ces choix sont essentiels pour préparer la future version Rust.
- .NET 8 SDK
- MonoGame 3.8.4+
git clone https://github.com/votre-username/RPG.git
cd RPG
makedotnet build --configuration Releasedotnet publish --framework net8.0-android --configuration Release- Langage : C#
- Framework : MonoGame
- Architecture : ECS (Entity-Component-System)
- Paradigme : DOD (Data-Oriented Design)
- Rendu : MonoGame 3.8.4+
- Données : JSON pour configuration, dialogues, maps
- Project-Overview.md — Philosophie du projet.
- AI-CONTEXT.md — Document de profiling.
- FILE-TREE.md — Arborescence du projet.
- SYSTEM-PIPELINE.md — Diagramme Mermaid.
- D’autres documents spécialisés existent dans ce repository (systèmes, maps, pipelines…, cf. Documentation/).
Projet sous licence MIT.
Olivier Chavarin 🔗 https://scriptura.github.io/