|
Dina Game EngineFramework / Engin : .Net 10 (C#) Version actuelle : v0.13.1 (2026-04-09) Projet initié le : 2026-03-01 Site web : https://github.com/Asthegor/DinaGameEngine |
Genèse et Architecture Logicielle
L'idée derrière Dina Game Engine est née d'un constat simple : démarrer un projet MonoGame proprement prend du temps. Solution, fichiers de configuration, références, structure des dossiers… tout cela est répétitif et source d'erreurs. L'éditeur automatise entièrement cette étape en générant une solution Visual Studio complète et fonctionnelle en un clic. L'architecture de l'éditeur repose sur un MVVM strict, sans framework tiers, avec injection de dépendances manuelle via le constructeur. Le code généré s'appuie sur un système de classes partielles (Designer/UserFile) qui sépare clairement le code géré par l'éditeur du code écrit par le développeur — garantissant que l'éditeur ne peut jamais écraser le travail de l'utilisateur.
Gestion des Ressources : Couleurs et Polices
Avant de pouvoir éditer des composants visuels, il faut pouvoir gérer les ressources partagées du projet. L'éditeur propose deux systèmes dédiés à cet effet. Pour les couleurs, une classe PaletteColors centralise l'ensemble de la palette du projet. Depuis l'interface, on ajoute, modifie et supprime des couleurs, et le fichier PaletteColors.Designer.cs est régénéré automatiquement. Pour les polices, l'éditeur s'appuie sur le FontManager de DinaCSharp, qui gère les polices via un système de clés typées (Key). Il génère les fichiers SpriteFont à plusieurs résolutions ainsi que le FontKeys.Designer.cs correspondant — la police Roboto étant embarquée dans les templates pour démarrer sans configuration préalable.
Composants de Scène et Génération de Code
Le cœur de l'éditeur est son système de composants de scène. Chaque composant (Text, MenuManager, ShadowText…) est configurable visuellement depuis un panneau de propriétés dédié, et le code correspondant est généré automatiquement dans le Scene.Designer.cs du projet. La génération repose sur un système de zones balisées qui permet de cibler chirurgicalement les sections à mettre à jour sans jamais toucher au reste du fichier. Le composant MenuManager illustre bien la puissance du système : il permet de configurer visuellement un menu complet — items, titres, couleurs, positions, ombrage — et génère le code MonoGame correspondant sans que le développeur n'ait à écrire une seule ligne.
Qualité et Fiabilité : Le Plan de Tests
Tester un éditeur qui génère du code est un exercice particulier : il ne suffit pas de vérifier l'interface, il faut aussi valider l'exactitude de chaque fichier produit. Un plan de tests structuré a été mis en place dès la v0.11.0 pour couvrir l'ensemble des fonctionnalités de l'éditeur. Ce plan a directement débouché sur plusieurs vagues de corrections significatives (v0.11.1, v0.12.0), renforçant la fiabilité de la génération de code, corrigeant la gestion du badge de scène de démarrage, et éliminant les messages parasites à la compilation dans Visual Studio.