Journal Gamedev Framework 0.4.0

Posté par . Licence CC by-sa
Tags :
38
14
avr.
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.

La bibliothèque trouve son rythme avec une sortie tous les trois mois. C'est donc aujourd'hui, trois mois après la version 0.3.0 que sort cette version 0.4.0.

Comme annoncé la dernière fois, le principal ajout de cette version est un petit moteur physique. Avant d'aller plus loin dans sa description, voici ses limites. Il ne gère pas les rotations et les effets des moments des forces. Il ne gère pas les corps composés de plusieurs morceaux (fixtures). Il ne gère pas les joints entre plusieurs corps. De même, comme c'est un moteur simple, il ne fait pas les deux passes usuelles dans la détection de collision. Mais il n'envoie pas la grosse artillerie directement (GJK dont j'ai parlé la dernière fois), il fait d'abord un test simple basé sur un cercle englobant de la géométrie, mais pas forcément le cercle minimum.

Malgré tout ça, il est quand même bien utile. Il est fondé sur trois classes. Tout d'abord, la classe PhysicsGeometry qui permet de spécifier la géométrie du corps, soit sous forme d'un cercle, soit sous forme d'un polygone. Il est fort probable que dans le futur, j'ajoute les lignes brisées (polyline), fermées ou ouvertes, parce que dans beaucoup de cas, c'est bien utile. Par exemple, pour délimiter la zone de jeu. Ensuite, la classe PhysicsBody qui contient toutes les propriétés d'un corps: position, vitesse, angle, restitution, friction, amortissement, densité. L'intérêt de découpler ces deux classes est qu'il est possible d'associer une même géométrie à plusieurs corps en même temps. Enfin, la classe PhysicsModel qui est le chef d'orchestre de tous les corps. C'est elle qui réalise la simulation physique et qui met à jour les propriétés des corps. Outre les lignes brisées, je prévois d'ajouter d'autres fonctionnalités mineures.

Au niveau du fenêtrage, plusieurs ajouts sur les modifications des propriétés de la fenêtre, directement implémentées via SDL. On peut maintenant rendre invisible une fenêtre ou enlever la décoration d'une fenêtre. On peut également limiter le nombre d'images par seconde : cette fonctionnalité existe dans SFML mais n'était pas encore implémentée dans gf, elle m'a été demandée par un contributeur enthousiaste et donc, je l'ai ajoutée.

Du côté des objets graphiques, la classe d'interface graphique en mode immédiat s'est vu ajouter la gestion du copier/coller, la gestion des champs éditables, la gestion des images (ce travail n'est pas tout à fait terminé), l'ajout d'un sélecteur de fichier simple. Bref, elle s'enrichit au fur et à mesure. L'objectif pour la prochaine version est de faire un outil comparable au célèbre Nanim Studio pour créer des animations simples.

L'autre grosse nouvelle fonctionnalité est l'ajout de classes pour afficher des particules. J'ai fait dans le simple en ne gérant que l'affichage optimisé (en un seul appel OpenGL) d'un grand nombre de petits points ou de petites formes. Je n'ai pas de générateur de particules, pour l'instant il faut créer son système à la main. J'hésite encore à ajouter des tonnes de classes génériques pour générer des systèmes plus facilement, avec une conception à base de politique (policy-based design).

Pour finir, un nouveau jeu a été ajouté aux sources: Bank Robbery for Dummies. C'est un jeu qui a été réalisé à la Global Game Jam 2015 et adapté à gf. Il utilisait Box2D à l'origine et utilise désormais le moteur physique intégré à gf. Le joueur est dans la peau de Flo qui se met en tête d'aller braquer une banque à l'aide de son amie Roxy. Le jeu se déroule en vue de haut, façon GTA. Les niveaux sont générés procéduralement et il a une durée de vie d'à peu près 5 minutes.

Bank Robbery for Dummies

Ce journal ne cache aucun troll politique. Et j'en profite pour faire un coucou à un lurker de LinuxFr avec qui j'ai discuté il y a peu.

  • # Non!

    Posté par . Évalué à 4.

    Putain, la cancoillotte, merde! Vous respectez rien!

    • [^] # Re: Non!

      Posté par . Évalué à 2.

      C'était pour le diversifier suivant: «Folk: The game uses a folk or indigenous art style of your region» ;)

  • # Oubli

    Posté par . Évalué à 2.

    J'ai oublié de dire que maintenant, il y avait un canal IRC #gf-devel sur Freenode !

  • # fais une dépêche!

    Posté par (page perso) . Évalué à 2.

    svp, tu veux pas transformer ça en dépêche ?
    il manque seulement des liens (dont celui vers l'annonce précédente). Tu auras plus de retours.

    "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

    • [^] # Re: fais une dépêche!

      Posté par . Évalué à 5.

      J'ai pris le parti de faire des journaux pour l'instant, parce que cette bibliothèque, bien qu'étant tout à fait utilisable, est en développement actif et que rien n'est stabilisé. Donc, je ne veux pas trop lui donner de visibilité, sauf pour les aventuriers qui viennent lire les journaux. Peut-être que pour la prochaine version (la 0.5.0 prévue le 14 juillet), je ferai une dépêche pour faire un point d'étape. J'avais fait une dépêche pour le lancement.

      Sinon, il faut plussoyer et le journal apparaîtra dans les journaux du mois ;)

  • # sources

    Posté par (page perso) . Évalué à 5.

    Tu as oublié le plus important ;)

    https://github.com/GamedevFramework/gf

  • # Merci

    Posté par . Évalué à 4.

    Bonjour,

    Je voulais simplement te remercier pour ta bibliothèque. Elle semble faire plein de trucs, elle est libre, elle compile (les exemples marchent), et elle est documentée (c'est incroyable le nombre de bibliothèque qui ne respecte pas les deux derniers critères).

    Je n'ai pas encore eu l'occasion de la tester en vrai, mais le jour où je prendrai enfin le temps de faire un jeu, je pense que je l'utiliserai.

    Bref, merci de nous donner accès librement à ce que tu fais.

Suivre le flux des commentaires

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