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

Nouveau chapitre : Tower of Druaga et l'évolution de mes outils

2025-12-17

Le projet One Life en pause

Après mûre réflexion, j'ai décidé de mettre le projet One Life en pause.
Ce n'est pas un abandon, mais une nécessité pour me recentrer sur un projet dont la structure me permet de pousser plus loin les mécaniques de jeu que j'affectionne tout en maîtrisant l'ampleur du design.

 

Place à l’aventure : Tower of Druaga

Je me lance aujourd'hui dans la création de Tower of Druaga, un JRPG "old-school" ancré dans un univers médiéval réaliste, sans magie.

L'histoire

Aux abords d’une ville se dresse une Tour immense et mystérieuse.
Personne ne sait réellement à quoi elle sert ni d’où elle vient ; elle semble avoir toujours fait partie du paysage, immuable.

Pourtant, les légendes ne manquent pas. On raconte qu'un artefact fabuleux serait caché en son sommet.
Les plus rêveurs prétendent même qu’une déesse y habiterait, prête à exaucer le vœu de quiconque parviendrait à l'atteindre.
Mais pour les gens censés, tout cela n'est que du folklore pour les enfants.

La réalité est bien plus sombre : la Tour abrite des créatures d’un autre monde, des êtres qui n'appartiennent pas à la Terre.
Mais elle recèle aussi un trésor bien réel : des matériaux rares et essentiels, impossibles à trouver ailleurs.
C’est cette nécessité, bien plus que la légende, qui pousse les plus braves (ou les plus désespérés) à en franchir le seuil.

 

Une fondation technique solide : Mon Template Personnalisé

Pour lancer ce projet sur les chapeaux de roues, j'ai passé beaucoup de temps à concevoir mon propre template de projet.
C’est une étape dont je suis fier, car elle représente un gain d'efficacité majeur pour tous mes futurs jeux.

Ce template me permet de démarrer avec une structure pré-établie incluant déjà :

  • Le Menu Principal complet : Jouer, Options, Quitter.

  • Le système d’Options robuste : Gestion du plein écran, des résolutions et des volumes sonores (musique et effets).

Ce socle technique est appelé à évoluer. Je prévois déjà d'y intégrer prochainement des fonctionnalités récurrentes comme la gestion des sauvegardes et le remapping des touches (clavier/manette).
L'idée est simple : ne plus jamais avoir à réinventer la roue pour me concentrer sur le cœur du gameplay.

 

Le voyage vers le sommet de la Tour commence... Maintenant !


One Life - Avancées Novembre 2025

2025-11-22

Le développement a ralenti cet automne. Je me suis retrouvé face à une phase de production intensive de contenu (Level Design) qui m'éloignait de ce que je préfère : la logique et l'architecture logicielle. Cette pause m'a permis de recharger les batteries pour aborder la suite du projet sous un angle plus technique.

 

Bug fantôme ?

Juste avant de m'arrêter, j'avais tenté de générer une version de démonstration du jeu, mais je m'étais heurté à un problème frustrant : un écran noir total.

Ma configuration matérielle (GeForce 4070 avec deux écrans 32 pouces) semblait causer un conflit.
Le moteur listait toutes les résolutions supportées par la carte graphique (allant jusqu’à 3840x2160), alors que mes moniteurs sont limités à du 1920x1080.
Le jeu tentait probablement de s'initialiser dans une résolution que mes écrans ne pouvaient pas afficher.

Étrangement, après deux mois sans toucher au projet, le bug a disparu de lui-même. Le jeu se lance désormais parfaitement.
Est-ce une mise à jour de Windows, des pilotes graphiques ou de Visual Studio qui a réglé le conflit ? Difficile à dire.

C'est l'un de ces "bugs fantômes" typiques du développement : on ne sait pas pourquoi il est arrivé, ni pourquoi il est parti, mais le projet est de nouveau fonctionnel et c'est ce qui compte pour la suite ! 😁

 

Ma petite fierté !

Je suis particulièrement fier de l'architecture mise en place pour les transitions entre les cartes.
J'ai réussi à concevoir un système où tout est géré de manière fluide sans avoir à retoucher au code à chaque nouvelle scène.

Tout repose sur la classe parent de toutes mes scènes (BaseLevelScene) et l'utilisation de propriétés dans Tiled :

  • Dans la carte de départ, un objet de type Door avec les propriétés ToLocation (destination) et ToScene
  • Dans la carte de destination, un objet de type Location pour le point d'arrivée

En intégrant cette logique à la classe de base, il me suffit de configurer les objets dans l'éditeur de cartes pour que le joueur soit positionné au bon endroit.
C'est un gain de temps énorme pour la suite du développement.

Voici un exemple d'une des portes présente dans le village :

 

Toutes les maisons auront au minimum les objets suivants :

  • un objet VillageSpawn
  • un objet Player

 

Le défi de la caméra (Work in progress)

Il reste cependant un point technique qui me donne du fil à retordre : la gestion de la caméra centrée sur le joueur, particulièrement près des bords de la carte.

Actuellement, le rendu commence au coin supérieur gauche. Si la caméra suit le joueur jusqu'au bord d'une petite carte, des zones noires apparaissent autour du décor.
C'est un défi classique de développement de jeu qui, malgré l'aide d'outils comme ChatGPT ou Gemini, demande une logique mathématique précise pour bloquer la caméra aux limites du niveau.
C'est un point sur lequel je continue de buter, mais c'est aussi ce genre de casse-tête qui rend la programmation intéressante.

 

Conclusion

