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, 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,
- basé sur une stack Rust bas-niveau.
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/