Journal Gamedev Framework 0.3.0

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes :
31
14
jan.
2017

Gamedev Framework (gf) est un framework de développement de jeu vidéo 2D en C++11. Il est basé sur SDL et OpenGL ES 2.0 et s'inspire très largement de l'API du module graphique de SFML avec quelques différences mineures et surtout en ajoutant des fonctionnalités non-présentes dans SFML.

Six mois après la version 0.1.0 et trois mois après la version 0.2.0, la version 0.3.0 sort aujourd'hui, comme prévu.

Au menu des nouveautés, j'ai refait complètement l'interface en mode immédiat en me basant sur Nuklear qui a le grand avantage par rapport à Dear Imgui de ne pas avoir de variables globales. Tout est bien encapsulé dans des structures. De plus, l'auteur a construit sa bibliothèque pour qu'elle soit embarquée, et donc tout le code est dans un unique .h, c'est-à-dire les déclarations des types et des fonctions et l'implémentation d'icelles. La bibliothèque permet également de venir brancher son système de rendu assez facilement (il y a plein d'exemples sur tout un tas de bibliothèques), y compris pour le rendu des fontes. Au niveau des fonctionnalités, on a tout ce qu'on peut attendre d'une telle bibliothèque. J'ai donc encapsulé tout ça dans une classe pour masquer Nuklear et utiliser mes types. Et j'ai surtout passé pas mal de temps à documenter parce que la documentation de Nuklear est inexistante. Voici une capture de l'outil gf_noise présenté la dernière fois avec cette nouvelle bibliothèque:

imgui avec Nuklear

L'autre gros ajout de cette version, c'est la collision entre deux polygones. J'ai implémenté les algorithmes GJK (pour la détection de collision) et EPA (pour le calcul de la normale et de la pénétration) qui ne sont pas simples à comprendre. Je me suis beaucoup inspiré des tutoriels de Dyn4J (un moteur physique pour Java) qui sont très pédagogiques avec plein de dessins, d'explications et de bouts de code : GJK (Gilbert–Johnson–Keerthi) et EPA (Expanding Polytope Algorithm). Et ça a l'air de marcher ! Ce travail prépare l'ajout d'un moteur physique simple, comme demandé par devnewton. J'y ai réfléchi un peu et en fait, ses arguments m'ont convaincu. Avoir un moteur physique simple peut être utile pour beaucoup de jeux, sans avoir à sortir l'artillerie lourde genre Box2D. C'est en essayant de porter un vieux jeu qui utilisait Box2D que le besoin est apparu très clairement. Donc, ça sera sans doute dans la version 0.4.0.

Pour le reste, plein de petits ajouts et plein de petits changements et quelques corrections de bugs: porter ou développer des jeux en même temps que coder gf permet d'en trouver pas mal. À noter d'ailleurs le portage d'un nouveau jeu (disponible dans les sources), Lux, qui est un shoot'em up ultra classique et dont voici une petite capture d'écran.

Lux

En conclusion, cette sortie tombe juste avant la Global Game Jam à la fin du mois. Je vais donc utiliser cette version et sans doute ajouter un nouveau jeu à la collection ! Rendez-vous dans trois mois, le 14 avril, pour la sortie de la version 0.4.0.

  • # Contact?

    Posté par  (site web personnel) . Évalué à 3.

    Je n’ai pu trouver aucun lien de contact sur le site de gf :-/
    J’ai tenté #gf sur freenode mais c’est occupé par les gens de «grammatical framework», qui fait probablement autre chose :-)

    • [^] # Re: Contact?

      Posté par  (Mastodon) . Évalué à 2.

      Ha oui, bonne remarque. Je traîne sur #jeuxlibres pour les francophones. Et j'ai mis mon adresse mail dans le fichier AUTHORS. Du coup, si je ne peux pas avoir #gf sur freenode, il va falloir que je trouve une astuce.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.