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

"Dina" est un moteur de jeu en Lua qui repose sur Löve2D.
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 :

Vous trouverez des tutoriels (avec leur code source) et des exemples d'utilisation à télécharger.

Alors, n'attendez plus et lancez-vous ! Vous garderez toujours le contrôle de votre création !

Téléchargez Dina

2020-09-27

Version 2.0.3

Cette version inclut :

Nouvelle fonctionnalité

Durant certains de mes tests, j'ai eu besoin de pouvoir visualiser l'ensemble des données d'un objet de la GUI (bouton, panneau, etc.). Pour cela, je rajoutais une grande quantité de print que je devais retirer dès que mon débogage était terminé.
Après plusieurs recherches, j'ai réussi à permettre d'afficher l'ensemble des données simples (j'ai exclu les fonctions et les tables de l'affichage).
Maintenant, pour avoir les données d'un template ou d'un manager, il vous suffit de faire :

local Dina = require("Dina")
local Panel = Dina("Panel", 10, 10, 100, 50, Colors.WHITE)
print(Panel)


Et vous obtiendrez les informations suivantes dans la console :

 

Dina Panel (2.0.3)
https://dina.lacombedominique.com/documentation/templates/panel/
thickness : 1
x : 10
y : 10
z : 0
width : 100
hover : false
height : 50
visible : true

 

Correction d'un bug majeur

Lors de la rédaction du tutoriel sur le gestionnaire de carte LevelManager, je suis tombé sur un bug lors de la présentation des objets. Lorsqu'on effectuait une rotation sur ceux-ci, leurs coordonnées étaient dissociées de leur affichage.

Avant Après
LevelManager Rotation Objects Error LevelManager Rotation Objects Result


Vous pouvez télécharger la nouvelle version ici : Téléchargements


2020-05-18

Version 2.0.2

Lors du développement de mon nouveau jeu, j'ai détecté une grosse anomalie dans le module LevelManager. Les rotations des calques étaient mal calculées et généraient des problèmes lors de l'affichage. En plus d'avoir une erreur dans les rotations, je me suis aperçu que les images étaient systématiquement dessinées sur un fond complètement noir.
Cette nouvelle version contient les corrections adéquates. Des tests ont été effectués sur des tiles plus grande, plus petites et de même largeur que les tuiles de la map sans rencontrer la moindre erreur d'affichage.

Avant Après
LevelManager Rotation Error LevelManager Rotation Result


Vous pouvez télécharger la nouvelle version ici : Téléchargements


2020-05-03

Version 2.0.1 - Ajout d'un LevelManager

Cette version est en cours d'élaboration durant la conception de mon jeu "Gold Digger" (disponible ici : https://asthegor.itch.io/golddigger).
Elle inclut une librairie que j'avais conçue pour un autre de mes jeux pour charger une map issue de Tiled.
Même si ce LevelManager n'inclut pas la totalité des fonctionnalités disponibles dans Tiled, les plus importantes sont déjà disponibles (listées dans le désordre) :

Je rajouterais certaines options quand j'en aurais le besoin dans un de mes jeux ou quand on me demandera de le prendre en charge.

Autre point notable
Durant mes tests sur Gold Digger, j'ai dû soumettre mon code à un "Profiler" pour contrôler les fonctions les plus consommatrices de temps.
J'ai été plus qu'agréablement surpris de voir que mon moteur était plus que performant !
Voici le profiler que j'ai utilisé : https://love2d.org/wiki/profile


Vous pouvez télécharger la nouvelle version ici : Téléchargements

Vous pouvez télécharger les nouveaux outils ici : Outils


2020-04-20

Amélioration structurelle

Ayant relativement bien compris l'utilisation des metatable Lua, je vais modifier l'architecture du moteur pour intégrer de l'héritage.
Les modifications apportées allant être très nombreuses, une phase de test très poussée devient obligatoire. Pour cela, à partir de maintenant, je dois me doter d'un système pour vérifier que je n'ai pas brisé des fonctionnalités déjà en place. Ce système devra être simple d'utilisation pour que cela ne me prenne que peu de temps à renseigner chaque cas de test.
J'ai conscience que le développement de cet outil sera long et fastidieux.
Cela implique qu'il ne devrait pas y avoir de nouvelle version du moteur avant un moment.


2020-04-18

Version 1.3.1

Le système de gestion des dialogues fonctionnait. Toutefois, je trouvais que le fichier à créer par le développeur était bien trop compliqué. Lorsque j'ai commencé à me remettre à regarder mon moteur et sa gestion des dialogues, je dois vous avouer que j'ai eu quelques difficultés à bien tout comprendre.
Et quand j'ai ouvert le fichier des données à afficher, j'ai pris un instant pour me dire : "Respire un grand coup ! C'est toi qui l'a écrit donc tu DOIS savoir comment le lire !".
Pour que vous preniez la mesure de la tâche, voici un exemple de la version 1.3 :

local dialogs =
  {
  Dialog1 =
    {
    sound= { file="datas/music/Jessica_1_From_GC.mp3", type="stream" },
    image = "datas/dialogs/Image1.jpg",
      { -- First text to display
      position = { x= 0, y= 500 },
      title =
        {
        text="Dialog1-1", --ok
        font = { name= "datas/font/SairaStencilOne-Regular.ttf", size=20 },--ok
        align="center"
        },
      text = "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
      font = { name= "datas/font/TurretRoad.ttf", size=12 }
      }, -- Dialog1-1
      { -- Second text to display
      image = "datas/dialogs/Perso1.png",
      position = { x= 0, y= 500 },
      font = { name= "datas/font/TurretRoad.ttf", size=12 },
      title =
        {
        text="Dialog1-2",
        font = { name= "datas/font/SairaStencilOne-Regular.ttf", size=20 },
        align="left"
        },
      text = "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
      } -- Dialog1-2
    } -- Dialog1
  } -- dialogs
return dialogs

Comme vous le constatez, c'est une écriture assez fastidieuse et un risque d'erreur est plutôt facile.
Même si les erreurs sont rapidement détectés (surtout dans mon cas de test), il m'a fallu tout de même faire de la rétro-ingénierie sur toute le système de gestion des dialogues.
J'en ai profité pour repenser le fichier dans son ensemble. Le résultat obtenu est plus que satisfaisant comme vous pouvez le constater ci-dessous :
START
NAME=Dialog1
DEFAULTMUSIC=datas/music/Jessica_1_From_GC.mp3
DEFAULTFONT=datas/font/TurretRoad.ttf|12
POSITION=0|500
TITLE=Dialog1-1|datas/font/SairaStencilOne-Regular.ttf|20|center
TEXT=Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
IMAGE=datas/dialogs/Image1.jpg
TITLE=Dialog1-2|datas/font/SairaStencilOne-Regular.ttf|20
TEXT=Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
IMAGE=datas/dialogs/Perso1.png
STOP

Un "START" permet d'indiquer le début du dialogue et un "STOP" permet d'indiquer sa fin.
Seules les balises reconnues par le système sont traitées. La liste complète des balises sera présente dans la documentation ultérieurement.
Bien que je mette à disposition cette version, elle contient encore quelques bugs importants à corriger. Un nouvelle version devrait arriver d'ici demain.


Vous pouvez télécharger la nouvelle version ici : Téléchargements


1 2 3 4

5

6 7