Je reprends donc doucement le chemin du développement.
Mon objectif est de ne plus me laisser submerger par l'ampleur des tâches de design, mais de me concentrer sur le plaisir de résoudre ces défis techniques.

Le projet va évoluer à son rythme, sans pression.
L'important pour moi est de continuer à faire progresser les fondations de mon moteur et de voir mes idées prendre forme, une ligne de code à la fois.


One Life - Avancées Septembre 2025

2025-09-30

Ce mois-ci, One Life franchit une étape clé : les premières scènes du jeu sont enfin jouables.
On sort des menus pour entrer dans l’univers, avec la maison et le village comme premières zones explorables.
 

Maison

J’ai ajouté la première scène interne : la maison. Il est maintenant possible de changer de pièce, ce qui m’a permis de tester et valider le système de transition entre plusieurs zones.
  

Village

J’ai également intégré le village, première scène extérieure du jeu. Il servira de point central pour les déplacements et les futures interactions.

LevelManager

J’ai corrigé plusieurs bugs dans le LevelManager.
Le problème venait de la gestion particulière des objets dans Tiled : lorsqu’ils sont créés à partir de tuiles, leur origine est placée en bas à gauche, ce qui provoquait un décalage en jeu. Le système a été adapté et la gestion des cartes est désormais plus fiable.

 

Conclusion

Le projet commence à prendre forme avec ses premières zones explorables.
On peut déjà passer de la maison au village, et les bases techniques sont plus solides.

 

Prochaines étapes

Il me reste encore beaucoup de choses à travailler comme, par exemple :

  • Finaliser la partie contrôles dans l’écran des options.

  • Mettre en place la sauvegarde et le chargement du personnage.

  • Continuer de créer de nouvelles maps pour agrandir l'univers de One Life.

 

Envie de l'essayer ?

Si vous souhaitez essayer mon jeu, c'est par ici : One Life


Nouvelles fonctionnalités dans DinaCSharp

2025-09-25

Je suis heureux d’annoncer trois nouvelles briques majeures dans DinaCSharp 🎉

LevelManager

Un système complet pour charger et gérer vos niveaux, notamment ceux créés avec Tiled.

  • Support des tilesets, layers et objets.

  • Gestion des propriétés personnalisées et offsets.

  • Simplification du rendu et de l’organisation des scènes.

  • Extensible pour la gestion future des collisions et des animations de tiles.

SoundManager

Un gestionnaire centralisé pour les musiques et les effets sonores :

  • Chargement et lecture simplifiés.

  • Gestion du volume global, des catégories (musique / SFX) et du mute.

  • Possibilité de lancer plusieurs sons en parallèle sans effort.

FontManager

Un outil pour centraliser l’utilisation des polices :

  • Chargement unique des SpriteFont (évite les doublons).

  • Accès simplifié par clé.

  • Optimisation mémoire et clarté du code.

Ces ajouts ont un objectif commun : vous libérer des tâches répétitives pour vous concentrer sur le gameplay.

 

👉 Le code est disponible sur GitHub : DinaCSharp
Vos retours sont les bienvenus pour continuer à enrichir le framework 🚀


Vous pouvez télécharger la nouvelle version ici : Nouvelle version


One Life - Avancées Août 2025

2025-08-29

Depuis les 2 dernières semaines, la progression est un peu moins marquée.

DinaFramework

J'ai corrigé l'intégralité des classes de DinaFramework pour supprimer la totalité des warnings lors de la compilation.
Comme j'ai activé l'option "Nullable" dans le projet, les contrôles du compilateur étaient plus poussés sur la gestion des valeurs nulles.
Cela m'a tout de même généré plus de 200 warnings.... Ouais, quand même...

 

Écran des options

Je me suis concentré sur l'écran des options pour essayer de l'organiser de la meilleure manière qu'il soit, tant techniquement que visuellement.

Bien que le jeu utilise la langue du système d'exploitation comme langue par défaut, je vais tout de même intégrer le choix des langues (français ou anglais pour le moment).
Cela laissera le choix au joueur de choisir sa langue préférée. Des fois, les traductions sont moins bonnes surtout si le traducteur ou la traductrice ne joue pas beaucoup aux jeux vidéo.

OneLife_Options

L'écran des options s'adapte automatiquement à la résolution choisie. Les positions restent les mêmes et j'ai également fait en sorte que, même si on choisit une résolution plus petite ou plus grande, les proportions restent à peu près les mêmes.

Il reste encore quelques corrections à faire dans cet écran (la liste des résolutions est décalée par rapport au bouton de la résolution par exemple) et je dois rajouter la catégorie "Controlleurs" avec les directions et les boutons.

 

Menu principal

J'ai également rajouté une musique pour le menu principal. Je trouvais que ça manquait.
Ce qui m'a fait commencer à mettre en place un nouveau projet Audio qui contient le SoundManager.

Là aussi, c'est une grosse partie à traiter mais on fera ça un peu plus tard.
J'ai juste voulu poser les fondations de la gestion des sons dans le jeu.

 

Conclusion

Toujours pas de "démo" jouable pour le moment.
Mais les plus grosses parties sont prêtes.

 

Prochaines étapes

La prochaine étape, après l'écran des options, sera l'écran de sélection du genre.
Bien que l'écran soit fonctionnel, visuellement, il est complètement à refaire.

Mais en plus, il faudra que je gère la sauvegarde du personnage et son chargement.

Vous l'aurez compris, avant d'entamer les réelles premières étapes du gameplay, il y a encore beaucoup de points à traiter...


1

2

3