Journal Code source d'X-Blaster Dominator disponible

48
28
jan.
2014

Il était temps que je libère le code source d'X-Blaster Dominator. Si j'ai mis autant de temps, c'est parce que j'ai pas mal de projets en cours et qu'il m'est très difficile de tout gérer en même temps. Pour le moment, je n'ai fais que jeter le source sur mon github afin que les personnes intéressées puissent y jeter un œil, soumettre des améliorations et pourquoi pas le compiler chez eux. Le jeu n'est pas encore terminé, je n'ai pas toujours écrit les dernières lignes de codes concernant les deux derniers niveaux.

Pour ceux qui sont du genre perfectionnistes, je voudrais préciser encore une fois que c'est mon premier jeu ainsi que programme en C++. Je n'ai jamais fais d'études dans le développement, et mon niveau scolaire s'arrête à un simple CAP, donc soyez indulgent sur le contenu du code source.

Concernant la licence, j'ai décidé de ne pas me prendre la tête avec cela et c'est donc la GPLV3 qui a été retenu. D'ailleurs se sera le cas pour la majorité de mes autres projets. Si vous souhaitez contribuer au projet, il n'y a pas de problèmes, je suis ouvert à toutes les propositions et améliorations sans que cela demande de remplacer tout le code (autant repartir sur une nouvelle base).

Pour compiler le source en l'état actuel, il faudra disposer des librairies SFML2 et boost. Je n'ai pas eu le temps de vous créer un makefile afin de simplifier la compilation, mais ça ne serait tarder, car comme je l'ai dis je n'ai fais que jeter un backup sur mon github.

