|
|
DinaCSharpFramework / Engin : Monogame (C#) Version actuelle : 1.1.0 (2025-09-25) Projet initié le : 2022-10-01 Site web : https://github.com/Asthegor/DinaFramework/ |
Genèse et Architecture Logicielle
Initié en 2022 et porté de ma version Lua vers C#, DinaCSharp est un moteur de jeu complet et structuré. L'architecture repose sur le pattern ServiceLocator pour garantir un accès centralisé et découplé aux services globaux (SoundManager, ScreenManager, etc.), assurant une base de code propre et maintenable. J'ai aussi implémenté un native "Splash Screen" (logo moteur) pour un rendu professionnel au lancement.
Le Cœur du Moteur : Gestionnaire de Scènes Avancé
Le SceneManager est l'épine dorsale de l'application. Il gère le flux d'exécution et l'état du jeu en garantissant que chaque Scène est totalement isolée avec son cycle de vie strict (Load, Update, Draw). Sa force réside dans sa séquence de transition professionnelle : un appel à SetCurrentScene peut déclencher l'affichage d'une Scène de Chargement dédiée (fonctionnalité optionnelle), où le développeur contrôle et affiche la progression du chargement des ressources lourdes.
Localisation Native et Fichiers .resx
Pour une internationalisation sans friction, le LocalizationManager est mis en avant. Il utilise les fichiers de ressources standards .resx de C# pour gérer toutes les paires clé/valeur. L'innovation clé est que tous les composants textuels du moteur (Text, ShadowText, InputBox) consomment directement ces fichiers, assurant que la traduction est centralisée et ne nécessite qu'une simple mise à jour du fichier ressource pour localiser l'intégralité du jeu.
Bibliothèque GUI Complète et Modulaire
J'ai développé une suite complète de composants UI natifs (widgets) : Button, Slider, Checkbox, Progressbar, Panel et Group. Ces éléments permettent de construire en code des interfaces utilisateur complexes (Menus d'options, boutiques style JRPG, HUD) rapidement et sans dépendance externe, garantissant une cohérence visuelle et une performance optimales pour les jeux 2D.
Pipeline de Production et Sécurité des Données
Le moteur inclut des outils cruciaux pour la production : le LevelManager importe les cartes Tiled avec gestion des collisions. Le SpriteSheetLoader découpe les textures (support XML) pour optimiser les assets. Enfin, le SaveManager assure la persistance des données (fichiers de config/sauvegarde) en utilisant ma librairie DLACrypto pour un chiffrement fort, sécurisant les données utilisateur.