Forum Programmation.c++ Quelle bibliothèque choisir pour un petit jeu?

Posté par (page perso) . Licence CC by-sa
Tags :
3
7
juil.
2013

Bonjour,

Je souhaite faire pendant les vacances un petit clone libre de Wonderland (excellent jeu au passage). C’est en gros un Sokoban amélioré car il y a pleins d’objets aux propriétés différentes, des monstres, et il faut prendre des clés (ici des espèces de pièces) pour ouvrir la grille qui permet d’accéder à la sortie.

Je pensais faire le jeu avec la SFML et Qt pour les menus. D’un côté je me dis que ça me permet de toucher aux deux frameworks, que la SFML me facilitera la tâche pour faire le jeu, mais en même temps je me dis que ça sera peut-être plus simple de tout faire en Qt (comme les KDE games).

J’ai assez peu d’expérience dans la création de jeu vidéo, mais je pense que je pourrais me débrouiller. Bien sûr je m’attaque à la logique du jeu en premier mais je préfère réfléchir tout de suite à ce que je vais utiliser.

Par ailleurs je compte faire la traduction en anglais directement, je suppose que je dois utiliser gettext? (j’ai lu que Qt avait son équivalent mais en mieux intégré à Qt et avec Qt Linguist qui facilite bien la tâche).

Mon but étant de faire un jeu simple mais qui possède toutes les fonctionnalités que l’on attend d’un jeu (menu, traductions, sauvegarde de la progression, etc), que me conseillez-vous d’utiliser?

