Facilitez vous la création de jeux vidéo !

DinaCSharp est un framework qui repose sur MonoGame.
Il offre de nombreuses fonctionnalités tout en laissant le contrôle au développeur.

Voici quelques unes des fonctionnalités qu'il intègre :

  • un gestionnaire de menus
  • des éléments pour personnaliser l'interface utilisateur
  • un gestionnaire de clavier et gamepads (avec possibilité de faire du multi-joueurs en local)
  • un gestionnaire de traductions (LocalizationManager)
  • un gestionnaire de sons/SFX (SoundManager) 
  • un gestionnaire de polices (FontManager) 
  • un gestionnaire de cartes Tiled (LevelManager) 
  • et bien d'autres à découvrir...

 

Alors, n'attendez plus et lancez-vous !
N'oubliez jamais que VOUS garderez toujours le contrôle de VOTRE création !

👉 Le code est disponible sur GitHub : DinaCSharp

 

1 2

3


RPG - Avancées Août 2025

2025-08-16

Cela fait un moment que je n’ai pas posté de nouvelles pour le Défi 2025.
Et non, je n’ai pas abandonné l’idée de faire mon RPG !

Ce projet est particulier, pas seulement parce que c’est mon premier RPG, mais surtout parce que son gameplay se démarque clairement des autres jeux du genre.

----------------------------------------------------------

Le concept du jeu

Dans One Life, vous ne contrôlez qu’un seul personnage, de sa naissance jusqu’à sa mort.
Impossible d’en changer tant qu’il est en vie !
Chaque action, depuis l’enfance jusqu’à la fin, a un impact direct et permanent sur son destin.

Le jeu est découpé en trois grandes phases :

  • Enfance : courte mais cruciale, vos choix conditionnent votre avenir.

  • Adolescence : une phase intermédiaire où vous commencez à choisir une orientation.

  • Adulte : plus lente, où vous définissez votre profession et agissez librement.

Bien sûr, je garde quelques surprises sous le coude… certaines agréables, d’autres peut-être moins. 😉

----------------------------------------------------------

Côté technique : architecture du projet

Depuis quelque temps, je me concentre surtout sur la structure technique du jeu.
Mon idée initiale était de découper le jeu en zones (village, tour, etc.), chacune avec ses propres scènes.
Je voulais aussi préparer le terrain pour de futures mises à jour sans avoir à faire retélécharger tout le jeu.

La solution : utiliser plusieurs DLL.
Chaque DLL contient une partie du jeu (personnage, zones, etc.).
Si je modifie une zone, seule la DLL correspondante doit être mise à jour → gain de temps et flexibilité.

----------------------------------------------------------

Gestion des ressources (MonoGame & ContentManager)

Un point technique important : chaque scène doit charger ses propres ressources (images, sons, polices, etc.).
Si on accumule tout en mémoire, on risque de saturer.
Problème : avec MonoGame, le ContentManager ne permet pas de libérer une ressource précise… c’est tout ou rien.

Mon idée : un ContentManager par zone.
Mais ça posait vite des soucis avec les sous-scènes et le HUD (qui doit rester affiché en permanence).

----------------------------------------------------------

La Factory, c'est la vie !

Pendant longtemps, j’ai cherché une architecture qui soit à la fois claire, extensible et surtout sans références circulaires (le cauchemar 🤯🤯🤯).
Les IA m’ont proposé plein de solutions (héritage, ZoneManager, etc.), mais aucune ne réglait vraiment le problème.

C’est là qu’est arrivée l’idée de la Factory. Et ça a tout changé.

Pourquoi la Factory ?

La Factory par zone est devenue le cœur de mon système.
Elle est responsable de tout ce qui touche à sa zone :

  • Créer les scènes de la zone (sans polluer les autres).

  • Gérer son propre ContentManager (chaque zone a son indépendance).

  • Libérer proprement les ressources quand on quitte la zone.

Résultat : plus de dépendances foireuses, plus de ressources rechargées inutilement. Chaque zone est autonome, modulaire et facile à maintenir.

Le petit bonus

J’ai aussi ajouté une sous-classe SubScene, dont héritent toutes les scènes de jeu.
Elle contient le ZoneManager (infos centralisées, transitions de zones/scènes, etc.), ce qui rend le système encore plus fluide.

👉 En clair : la Factory est devenue l’élément clé qui a transformé mon SceneManager en un système robuste, flexible et enfin agréable à utiliser.

----------------------------------------------------------

Le petit détail qui change tout

Grâce à ce système, chaque projet de zone a son propre Content, bien isolé et centralisé dans la Factory.
Il suffit juste de nommer correctement les répertoires, par exemple :

[NomProjet]Content/[NomProjet]Content.mgcb 

Résultat : tout est bien organisé, et aucune ressource n’écrase les autres.

----------------------------------------------------------

Conclusion

Aujourd’hui, j’ai une base simple, robuste et évolutive pour gérer toutes les zones du jeu.
Il reste encore beaucoup à faire, mais les fondations sont désormais solides.

Merci d’avoir lu jusqu’ici !
Et si vous avez des questions, n’hésitez pas à les poser sur le forum :
👉 dinaforum.lacombedominique.com


Mise à jour de la documentation

2025-07-20

La documentation a été mise à jour avec les dernières fonctionnalités présentes dans le framework.

Pour le moment, celle-ci est très peu lisible.
L'outil que j'ai conçu pour générer cette documentation est toujours en cours de développement.

Je vous demanderais donc un peu de patience et de compréhension pour me laisser le temps de vous fournir une documentation digne de ce nom.

Par avance, je vous en remercie 😊


Défi 2025 - Création d'un RPG

2025-02-22

J'ai toujours eu envie de créer mon propre jeu de rôle.
Connaissant l'ampleur de la tâche, je m'étais toujours dit que c'était trop difficile.

Mais je veux me lancer un défi pour cette année 2025 : réaliser mon premier RPG.
Je vous l'annonce tout de suite : il ne sera pas exceptionnel ! Mais j'aurais eu le plaisir de le concevoir.

Je vais me baser sur la documentation fournie gracieusement par MonoGame : "MonoGame Role-playing game development" (rédigée par Jim Perry et Charles Humphrey).
Toutefois, je n'adhère pas à 100% à leur vision pour certaines parties. Mais cette documentation me fournira une base de travail pour élaborer ma propre vision.

Je tâcherais de faire un point régulier sur l'avancée du projet (si possible avec des captures d'écran selon l'avancée).


1 2

3