Skip to content

scriptura/RPG

Repository files navigation

RPG – Action-RPG (Prototype)

C# .NET MonoGame Android

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.

🎯 Orientation du Projet

🔧 Prototype .NET / C#

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.

⚙️ Le futur : Rust + Moteur DOD natif

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.

🧠 Data-Oriented Design

Un point de clarification s’impose : ce projet n’est pas un moteur orienté objets classique.

🔍 En résumé :

  • 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.

Pourquoi ?

  • stabilité temporelle (tick déterministe),
  • meilleure utilisation du CPU sur toutes les plateformes (mobile compris),
  • facilité de parallélisation,
  • pipeline clair, prévisible, testable.

Dans ce prototype

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.

🎮 Présentation du Jeu

  • 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

🏗️ Architecture du Prototype

Structure générale

  • 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)

Pipelines critiques

  • 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.

🚀 Installation (Prototype MonoGame)

Prérequis

Lancer le prototype

git clone https://github.com/votre-username/RPG.git
cd RPG
make

Compilation Release

dotnet build --configuration Release

Android

dotnet publish --framework net8.0-android --configuration Release

🛠️ Technologies du Prototype

  • 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

📄 Documentation

📄 Licence

Projet sous licence MIT.

👤 Auteur

Olivier Chavarin 🔗 https://scriptura.github.io/

About

Data-oriented 2D Action-RPG prototype in .NET 8. Implements a deterministic ECS pipeline with C#/F# interop, optimized for cache-coherent data layouts. Architectural bridge for future Rust migration.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors