Sortie de SFML 2.2

Posté par . Édité par BAud et Benoît Sibaud. Modéré par Pierre Jarillon. Licence CC by-sa
Tags : aucun
26
14
déc.
2014
Jeu

Simple and Fast Multimedia Library (SFML) est une bibliothèque C++ destinée à faciliter le développement d'applications multimédia et en particulier de jeux vidéo. Elle intègre à la fois les éléments graphiques, le réseau, la gestion des sons et la gestion des fontes. Cette bibliothèque est disponible sur les principaux systèmes d'exploitation et, en particulier, votre préféré.

Le 7 décembre est sortie la version 2.2, soit un an et demi après la version 2.1. Cette nouvelle version apporte quelques nouvelles fonctionnalités, dont la prise en charge d'Android et iOS et la correction de nombreux bugs.

SFML est une bibliothèque comparable à Simple DirectMedia Layer (SDL). Au niveau des différences, SDL est en C alors que SFML est en C++ ; SDL offre une API un peu plus bas niveau que SFML ; SDL est uniquement consacré à la partie graphique, mais il existe des bibliothèques annexes qui permettent d'avoir les mêmes fonctionnalités que SFML (SDL_ttf, SDL_image, SDL_net).

Nouveautés de SFML 2.2

Une nouvelle équipe

Depuis SFML 2.1, l'équipe de développement s'est enrichie. D'un seul développeur, Laurent Gomila, on est passé à une équipe, principalement des développeurs qui utilisent beaucoup SFML et qui ont développé des bibliothèques d'extensions. On peut citer :

Port Android et iOS

Il est maintenant possible d'utiliser SFML sur ces deux plateformes mobiles. C'est la première version qui le permet et il faut donc s'attendre à quelques bogues.

Compilation et outillage

Plusieurs chaînes de compilation sont maintenant prises en charge (en plus de celles déjà existantes) :

  • compilateurs de Debian/kFreeBSD ;
  • VS2013 sur Windows.

De même, le nom des système d'exploitation et des compilateurs est désormais plus clair dans les fichiers CMake.

Dans les sous-systèmes…

Dans le sous-système System, la classe sf::String permet maintenant de convertir depuis et vers n'importe quel codage UTF. Elle gagne également deux méthodes, remplacement et sous-chaîne. La classe sf::Time gagne les opérateurs modulo et division.

Dans le sous-système Window, il est désormais possible de vérifier et demander le focus sur la fenêtre. La classe sf::Joystick expose désormais des données sur le matériel : nom, identifiant du fabricant, identifiant du produit.

Dans le sous-système Graphics, la classe sf::Font expose beaucoup plus d'informations qu'auparavant. Elle fait maintenant ses calculs avec des flottants à la place d'entiers, pour une meilleure précision, notamment pour le souligné. La classe sf::Color gagne un opérateur de soustraction. Et surtout, un nouveau système plus flexible pour le blending est mis en place.

Dans le sous-système Audio, les principales améliorations concernent la capture de son.

Dans le sous-système Network, la classe sf::Http a gagné la prise en charge de PUT et DELETE. Les entiers 64 bits sont maintenant gérés par la classe sf::Packet. Et la classe sf::Ftp permet d'envoyer des commandes directement.

Conclusion

Sans apporter de révolution, cette version consolide l'existant. Le portage de la version 2.1 à la version 2.2 devrait se passer dans d'excellentes conditions. Il faut noter qu'il n'y a pas encore eu de sortie officielle, juste un tag sur github. En particulier, la documentation n'est pas encore en ligne, mais devrait arriver dans les prochaines semaines.

SFML 3

Des discussions sur SFML3 ont commencé et vont se poursuivre. L'idée est de voir ce qui manque à SFML et qui ne peut pas être implémenté facilement en utilisant SFML. Le débat riche a déjà amené quelques idées intéressantes comme :

  • la prise en charge de C++11, éventuellement optionnelle
  • la lecture de vidéo (même si l'auteur principal n'est pas très chaud à cette idée au vu des dépendances)
  • meilleure séparation de la partie fenêtre et de la partie graphique, avec un contexte graphique bien à part (un peu comme SDL)
  • intégration de bibliothèques d'extension (même si l'idée ne fait pas l'unanimité) :
    • Thor : une extension pour gérer les animations, les systèmes de particules, les grandes textures, etc.
    • 3DEE : une extension pour faire de la 3D (avec une implémentation par un des membres de la nouvelle équipe).

