Journal Créer son propre jeu de plateforme en forkant Newton Adventure

Post√©¬†par¬† (site Web personnel) . Licence CC¬†By‚ÄĎSA.
21
2
juin
2012

Bonjour Nal,

Aujourd'hui je t'écris, car j'ai bien avancé le travail de documentation de mon projet, Newton Adventure.

Comme je sais que tu rêves de créer un jeu de plateforme libre, ce travail t'offre une opportunité: créer son propre jeu de plateforme en forkant Newton Adventure.

Newton Adventure n'est pas un moteur de jeu, mais son code est libre et pas très difficile à comprendre, il est donc relativement facile de créer son propre jeu en le forkant.
La première étape pour créer un dérivé de Newton Adventure consiste à récupérer les sources et à compiler le jeu ainsi que l'éditeur de niveaux. Cette procédure est décrite ici.

Il faut ensuite remplacer les données du jeu (graphismes, sons, niveaux). La structure des données est documentée sur cette page, mais le plus simple consiste à éditer les données existantes: les images et les sons se remplacent facilement, tandis que les niveaux (fichiers *.tmx) demande d'utiliser l'éditeur fourni.

Editeur

Pour tester, on peut soit recompiler le jeu, soit mettre les données dans un autre dossier que celui par défaut et utiliser la procédure de test.

A titre d'exemple, j'ai utilisé des graphismes du site opengameart pour créer bonhomme aventure, un jeu qui ne casse pas des briques, mais tout à fait fonctionnel:

Bonhomme aventure

  • # Merci

    Post√©¬†par¬† . √Čvalu√©¬†√†¬†6.

    Sans vouloir être rabat-joie ce n'est pas vraiment :

    Créer son propre jeu de plateforme

    C'est plut√īt un mod de Newton Adventure.

    C'est tout de même super chouette. Et ça fait un moment que je me suis promis de tester ton jeu. La seule réticence, n'en étant pas vraiment une, c'est que ma copine devienne addict et n'en démorde pas, étant elle-même attirée par les jeux de plate-forme :)

    • [^] # Re: Merci

      Post√©¬†par¬† . √Čvalu√©¬†√†¬†10.

      Monsieur Tatillon

      Tu fais un concours avec Tanguy Ortolol?

      Rien a voir : il ne vous fait pas penser à quelqu'un ce monsieur avec sa petite moustache et ses cheveux ?

    • [^] # Re: Merci

      Post√©¬†par¬† . √Čvalu√©¬†√†¬†2.

      Sans vouloir √™tre rabat-joie […] C'est plut√īt un mod de Newton Adventure.

      Sans vouloir être rabat-joie, il suffit de lire la définition que tu donnes pour voir que ce qu'il propose n'est pas un mod.

      Un mod (de l'anglais mod, abréviation de modification) est un jeu vidéo créé à partir d'un autre, ou une modification du jeu original, sous la forme d'un greffon qui se rajoute à l'original

      Ce qu'il propose n'est ni un greffon, ni un rajout √† l'original. Un patch ou une modification directe du code d'une application n'est pas un greffon … Et remplacer des donn√©es ne constitue pas un rajout (qu'on modifie le chemin d'acc√®s dans le code ou les fichiers directement, les donn√©es d'origine ne sont plus accessibles par le logiciel modifi√©).

    • [^] # Re: Merci

      Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†4.

      La notion de Mod s'applique surtout aux jeux propri√©taires o√Ļ on a un moteur fixe et des modules personnalisables. Dans le monde libre, cette distinction ne s'applique plus puisqu'on peut tout changer!

      J'ai commencé à documenter pour permettre à des graphistes contributeurs de pouvoir créer et tester leurs propres niveaux, ce qui ressemble plus à du modding.

      Par contre, en modifiant le cŇďur du code, il est possible de se retrouver avec un jeu compl√®tement diff√©rent:

      • en bloquant les touches de d√©placement et en autorisant le personnage principal √† tourner sur lui m√™me, on se retrouve avec une sorte de Super Monkey Ball 2D.
      • en rajoutant des raquettes, on peut facilement cr√©er un jeu de flipper.
      • en supprimant la gravit√© et en mettant des graphismes vu de dessus, on a un rogue like.

      Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

      • [^] # Re: Merci

        Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†0.

        Par contre, en modifiant le cŇďur du code, il est possible de se retrouver avec un jeu compl√®tement diff√©rent: (…)

        Un peut comme Team Fortress pour Half-life.
        Faudrait un jour arrêter de fantasmer sur les non-possibilités du proprio, les mods pour les jeux proprios permettent tout ce que tu listes comme "avantages" du libre.

        C'est peut-être que mon point de vue, mais :
        - Fork : pas d'accord avec a direction d'un projet, ça clashe (la plupart du temps, rares sont les forks amicaux), on prend le code et suit un chemin différent, plus de synchro (ou peu) entre les deux projets qui vivent leur vies
        - Mod : modifs à quelques endroits, quelques fonctions remplacées (si bien fait : à coup de hook prévus par le concepteur, hop proprio et libre à égalité), et synchro permanente avec le projet initial.

        Bref, ce qui est décrit ici ressemble plus à du mod que du fork.

        • [^] # Re: Merci

          Post√©¬†par¬† . √Čvalu√©¬†√†¬†4.

          Quand on lit wikiédia, on lit que Valve a aidé à la création

          Il fut porté sur Half-Life par les développeurs du mod Team Fortress en collaboration avec Valve Software.

          Ceci laisse pensé que les modifications sont bien plus profondes que tu veux bien laissé le croire et qu'elles nécessitent l'accord du développeur du jeu.

          ¬ę Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. ¬Ľ Coluche

          • [^] # Re: Merci

            Post√©¬†par¬† . √Čvalu√©¬†√†¬†4.

            TF √©tait peut-√™tre un mauvais exemple, m'enfin le nombre de mods Half-life, Quake, etc. qui change compl√®tement le type de jeu, et sans modifier une seule ligne du moteur, parce que le jeu de base a √©t√© bien con√ßu pour √™tre tr√®s extensible…

        • [^] # Re: Merci

          Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†5.

          Je ne comprends pas comment on peut mettre ¬ę¬†pr√©vus par le concepteur¬†¬Ľ et ¬ę¬†proprio et libre √† √©galit√©¬†¬Ľ dans la m√™me phrase :/

          • [^] # Re: Merci

            Post√©¬†par¬† . √Čvalu√©¬†√†¬†3. Derni√®re modification le 02/06/12 √† 17:03.

            Tain les mecs vous êtes lourds, c'est un "mod", éventuellement une "total conversion" (qui reste un mod). Le journal ne parle justement pas de modifier le moteur mais de remplacer les assets, rien d'autre, donc c'est un mod (oui, remplacer, ça reste un mod).
            Et venir faire la leçon "non mais c'est libre donc c'est pas un mod", ça va bien quoi, faut arrêter de péter plus haut que son cul et de penser que comme c'est libre ça serait super cool de détourner le sens accepté des mots.

    • [^] # Re: Merci

      Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†7.

      la seule réticence, n'en étant pas vraiment une, c'est que ma copine devienne addict et n'en démorde pas

      Si un jour des femmes délaissent leurs compagnons pour jouer à mon jeu, je pense que je pourrais arrêter de travailler le gameplay!

      Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

  • # Dans la m√™me veine: utiliser le moteur de jeu de Frogatto

    Post√©¬†par¬† . √Čvalu√©¬†√†¬†4.

    Hello, guys.

    Je trouve super de montrer comment utiliser les ressources d'un jeu pour permettre √† d'autres d'en faire un nouveau. Il y a peu, un des auteurs de Frogatto a commenc√© une s√©rie d'articles et de vid√©os autour de la cr√©ation d'un jeu de plateforme (baptis√© Elisa’s Quest) r√©utilisant son moteur, que je m'empresse donc de partager ici:

    1. developing with the Frogatto engine,
    2. developing games using the Frogatto engine: part 1,
    3. developing games using the Frogatto engine: part 2,
    4. how event handling in Frogatto works,
    5. developing games using the Frogatto engine: part 3,
    6. a gentle introduction to Frogatto formula language.

    C'est malheureusement en anglais, mais se suit assez bien.

  • # question

    Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†4.

    Une petite question : Pourquoi utiliser maven (http://devnewton.bci.im/projects/newton_adventure/artifact/79dfe7445b086fb31c8e96b7fd961f86f32142c7 pour le pom) et ne pas utiliser le système de dépendances de maven ? C'est pourtant souvent la raison principale de l'utilisation de maven.

    mais son code est libre et pas très difficile à comprendre, il est donc relativement facile de créer son propre jeu en le forkant.

    Et surtout non commenté. Ca veut quand même dire que pour en faire quelque chose il va limite falloir faire du reverse sur ton code pour savoir comment ça fonctionne. Et c'est vraiment dommage.

    (histoire que mon commentaire ne soit pas mal pris : c'est pas pour taper sur ton projet, mais pour lui donner des chances. Un code libre et simple ne vaut malheureusement pas grand chose s'il n'est pas un peu comment√©. Et non, les commentaires c'est pas comme les freins…)

    • [^] # Re: question

      Post√©¬†par¬† . √Čvalu√©¬†√†¬†-1.

      Et surtout non commenté. Ca veut quand même dire que pour en faire quelque chose il va limite falloir faire du reverse sur ton code pour savoir comment ça fonctionne. Et c'est vraiment dommage.

      Oui et non. Un code n'a pas besoin d'être commenté si il est bien écrit : Il se suffit à lui même. Pire encore, un commentaire, lorsqu'il n'est pas mis à jour en même temps que le code, peut induire en erreur.

      • [^] # Re: question

        Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†8.

        Un code n'a pas besoin d'être commenté si il est bien écrit : Il se suffit à lui même

        Ca c'est ce que beaucoup de monde aimerait croire…

        Pour le second point oui, un commentaire qui n'est plus en relation avec le code est vraiment néfaste. Mais pas de commentaire aussi.
        Le truc c'est que beaucoup de monde croit être meilleur que les autres, écrit forcément un bon code, donc pas besoin de commentaire. Bon, ce qu'on dit pas c'est que souvent c'est parce que ça fait chier les dev de commenter donc on trouve des excuses.

        Maintenant il est évident que si ton commentaire n'est qu'une redite du code alors oui ça ne sert à rien.
        De la même manière il est (de mon point de vue en tout cas) absolument idiot de vouloir coder en autre chose qu'en anglais. Pourquoi ? Parce que souvent on se retrouve avec ce genre de code :

        // Pour chaque ligne du tableau, ...
        for(String row : array) {
          ...
        }
        
        

        Une fois écrit en anglias ça serait plus proche de :

        // for each row of array
        for(String row : array) {
          ...
        }
        
        

        Bon je dit pas que le deuxième cas n'existe pas, mais en général on va en anglais utiliser les mêmes mots. Donc on ne fait que réécrire le code dans un autre langage ce qui est idiot.

        Bref, tout ça c'est bien joli mais ça n'explique toujours pas pourquoi il faut commenter. Simplement pour indiquer l'intention. Expliquer qu'un for parcoure un tableau on s'en fiche. Par contre, expliquer pourquoi on parcoure le tableau est très important.

        Et dans le cas qui nous concerne ici, pour faire un jeu à partir de newton il faudra bien modifier le jeu, modifier le moteur du jeu. Et là, rien, nada. Comment fonctionne le moteur ? Aucune idée. Qui fait quoi, quelle classe, quel objet, rien. Je ne parle pas de commenter chaque ligne, mais au moins de décrire un peu ce qui s'y passe, à quoi ça sert.

        Et pour en revenir √† "un code n'a pas besoin d'√™tre comment√© si il est bien √©crit" faut quand m√™me faire attention √† ce qui est derri√®re le si. Beaucoup pensent que c'est bien cod√©, mais si c'√©tait r√©ellement le cas on aurait pas besoin de faire des tests, pas besoin de tests unitaires, pas besoin de debugger, etc. Une api par exemple doit √™tre comment√©e d'une mani√®re ou d'une autre, sinon elle ne sert √† rien. Et un code aussi, on doit documenter l'intention. D'ailleurs c'est ce qui permet aussi de relever des probl√®mes, et aussi toute ambigu√Įt√© (mais pourquoi il fait √ßa¬†?)

    • [^] # Re: question

      Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†2.

      Pourquoi utiliser maven (http://devnewton.bci.im/projects/newton_adventure/artifact/79dfe7445b086fb31c8e96b7fd961f86f32142c7 pour le pom) et ne pas utiliser le système de dépendances de maven ? C'est pourtant souvent la raison principale de l'utilisation de maven.

      J'utilise Maven parce qu'il me permet de compiler en ligne de commande ou avec un IDE en ne décrivant qu'une fois mon projet.

      Pour la gestion des dépendances, il y a plusieurs raisons:

      • je travaille souvent dans le train, sans connexion internet, si j'oublie de rapatrier mes d√©pendances avant de partir, je suis eu.
      • les d√©pendances que j'utilise ne sont pas (ou n'√©taient pas quand j'ai commenc√© le d√©veloppement) sur le d√©p√īt officiel, mais h√©berg√© vite fait √† droite √† gauche. Je n'ai donc pas confiance. Je pourrais installer un gestionnaire de d√©p√īt sur mon serveur, mais √ßa a l'air compliqu√©.
      • je ne compte plus le nombre de jeux libres auquel je n'ai pas pu jouer, car les d√©pendances n'√©taient pas fournies.

      Et surtout non commenté. Ca veut quand même dire que pour en faire quelque chose il va limite falloir faire du reverse sur ton code pour savoir comment ça fonctionne. Et c'est vraiment dommage.

      Je trouve qu'il manque plut√īt un document d√©crivant l'architecture du code (c'est pr√©vu).

      Les commentaires, j'en fais peu, car je pense que la bonne démarche quand on tombe sur un problème, c'est de contacter l'auteur du code. En plus ça tombe bien, il est super sympa.

      Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

      • [^] # Re: question

        Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†7.

        Pour la partie projet, compilation + IDE et dépendances, Gradle say bien.

        Oui, il manque un document. Par contre

        Les commentaires, j'en fais peu, car je pense que la bonne démarche quand on tombe sur un problème, c'est de contacter l'auteur du code.

        Sérieux ? C'est pour cette raison que tu ne commente pas ?
        "Je ne vous ai pas fourni le mode d'emploi de l'ordinateur de bord de votre voiture car je pense que la bonne démarche c'est de contacter votre garage. En plus ça tombe bien, ils sont super sympa."

        Désolé mais j'ai un peu de mal avec ça, et surtout (de mon point de vue) ça ne donne pas du tout envie.
        Alors je sais pas, peut-√™tre que c'est une fa√ßon de vouloir initier des contacts, des interactions, mais c'est √† mon avis plut√īt contre productif et √ßa n'insite absolument pas √† avoir un retour, encore moins des contributions (car les gens ne contribuent pas pour avoir un contact avec l'auteur mais pour am√©liorer un point qui leur est int√©ressant.

        Au fait, dans ton boulot (si tu codes) tu commente ou non ? (oué désolé, j'ai vraiment du mal à comprendre la logique)

        • [^] # Re: question

          Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†1.

          Pour la partie projet, compilation + IDE et dépendances, Gradle say bien.

          Je ne connaissais pas quand j'ai commencé le projet. Peut être pour un autre jeu!

          Au fait, dans ton boulot (si tu codes) tu commente ou non ? (oué désolé, j'ai vraiment du mal à comprendre la logique)

          Peu.

          Je comprends que ce soit difficile à accepter, car on enseigne aux étudiants à bien commenter leurs codes, mais ces dernières années la pratique du développement a beaucoup changé en entreprise.

          Les commentaires et la documentation sont une charge de travail non négligeable et il est préférable de se concentrer d'abord sur un code qui marche et faire de la transmission de connaissances de programmeur à programmeur.

          Lorsque le projet est livré et passe en maintenance (éventuellement évolutive), on peut s'attaquer à produire de la documentation pendant la phase de stabilisation..

          Newton Adventure suit le même chemin.

          Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

          • [^] # Re: question

            Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†4.

            Nan mais y'a quand même une sacré grosse différence entre trop commenter, perdre trop de temps à faire des docs inutiles et ne rien foutre du tout.

            Lorsque le projet est livré et passe en maintenance (éventuellement évolutive), on peut s'attaquer à produire de la documentation

            Et ben, je plain le boulot de ces gens, commenter le code d'un autre 6 mois apr√®s avoir √©t√© √©crit…

            Et surtout ça ne change rien au fait que l'intention du programmeur ne sera pas inscrite.

            Je comprends que ce soit difficile à accepter, car on enseigne aux étudiants à bien commenter leurs codes
            Les commentaires et la documentation sont une charge de travail non négligeable et il est préférable de se concentrer d'abord sur un code qui marche et faire de la transmission de connaissances de programmeur à programmeur.

            La difficult√© de compr√©hension n'a rien √† voir avec l'enseignement mais justement du fait d'experience pro. Il arrive (et arrivera) toujours un cas o√Ļ tu devra reprendre le code d'un autre (absence, probl√®me critique, tout ce que tu veux) et l√† tu va bien souffrir sans la moindre doc.
            C'est vraiment présomptueux de croire que le code n'a pas besoin d'être commenté pour être lisible et souvent on va trouver des arguments (genre ça prend trop de temps) qui sont souvent motivés par "ça m'emmerde de commenter".

            Et même si tout ceci était valide, là tu propose quand même aux autres d'utiliser et modifier ton code. On parle pas du voisin dans un open space hein. Et dans ce cas, pour moi c'est simple, s'il n'y a aucune doc aucun commentaire faudrait vraiment, vraiment, vraiment qu'il y ait quelque chose d'intéressant pour que je me fasse chier à comprendre le code que le dev n'a pas jugé utile de commenter.

            Newton Adventure suit le même chemin.

            Ben c'est quand même un chemin qui aide à restreindre les possibilités de contributions.

            • [^] # Re: question

              Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†1.

              Il arrive (et arrivera) toujours un cas o√Ļ tu devra reprendre le code d'un autre (absence, probl√®me critique, tout ce que tu veux) et l√† tu va bien souffrir sans la moindre doc.

              Si c'est le code trivial d'un jeu libre, je m'en sortirais :-)

              pour moi c'est simple, s'il n'y a aucune doc aucun commentaire faudrait vraiment, vraiment, vraiment qu'il y ait quelque chose d'intéressant pour que je me fasse chier à comprendre le code que le dev n'a pas jugé utile de commenter

              Et bien tant pis! Il y a plein de moteurs de jeux de qualité dans la nature, tu dois pouvoir trouver ton bonheur facilement.

              Ben c'est quand même un chemin qui aide à restreindre les possibilités de contributions.

              Peut être mais en même temps:

              • la logique du jeu se trouve dans la classe Game.
              • les plateformes sont d√©crites par la classe Platform.
              • le comportement du h√©ro du jeu se trouve dans la classe Hero.
              • le but de la plupart des niveaux est de trouver une clef pour ouvrir une porte en collectant: il y a des classes Key, Door et Apple.

              Je suis prêt à passer du temps à aider les contributeurs, même débutants mais motivés, et à documenter à la demande pour les aider, mais pas non plus leur apprendre à respirer :-)

              Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

              • [^] # Re: question

                Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†4.

                Si c'est le code trivial d'un jeu libre, je m'en sortirais :-)

                Et si c'est pas le cas ?

                • [^] # Re: question

                  Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†5.

                  Je me roulerais en boule et je pleurerais en tapant du poing.

                  Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

          • [^] # Re: question

            Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†3.

            Au fait, dans ton boulot (si tu codes) tu commente ou non ? (oué désolé, j'ai vraiment du mal à comprendre la logique)

            Peu.

            Question conne : tu bosse dans quel type de boite¬†? SSII ou plut√īt √©diteur de logiciel¬†?
            Si dans le premier cas je peux un peu comprendre ce que tu racontes (et encore) comment ferais-tu dans le deuxième, je veux dire avec du code que tu dois maintenir et faire évoluer sur au moins 5 ans ?

            • [^] # Re: question

              Post√©¬†par¬† (site Web personnel) . √Čvalu√©¬†√†¬†2.

              Plut√īt √©diteur, mais linuxfr n'est pas le bon endroit pour que je raconte mes exp√©riences pros dans le d√©tail et le grand d√©bat sur les commentaires m'int√©resse peu en fait, donc je pr√©f√®rerais r√©pondre √† des questions sur Newton Adventure!

              Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

Suivre le flux des commentaires

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