https://github.com/shingo-san/x-blaster-dominator

  • # Ok, mais de quoi s'agit-il ?

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

    C'est cool de libérer un projet, mais c'est plus sympa de dire en sus de quoi il s'agit et éventuellement de donner une ou deux captures d'écran.

    [ Spoiler ]
    - C'est une shoot'em up 2D à scrolling vertical, comme en en voyait beaucoup dans les années 80-90.
    - Des screenshots ? → http://www.retrogamespace.com/t1438-x-blaster-dominator-un-shmup-2d
    [ /Spoiler ]

    Sed fugit interea, fugit inreparabile tempus, singula dum capti circumvectamur amore

    • [^] # Re: Ok, mais de quoi s'agit-il ?

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

      Tu aurais pu mettre un lien vers linuxfr ! Il y a plein de journaux qui présentent les différentes étapes du projet.

      Merci à toi Shingo, c'est un beau cadeau que tu nous fait là.

    • [^] # Re: Ok, mais de quoi s'agit-il ?

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

      Oui désolé, je pensais que le jeu est un peu connu sur linuxfr. Pour les screenshots, on en trouve un peu partout sur Internet, idem pour les vidéos. Tu peux te rendre sur ce site pour avoir plus d'informations : http://injection-studio.com/games/x-blasterdominator/

      • [^] # C'est triste que les devs soient si mauvais commerciaux !

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

        Bein ouais quoi ! Si tu veux que les gens s'intéressent à ton projet, compile ton code et joue à ton jeu, il faut leurs en donner l'envie… et ça, ça passe par capture d'écran et compagnie …

        Et puis, mieux vaut factoriser non? Au lieu de faire perdre 3 minutes à N personnes pour qu'elles cherchent sur google (ce qui veut dire N requêtes google pour le même terme de recherche, et c'est pas très très "green"), tu prends toi c'est 3 minutes pour les faire économiser aux autres!

        • [^] # Re: C'est triste que les devs soient si mauvais commerciaux !

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

          Le jeu a déjà été compilé et est disponible pour plusieurs distributions. J'ai déjà présenté le projets plusieurs fois sur linuxfr et je pense qu'aujourd'hui les gens préfèrent mettre la tête dans le source, enfin j'espère. Si les membres de linuxfr souhaitent toucher au jeu compilé c'est disponible sur le lien que j'ai donné.

          Alors peut-être que j'aurais dû faire un gros packaging avec d'un coté le source et de l'autre la version windows (binaire + installe) et celle de Linux (binaire + installe). Enfin comme je l'ai dis, je manque de temps pour m'occuper de tout correctement. Si vraiment des gens sont intéressés par le projets, je ferais en sorte de tout mettre en place pour que tout le monde soit content.

    • [^] # Re: Ok, mais de quoi s'agit-il ?

      Posté par (page perso) . Évalué à 3. Dernière modification le 28/01/14 à 11:25.

      Le plus simple est de lier aux autres journaux LinuxFR:
      X-Blaster Dominator disponible en version beta 0.4
      X-Blaster Dominator : beta disponible

      il y avait dans les commentaires une demande de participer au libre, bref de libérer, voila chose faite!

      Edit : grillé!

  • # Bien joué!

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

    Tu rejoins le club des auteurs de jeux libres sur linuxfr !

    Est-ce que tu utilises la GPLv3 aussi bien pour le code que pour les données ?

    Est-ce qu'un mode deux joueurs est prévu?

    http://devnewton.bci.im

    • [^] # Re: Bien joué!

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

      Merci :)

      Oui, tout est GPLV3. Un mode deux joueurs auraient été sympa, c'est faisable mais, du moins pas en écran séparé car l'espace de déplacement est bien trop petit pour deux vaisseaux. S'il fallait ajouter un mode deux joueurs, je pense que serait plus dans un style coopération où chaque joueur à une zone de combat qui lui est propre. Cela donnerait un niveau avec deux types de décors et des vagues différentes.

      • [^] # ecran 3D

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

        Sur les televiseurs 3D il est possible d'utiliser tout l'espace de l'écran car chaque joueur a des lunettes polarisées. Quid du support de cette fonctionalité sous linux ?

        • [^] # Re: ecran 3D

          Posté par . Évalué à 1.

          j'ai comme un doute. Avec cette technique, chaque joueur va devoir jouer en fermant un oeil non?

          • [^] # Re: ecran 3D

            Posté par . Évalué à 3. Dernière modification le 28/01/14 à 14:42.

            Oui. Peu de télés 3D supportent ce mode (sur les deux yeux) de split, très récent.

            Edit: il est possible de hacker des lunettes assez facilement pour les télés à écran polarisés (moins répandues que ceux à lunette actives…) http://www.instructables.com/id/3D-TV-Split-Screen-Gaming-SimulView/

          • [^] # Re: ecran 3D

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

            Pourquoi ?

            • [^] # Re: ecran 3D

              Posté par . Évalué à 3.

              Je n'ai pas de TV 3D, mais pour moi une telle TV affiche 2 images, une image pour l'oeil gauche, une pour l'oeil droit. chaque verre de lunette filtre l'image kivabien.
              Donc à moins d'avoir une paire de lunettes avec 2 verres gauches et une avec 2 verres droits, je vois mal comment chaque joueur peut avoir une unique image pour les 2 yeux.

              Si quelqu'un connait mieux que moi le fonctionnement de ces technos, je serais ravi d'être confirmé ou contredit.

              • [^] # Re: ecran 3D

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

                j'imagine que si la tv « envoie » 2 images, une pour la gauche une pour la droite, elle peut aussi en envoyer quatre.

              • [^] # Re: ecran 3D

                Posté par . Évalué à 2.

                Donc à moins d'avoir une paire de lunettes avec 2 verres gauches et une avec 2 verres droits, je vois mal comment chaque joueur peut avoir une unique image pour les 2 yeux.
                

                Tu as finalement la réponse mais elle ne semble pas te convenir?

                • [^] # Re: ecran 3D

                  Posté par . Évalué à 4.

                  Si on cumule
                  - le nombre de personnes qui ont une TV 3D
                  - le nombre de ces personnes qui n'ont pas de lunettes actives
                  - le nombre de ces personnes prêtes à bidouiller leurs lunettes passives pour que ça marche
                  - le nombre de joueurs de X-Blaster Dominator parmi ces personnes

                  Il doit pas rester des dizaines de milliers de joueurs.

                  Si j'étais le dev du jeu, j'estimerais que le l'investissement en temps de dev n'en vaut pas la peine

                  Ca reste un avis, je ne veux pas parler à la place de shingo ou des joueurs intéressés par la feature.

                  • [^] # Re: ecran 3D

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

                    Je n'ai pas demandé au dev de coder ça dans son jeu, je demandais juste ou en etait le support linux.
                    D'apres ce que j'ai compris en fait la tv fait ça toute seule, elle detecte le "split view" automatiquement.

      • [^] # Re: Bien joué!

        Posté par . Évalué à 4.

        […] un style coopération où chaque joueur à une zone de combat qui lui est propre. Cela donnerait un niveau avec deux types de décors et des vagues différentes.

        Quel est l'intérêt par rapport à 2 joueurs qui lancent chacun le je de leur coté ?

        En mode multijoueur (2 joueurs), il y a du choix :

        • un joueur qui fait les déplacements et un qui tire (je n'ai jamais joué à ton jeu je sais pas si la partie tire se contente d'être un appuie continue sur une touche ou s'il faut aussi viser/choisir son arme)
        • taguer les ennemis pour que ce soit l'un ou l'autre des joueurs qui doit le tuer (pas de collision entre les vaisseaux des 2 joueurs pour utiliser tout l'écran)
        • les 2 joueurs tires sur n'importe quel ennemis, mais les bosse doivent être gérés à 2 et tu peut imaginer des combinaisons (si les 2 joueurs ont la même armes elle est plus puissante, ils peuvent se réparer entre eux, etc)

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # Apprentissage du C++

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

    Tu indiques n'avoir suivi aucune formation, par simple curiosité peux-tu nous expliquer ton parcours, notamment comment et pourquoi tu as appris le C++ ?

    • [^] # Re: Apprentissage du C++

      Posté par . Évalué à 3.

      Et aussi pourquoi être passé de C# à C++?
      C'était marqué dans le lien du premier message vers les screenshots et j'avoue que ça m'a surpris..

      • [^] # Re: Apprentissage du C++

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

        Alors, pourquoi je suis passé du C# au C++. C'est assez simple, quand j'ai commencé mon apprentissage en programmation, le C# possédait pas mal davantage en plus d'avoir XNA pour le développement de jeux vidéo. Je me suis donc documenté et j'ai programmé tout le jeu en C#. Seulement voilà, je me suis confronté à une politique très fermé de Microsoft où il faut absolument avoir un abonnement chez eux pour accéder à certaines fonctions et publier le jeu sur le Xbox Live. Je n'ai pas du tout aimé cette limitation, et de plus XNA et le C# sont trop lourds. Impossible de porter correctement un projet XNA vers Linux, du moins au moment que je m'y attaquais, et il faut absolument posséder une machine répondant aux exigence de XNA en plus du framework .NET4. Chez plusieurs amis, le jeu ne pouvait se lancer car ils avaient leur installe du .NET4 corrompue et le jeu ne pouvait pas du tout fonctionner sur des pc trop anciens…

        J'en ai eu marre, j'ai cherché un langage qui me correspondait, j'ai trouvé le C++ avec SFML2. J'ai essayé Python, mais je trouve la syntaxe trop simple d'usage et j'avoue avoir du mal à m'y retrouver. Donc j'ai pris ArchLinux et Netbeans pour le développement. Au début j'avoue c'était difficile de m'y retrouver, car j'avais pas mal de choses à assimiler : apprendre à utiliser Linux en profondeur notamment la compilation, me documenter sur SFML2 et surtout apprendre à programmer en C++. Pendant une semaine je me suis un peu arraché les cheveux, mais bon au final j'ai appris énormément de choses qui me serviront plus tard. De plus, le jeu demande rien comme ressources et peut donc fonctionner sur des machines très anciennes.

        J’aurais aimé développé un jeu avec des meilleurs graphismes, mais cela demande bien trop de travaille. A la base, je voulais que chaque niveau possèdes des décors animés, mais bon ce n'est pas évident de trouver des graphistes motivés.

        Concernant mon parcours, disons que j'ai toujours été très attiré par la programmation. Je n'ai jamais vraiment créer quelque chose, mais je codais un peu en Delphi lorsque j'étais au collège et je sais régulièrement du PHP pour mes sites personnels. J'ai abandonné la programmation depuis plus de 15 ans, mais avec l'arrivé des nouveaux langages et des librairies comme XNA et SFML, ça ma donne envie de m'investir là dedans de nouveaux.

        • [^] # Re: Apprentissage du C++

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

          Une semaine seulement à s'arracher les cheveux, bravo plutôt impressionnant.
          Se mettre au C++ car tu as du mal à t'y retrouver en Python voila qui ne doit pas être courant ;)

        • [^] # Re: Apprentissage du C++

          Posté par . Évalué à 4.

          Quand tu dis qu'il faut être indulgent sur le code, je trouve que tu te dévalorises beaucoup. Tu as le style d'un développeur Java (du coup, tu utilises un sous-ensemble de C++), mais ça fonctionne très bien, le code est très compréhensible.

        • [^] # Re: Apprentissage du C++

          Posté par . Évalué à 4.

          J'ai essayé Python, mais je trouve la syntaxe trop simple d'usage

          C'est la première fois que je l'attend celle-là

          • [^] # Re: Apprentissage du C++

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

            je l'attend celle-là

            Un peu de patience : normalement elle arrive après-demain.

            * Ils vendront Usenet^W les boites noires quand on aura fini de les remplir.

  • # Niveaux à 2 deniers ?

    Posté par . Évalué à 1.

    Nan en fait c'est juste une typo ;-)

    les deux deniers niveaux

    kentoc'h mervel eget bezan saotred

  • # Chapeau

    Posté par . Évalué à 0.

    Hello,

    Bravo, moi j'ai suivi tout un cursus d'informatique, mais je ne suis pas capable de faire ce que tu as fait (pour un Bac+8 quand même, la honte) ! Je ne sais pas si j'aurais le temps d'essayer ton jeu et de te faire d'éventuels retours, mais j'adore les graphismes dans les captures d'écran.

    Et merci d'avoir libéré ton code et expliqué très clairement tes raisons pour le passage de C#/Win à C++/Linux. C'est la première fois que je lis ces arguments de la part d'un programmeur de jeu (d'habitude on entend plutôt dire que Win est bcp mieux pour les jeux…). Mais ça fait du bien de l'entendre par quelqu'un d'impliqué dans le domaine !

    Bonne continuation sur tes différents projets !
    PS: vu ta capacité à apprendre de nouveaux langages extrêmement rapidement, je te conseille de jetter un oeil à un bouquin de grammaire française, ça te servira sûrement plus tard… Et en plus ça peut être vachement fun quand on s'intéresse à l'étymologie (histoire) des mots ou expressions :)

    • [^] # Re: Chapeau

      Posté par (page perso) . Évalué à 1. Dernière modification le 03/02/14 à 18:45.

      Merci, ça fait plutôt plaisir à lire. Pour la grammaire, c'est surtout que je me relis par forcément après avoir écrit, mais c'est vrai qu'un petit bouquin ne me ferait pas du mal.

      Oui, j'ai éprouvé plus de plaisir à développer sous Linux que Windows. Au départ, je voulais faire un jeu exclusivement pour Linux, mais trop d'amis voulait l'essayer sous Windows alors donc fallait rajouter un peu de code. Le problème avec Windows, c'est qu'il faut passer du temps à se documenter sur certaines fonctions qui ne sont pas tout le temps les mêmes entre Windows XP / 7 / 8.

      Par exemple, pour désactiver temporairement l'écran de veille, j'ai dû écrire ce code :

      #if defined _WIN32
              bool screensaver = false;
              if (!SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, NULL, SPIF_UPDATEINIFILE)) {
                  SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, NULL, SPIF_UPDATEINIFILE);
                  screensaver = true;
              }  
      #endif
      
      #if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
              SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);
      #endif

      Alors que pour Linux il suffit simplement de créer cette fonction qui remet le compte à rebours à zéro :

      #ifdef __linux 
          void GamePadManager::fakeKey() {
              if (fakeKeyClock.getElapsedTime().asMilliseconds() - fakeKeyLastTime > 5000) {
                  system("xscreensaver-command -deactivate > /dev/null");
                  fakeKeyLastTime = fakeKeyClock.getElapsedTime().asMilliseconds();
              }
          }
      #endif

Suivre le flux des commentaires

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