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

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