Merci d’avance.

  • # My 2 cents

    Posté par . Évalué à 1.

    Si j'avais à développer un jeu en 2d, j'utiliserai Löve, parce que ça me parait simple et complet (gestion de l'affichage, du son, des manettes de jeu, moteur physique intégré — Box2d), bien documenté, que des gens font des trucs cools avec et que j'aime bien le Lua.
    Toutefois, ce n'est pas vraiment la panacée si on veut une GUI complexe (pour les menus et les boutons, tu va devoir les dessiner et les gérer "à la main"). De ce coté, Qt est mieux fourni et ça me semble aussi être un bon choix pour un jeu de ce type.

    Je donne quelques pistes pour la 3d, mais je n'y ai jamais touché :
    - Ogre
    - Irrlicht
    - SDL+OpenGL
    - Qt+OpenGL

    Bon courage !

    • [^] # Re: My 2 cents

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

      Le truc c’est que je veux faire le jeu en C++, et d’ailleurs je me dit que plus tard je pourrais porter le jeu sur Android si ça prend (puisque la SFML sera bientôt disponible sur Android, dixit le site officiel), et que Lua a l’air un peu galère à faire tourner sous Android.

      Écrit en Bépo selon l’orthographe de 1990

  • # Qt et le son

    Posté par . Évalué à 1.

    QT / Linux gèrait (il y a 1 ou 2 ans) le son à condition qu'il y ait un serveur de son qui soit lancé (je ne me souviens plus des détails). Donc sous Linux ce n'est pas une solution "tout-QT" et ça rend le déploiement difficile à cause de cette dépendance au serveur de son. Alors spécialement pour le son j'avais utilisé la lib SDL.

    Je ne sais pas si cela a été amélioré dans les récentes versions de QT.

    • [^] # Re: Qt et le son

      Posté par (page perso) . Évalué à 1. Dernière modification le 08/07/13 à 13:16.

      Il y en a qui démarrent des jeux sans serveur de son lancé? Normalement un coup de Phonon et ça roule. De toute façon j’en suis clairement pas au stade de mettre de la musique et des sons… ^

      P.-S.: C’est Qt et pas QT (QuickTime).

      Écrit en Bépo selon l’orthographe de 1990

      • [^] # Re: Qt et le son

        Posté par . Évalué à 1.

        La lib SDL n'a pas besoin de serveur de son, je crois. Pourquoi Qt en aurait-il besoin ?
        Et des logiciels tels que VLC, ont-il besoin d'un serveur de son ?

        • [^] # Re: Qt et le son

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

          Mais franchement, combien de personnes sur Terre jouent à un jeu vidéo sans lancer de serveur de son? De toute façon, comme dit plus haut je n’ai pour l’instant pas l’intention de mettre du son, on verra si j’ai envie de continuer à développer le jeu quand j’aurais terminé la base).

          Écrit en Bépo selon l’orthographe de 1990

          • [^] # Re: Qt et le son

            Posté par . Évalué à 2.

            combien de personnes sur Terre jouent à un jeu vidéo sans lancer de serveur de son?

            Fait un sondage ! ;)
            Pour ma part je ne sais même pas à quoi sert un serveur de son. Et sur Windows aussi il y a un serveur de son ?

            • [^] # Re: Qt et le son

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

              Fait un sondage ! ;)

              Brillante idée!

              Pour ma part je ne sais même pas à quoi sert un serveur de son.

              Si tu as ALSA, OSS, PulseAudio, Jack ou sndio (OpenBSD), tu as un serveur de son.

              Et sur Windows aussi il y a un serveur de son ?

              Bien sûr (je retrouve pas le nom). Et sous Mac OS X aussi (CoreAudio).

              Écrit en Bépo selon l’orthographe de 1990

              • [^] # Re: Qt et le son

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

                Non, ALSA et OSS ne sont pas des serveurs de son.

                • [^] # Re: Qt et le son

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

                  Ah ouais, mais ce sont quand même des systèmes de son non?

                  Écrit en Bépo selon l’orthographe de 1990

                  • [^] # Re: Qt et le son

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

                    Oui, ce sont deux systèmes de son disponibles au niveau du noyau, rien de plus.

                    Sans ALSA ou OSS, tu vas rigoler pour avoir du son… Alors qu'il est parfaitement possible de se passer de PulseAudio, Jack et compagnie.

                    • [^] # Re: Qt et le son

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

                      Oui je connais la différence mais je pensais que tout ça s'appelait serveur de son.

                      Écrit en Bépo selon l’orthographe de 1990

  • # Distribution

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

    Pour faire une interface avec SFML, tu peux essayer http://sfgui.sfml-dev.de/

    Si tu souhaites que ton jeu soit joué, il faut prévoir de fournir des binaires, des paquets et des installeurs pour un maximum de combinaisons OS/distrib/CPU. Ce qui n'est pas forcément simple avec C++ et des non fournis par les distros…

    http://devnewton.bci.im

    • [^] # Re: Distribution

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

      Pour faire une interface avec SFML, tu peux essayer http://sfgui.sfml-dev.de/

      Déjà j’arrive sur la documentation:

      SFGUI is built with a development version of SFML 2.0. This means you can not use the SFML 2.0 release candidate! Normally this requires you to build the proper SFML development version from sources. However, to ease getting starting with SFGUI, the binary releases contain pre-built SFML libraries, ready to use.

      Ça me fait un peu peur, et c’est pas disponible dans les dépôts de la plupart des distributions (et encore moins sur Android du coup). Plus j’y pense, plus je me dis que faire un truc avec uniquement Qt ça tournerait partout (à part sur FirefoxOS?).

      Si tu souhaites que ton jeu soit joué, il faut prévoir de fournir des binaires, des paquets et des installeurs pour un maximum de combinaisons OS/distrib/CPU. Ce qui n'est pas forcément simple avec C++ et des non fournis par les distros…

      Bah je verrais plus tard (déjà il faudrait que j’ai quelque chose à empaqueter!), et compiler deux fois pour deux architectures c’est pas la mort (par contre j’ai pas d’appareil ARM sur lequel compiler chez moi).

      Écrit en Bépo selon l’orthographe de 1990

      • [^] # Re: Distribution

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

        Bah je verrais plus tard

        Justement, mon conseil est de prendre en compte ce problème dès le début, car c'est un gros boulot et c'est dans les premières phases du projet qu'il est intéressant de le faire tester pour avoir des retours.

        compiler deux fois pour deux architecture

        En faisant des binaires portables, ça fait 3 architectures (x86, amd64, arm) fois 4 OS (GNU/Linux, Android, Mac, Windows) : 12 variantes.

        Si tu rajoutes des paquets GNU/Linux, deb et rpm, des dmgs pour Mac et des installeurs pour Windows, tu vois que c'est loin d'être négligeable.

        http://devnewton.bci.im

        • [^] # Re: Distribution

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

          Ce se sera mon premier vrai projet, donc ça mettra du temps, je ne le finirais peut-être même pas.

          Sinon c'est possible de faire de la compilation croisée, non? Au moins pour toutes les plateformes sauf Mac OS X (faudrait que j'essaie de faire tourner un Hackintosh dans une machine virtuelle).

          Pour les paquets, sur Archlinux c'est pas trop dur et je connais assez bien. Pour le reste ça sera la découverte.

          Écrit en Bépo selon l’orthographe de 1990

          • [^] # Re: Distribution

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

            Voilà, si tu veux faire un truc qui marche, il va te falloir installer des machines virtuelles, te taper des docs des compilos, apprendre à faire des paquets (Arch est une exception, les autres systèmes sont assez complexes) …

            A propos de Arch, cette distrib est très à jour, mais si tu passes sous debian, il faudra embarquer SFML et plein d'autres libs.

            http://devnewton.bci.im

            • [^] # Re: Distribution

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

              Voilà, si tu veux faire un truc qui marche, il va te falloir installer des machines virtuelles, te taper des docs des compilos, apprendre à faire des paquets (Arch est une exception, les autres systèmes sont assez complexes)

              Je ferais ça au fur et à mesure (c'est aussi le but).

              A propos de Arch, cette distrib est très à jour, mais si tu passes sous debian, il faudra embarquer SFML et plein d'autres libs.

              Ah ouais. Je commence à capter la misère de ceux qui veulent distribuer leur programme.

              Écrit en Bépo selon l’orthographe de 1990

            • [^] # Re: Distribution

              Posté par (page perso) . Évalué à 2. Dernière modification le 10/07/13 à 18:34.

              C’est possible d’utiliser la bibliothèque du système et d’utiliser une version avec le jeu sinon?

              Ou alors je fais carrément un gros binaire compilé en statique pour parer à toutes les situations.

              Écrit en Bépo selon l’orthographe de 1990

              • [^] # Re: Distribution

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

                C’est possible d’utiliser la bibliothèque du système et d’utiliser une version avec le jeu sinon?

                Oui.

                Ou alors je fais carrément un gros binaire compilé en statique pour parer à toutes les situations.

                S'il y a un bug ou une faille de sécurité dans une des libs, l'utilisateur ne peut pas la remplacer.

                Le mieux c'est de toujours utilisé les libs de l'OS, mais ça veut dire se taper les versions obsolètes de debian.

                http://devnewton.bci.im

                • [^] # Re: Distribution

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

                  Le mieux c'est de toujours utilisé les libs de l'OS, mais ça veut dire se taper les versions obsolètes de debian.

                  Ouais ça je sais j’ai bien suivi les discussions à ce sujet. Au pire je recompilerais avec la SFML 2 en statique (je peux faire ça non?).

                  Écrit en Bépo selon l’orthographe de 1990

                  • [^] # Re: Distribution

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

                    Oui, mais teste avant, car ça veut dire qu'il faut compiler en statique SFML, les dépendances de SFML, les dépendances des dépendances de SFML, etc…

                    http://devnewton.bci.im

            • [^] # Re: Distribution

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

              si tu passes sous debian, il faudra embarquer SFML

              Mauvais exemple, SFML est fournie dans les dépôts de Wheezy ;)
              (en version 1.6 par contre, pas en 2.0, donc ta remarque sur l'obsolescence est pertinente)

              • [^] # Re: Distribution

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

                C'est un sale temps pour les développeurs C++ de jeux libres: SDL, SFML, allegro, clanlib… Toutes les bibliothèques changent de versions majeures!

                http://devnewton.bci.im

  • # Qt 5

    Posté par . Évalué à 1.

    En ce moment, je réalise un jeu avec Qt5. Pour l'UI, le QML est très sympa puis tu as à peu près tout ce qu'il faut dans cette lib.
    En, plus elle est/sera porté sur beaucoup de plate-forme (dont Android et iOS).
    C'est un projet réactif (un bug que j'avais rapporté a été en corrigé en quelques jours) avec une bonne communauté.

    Pour info, j'avais commencé ce jeu avec SFML et SFGUI mais j'ai laissé tombé. La SFGUI ralentissait considérablement le jeu (ça s'est peut être amélioré depuis).

    • [^] # Re: Qt 5

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

      Merci, ça confirme mon choix pour l'interface graphique. Tu fais ton jeu uniquement avec Qt du coup?

      Écrit en Bépo selon l’orthographe de 1990

Suivre le flux des commentaires

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