Aucune date n'est annoncée pour l'instant, évidemment. Mais ce fil de discussion montre le dynamisme autour de cette bibliothèque qui reste une valeur sûre quand on développe des jeux 2D simples en C++.

  • # Tutoriel pour android / cross-plateform

    Posté par (page perso) . Évalué à 1. Dernière modification le 14/12/14 à 08:23.

    (je me suis mange une erreur 500 en postant mon premier commentaire donc bon je vais faire plus court :/)

    Deja bravo pour cette nouvelle version. J'utilise moi-meme SFML pour l'ecriture d'un guitar-hero pour piano/synthe (plus precisement, je fais une reecriture de Linthesia ici, avec un peu de chance je vais devrais bientot atteindre mon objectif et ecrire un journal ici) et c'est toujours bon de voir que la bibliotheque sur laquel je me base est bien active

    Le port pour android/ios est particulierement interessant, cependant pour m'etre deja frotter a cela avec la SDL il y a un ou deux ans, j'avais rapidement laisser tomber car nulle part il y avait d'expliquer comment gerer les events systeme propre a android (application mise en background par l'OS et reveil de l'application), meme une question sur stackoverflow n'avais rien donner.

    Du coup un tutoriel de A-Z (mise en place de l'environnement a generation de l'APK, jusqu'a arriver a un micro-jeu qui fonctionel vraiment) serait plus que bienvenu. Un autre tuto sur comment faire un jeu multi-plateforme et la ce serait que du bonheur.

    • [^] # Re: Tutoriel pour android / cross-plateform

      Posté par . Évalué à 3.

      Je ne suis pas l'auteur et je ne suis pas impliqué dans le développement, je ne suis qu'un utilisateur. Mais il existe un forum SFML sur lequel tu peux poser ta question. Les dev sont présents et te répondront je pense.

    • [^] # Re: Tutoriel pour android / cross-plateform

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

      (je me suis mange une erreur 500 en postant mon premier commentaire donc bon je vais faire plus court :/)

      Quels jour et heure approximatives, histoire d'ouvrir une entrée dans le suivi en récupérant le log ?

      • [^] # Re: Tutoriel pour android / cross-plateform

        Posté par (page perso) . Évalué à 1. Dernière modification le 14/12/14 à 15:26.

        aujourd'hui vers 2~6 heures du matin heure francaise.

        • [^] # Re: Tutoriel pour android / cross-plateform

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

          Prévisualisation et envoi à 5h18, prévisualisation et envoi à 5h19 : les deux ont mis plus de 30s à être traités et sont tombés en timeout. C'est un effet de la sauvegarde complète (MySQL notamment) à ce moment-là.

          Commentaire récupéré :

          Tutorial sur comment faire un jeu "cross plateform"

          Deja bravo pour cette nouvelle version, faisant moi-meme un jeu base sur la SFML (de maniere plus precise, je suis entrain de reecrire Linthesia, un 'guitar-hero' pour piano/synthe), cela fait bien plaisir de voir que le projet est toujours actif et continue a s'ameliorer

          J'aimerai savoir s'il y a deja des tutoriaux sur comment faire un jeu Android baser sur la SFML. il y a un/deux ans j'avais essayer avec la SDL, cela compilait parfaitement avec le NDK, mais il y avait des soucis sur la prise en charge des evenements systeme (application mise en background/application reprend la main etc.) et meme en posant la question sur stackoverflow personne n'avait pas m'apporter de reponse et du coup j'avais abandonne.

          Donc un tutorial expliquant comment mettre en place un environnement de build, gerer les particularites d'android/ios, et generer un APK qui va bien serait plus que le bienvenu. le fin du fin serait aussi de couvrir (dans un autre tuto au besoin), les techniques pour permettre de creer un jeu qui compile et est "jouable" sur toutes les plateformes (pour la SDL il me semble que souvent la technique utilise est d'incruster un le pave directionnelle et quelque touche dans les coins de l'ecran).

  • # La SDL ne gère pas que le graphisme

    Posté par . Évalué à 4.

    Même si c'est vrai que c'en est le cœur, la SDL ne gère pas que ça, ou alors ils en ont enlevé (je ne connais pas la v2).

    Je cite la référence de la 1.2, au niveau des catégories.

    Initialization
    Video
    Window Manager
    Event Handling
    Joystick
    Audio
    CDROM
    Threads
    Timers

    Que ce soient les timers, les cdrom, les threads ou l'audio, ce n'est pas "juste le graphisme".
    La seule chose qui manquerait à la SDL, si elle voulait rester «bas niveau» mais en même temps être «complète», ce serait le réseau.

    La SFML n'est pas, à mon avis, totalement dans la même catégorie. Elle est plus haut niveau (gestion de l'openGL, des formes, des fontes, etc) ce qui peut être à la fois un argument en faveur, ou contre elle (pour moi, c'est plutôt en faveur, compte tenu du fait que la SFML est quasi uniquement orientée jeux vidéo. En tout cas, je ne connais aucun logiciel qui ne soit un jeu qui l'exploite, contrairement à la SDL).

    • [^] # Re: La SDL ne gère pas que le graphisme

      Posté par . Évalué à 2. Dernière modification le 14/12/14 à 17:10.

      La seule chose qui manquerait à la SDL, si elle voulait rester «bas niveau» mais en même temps être «complète», ce serait le réseau.

      Pour ça il y a la SDL_net :
      version 2.0
      version 1.2

      (je le sais car grâce à elle DOSBox prend en charge le jeu en réseau avec les jeux DOS)

      Il y a aussi d'autres compléments, tels que SDL_ttf ou SDL_image.

      "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

    • [^] # Re: La SDL ne gère pas que le graphisme

      Posté par . Évalué à 1.

      Je suis sans doute allé un peu vite mais bon, ce n'est pas faux de dire que SFML est plus complète que SDL.

      • [^] # Re: La SDL ne gère pas que le graphisme

        Posté par . Évalué à 3.

        Que fait de plus, exactement, la SFML? Et que veut cibler la SDL? Et la SFML? Je parle des libs pures, hein, bien sûr. Je sais que la SDL en fait beaucoup moins, mais pour moi, c'est aussi une de ses forces.
        Less is more, comme ils disent.

        Pour moi tu n'a pas été qu'un peu trop vite, mais beaucoup, bien que je ne dénigre pas le fait que la SFML se soit très nettement améliorée depuis la v2 (franchement, la v1… j'ai essayé de m'en servir, mais j'ai arrêté quand j'ai constaté l'impossibilité de savoir la surface utilisée par un sprite). Enfin, je n'ai pas non plus trop insisté avec la v2, je ne me suis pas relancé dans un projet graphique depuis pas mal de temps.

Suivre le flux des commentaires

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