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 juin 2012 à 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.