Journal Maki Ă  la vapeur

PostĂ© par (site web personnel) . Licence CC By‐SA.
39
25
oct.
2013

Bonjour Nal,

Je t'écris pour te donner des nouvelles de mes projets libres. Au menu, nanimstudio, Newton Adventure, un nouveau jeu (Ned et les maki) et de nouveaux projets (libtiled-jaxb et lwjgl-nuit).

nanimstudio

Mon logiciel d'animation 2d continue Ă  Ă©voluer au fil de mes besoins et des retours des utilisateurs. AprĂšs le support de l'APNG et quelques amĂ©liorations de l'ergonomie, mon prochain grand chantier est l'ajout d'algorithme de scaling. Pour cela j'utilise la bibliothĂšque scilter. Le but est de pouvoir prĂ©visualiser les sprites tels qu'ils pourraient ĂȘtre affichĂ©s en jeu via des shaders implĂ©mentant des techniques d'agrandissement dĂ©diĂ©es au pixel art (scale2x, hqx, rotsprite...).

scale3x

Site officiel
scilter

Newton Adventure

Mon projet le plus important continue sa carriĂšre commerciale sur Greenlight. Il s'agit d'un systĂšme dĂ©diĂ© aux jeux qui candidatent pour ĂȘtre vendu via la base de donnĂ©es sociale / plateforme de vente / adware / DRM / ... prĂ©fĂ©rĂ©e joueurs PC: Steam. Les clients peuvent voter pour dire s'ils seraient intĂ©ressĂ©s par l'achat d'un jeu candidat. A partir d'un certain nombre de vote et suivant des calculs et des critĂšres internes Ă  Valve, le jeu peut ĂȘtre acceptĂ©.

Si vous ĂȘtes du cĂŽtĂ© de Nice, je prĂ©sente le jeu sur un stand au JM2L le mois prochain!

Site officiel
La page sur Greenlight
Le site des JM2L

Newton Adventure sur Greenlight

Ned et les maki

Si vous suivez linuxfr rĂ©guliĂšrement, vous avez peut ĂȘtre vu que les Geeky Goblin Productions ou GGP ont passĂ© une annonce pour recruter des dĂ©veloppeurs pour un projet de jeu. Je suis l'un d'eux!

La production a dĂ©marrĂ© sur les chapeaux de roue: on a dĂ©jĂ  des graphismes, un petit moteur d'affichage, le gameplay est bien dĂ©fini... J'espĂšre mĂȘme avoir une petite dĂ©mo pour les JM2L!

Ned et les maki

Bien sûr comme dans tout projet libre, il a fallu faire des choix techniques et politiques difficiles. Heureusement l'équipe a l'esprit de compromis, ce qui nous a permis de faire rapidement les choix suivants:

Moteur de jeu

La solution retenue est basée sur Java, lwjgl et de gros bouts du code de Newton Adventure!

C++/SDL et Monogame ont Ă©tĂ© envisagĂ©, mais le premier a dĂ» ĂȘtre Ă©cartĂ© pour des raisons de productivitĂ© et d'intĂ©rĂȘt: j'ai fait valoir que les releases multiplateformes et la gestion des dĂ©pendances en C++ sont des tĂąches trĂšs consommatrices de temps et au niveau d'intĂ©rĂȘt intellectuel proche de 0, ce qui est contraignant pour qui travaille sur son temps libre. Le second n'a pas Ă©tĂ© retenu Ă  cause du rejet gĂ©nĂ©ral de Mono par la communautĂ© libre et de l'incertitude quant Ă  son avenir aprĂšs l'abandon de XNA par Microsoft (Monogame est une implĂ©mentation de XNA).

Licences

Le choix des licences a été compliqué. Les GGP voulaient du Art Libre et seulement du Art Libre. Je voulais que le code soit sous BSD (pour pouvoir échanger du code avec mes autres projets) tandis l'autre développeur préférait MIT. Ce sera finalement MIT pour le code et Art Libre pour les données. La licence MIT permettant le sublicencing, les GGP pourront ainsi distribuer le jeu entiÚrement sous Art Libre!

Outils pour le travail collaboratifs

git a été choisi pour partager les sources et gérer les versions. Là c'est plus une question de personne n'a jamais été viré pour avoir choisi git...

En attendant une mise à niveau du serveur des GGP, nous utilisons une instance de gitlab et des dépÎts sur github

Editeur de niveau

Le choix d'une vue en 3d isométrique nous a amené à choisir Tiled pour l'édition des niveaux. Là aussi c'est un choix par défaut, car il n'y a pas beaucoup d'alternatives sur ce "marché".

Nouveaux projets

Je profite du développement de Ned et les maki pour y faire "incuber" deux nouveaux projets de bibliothÚques Java:

  • libtiled-jaxb: un parseur moderne pour les fichiers de Tiled. Ceux qui existent ont le gros dĂ©faut de charger les images avec java.awt ou android.graphics, ce qui ralentit considĂ©rablement le chargement des niveaux puisque ces API stockent les bitmaps dans des formats qu'il faut convertir en texture OpenGL. Ma bibliothĂšque laisse le jeu faire le chargement lui mĂȘme.
  • lwjgl-nuit: une bibliothĂšque pour crĂ©er des interfaces graphiques pour les jeux Ă©crits avec lwjgl. Il en existe dĂ©jĂ  plusieurs, mais aucune ne permets de contrĂŽler l'interface uniquement avec une manette de jeu. Je joue souvent en utilisant mon PC comme une console, j'ai donc envie que mes jeux puissent ĂȘtre jouĂ©s sans avoir Ă  sortir un clavier et une souris.

Que faire aprĂšs ce journal?

Voici quelques suggestions pour l'aprĂšs lecture de journal:

  • essayer les projets Ă©voquĂ©s.
  • voter sur Greenlight.
  • poster des commentaires pertinents.
  • regarder la nimage de fin, car sur linuxfr, tout finit par des nimages:

nimage

  • # Commentaire supprimĂ©

    PostĂ© par . ÉvaluĂ© Ă  6.

    Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

    • [^] # Re: Mmh

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3.

      Je fais aussi partie de l'équipe de développement et partisans du c++ au début. Et effectivement c'est la grand base de code java de newton adventure, et l'expérience de dev dans la programmation de jeu vidéo en java qui ma convaincu de travaillé avec ce langage semi-compilé.

      Peut-ĂȘtre que si j'avais dĂ©couvert crossroad plus tĂŽt je me serai plus battues pour le c++

      Merci pour le bouquin sa fait long temps que je cherche a une bonne référence pour comprendre autotools.

    • [^] # Re: Mmh

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3.

      La grosse raison de ce choix, j'ai l'impression que c'est plutÎt que tu as une grosse base de code java déjà disponible. Je peux me tromper à ce sujet.

      Disons que si j'avais sous la main un template de projet C++/SDL avec autotools, crosscompilation et gestion des dépendances pour Linux, Windows et Mac qui marche aussi simplement qu'un mvn package, je reconsidérerais la question.

      Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

      • [^] # Commentaire supprimĂ©

        PostĂ© par . ÉvaluĂ© Ă  3.

        Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

      • [^] # Re: Mmh

        PostĂ© par . ÉvaluĂ© Ă  2. DerniĂšre modification le 25 octobre 2013 Ă  15:59.

        Et as-tu consideré le remplacement de autotools par cmake ?

        Moi mes projets, c'est c++, cmake, sdl, opengl, qt (pas forcĂ©ment tout en mĂȘme temps)

        ce que je trouve bien dans cmake, c'est que pour faire un truc simple, c'est simple !

        • [^] # Re: Mmh

          PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2.

          cmake ou autre... Je voudrais un maven like pour C++, car les releases, c'est ma hantise.

          Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

          • [^] # Re: Mmh

            PostĂ© par . ÉvaluĂ© Ă  2.

            Effectivement, ne dévellopant généralement que pour moi, je n'ai jamais été confronté au soucis de release.

            Que fait exactement maven qui tu aimerais trouver dans d'autres outils ?

            cmake est assez puissant de ce coté là aussi (bien que je ne l'ai jamais utilisé, donc je manque beaucoup de recul sur les possible soucis) et permet de créer des .deb/.rpm installeurs windows et mac et quelques autres avec seulement un descriptif si tu n'as pas de besoin spécifiques pour une plateforme (c'est du coté de CPack qu'il faut regarder)

            • [^] # Re: Mmh

              PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2.

              Que fait exactement maven qui tu aimerais trouver dans d'autres outils ?

              La crosscompilation (bon maven ne le fait pas, pour du java on s'en fout, mais pour du C++ c'est obligatoire), la gestion des dépendances multiplateformes et la génération des paquets installeurs.

              Je sais qu'on peut se bricoler ce genre de chose avec cmake, cpack, crossroad, ivy et quelques autres outils, mais ça va me demander des heures hautement inintéressantes avant d'avoir un ensemble vaguement fonctionnel.

              C'est le choix entre monter une voiture à base de piÚces détachés sans plan ou en prendre une neuve...

              Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

              • [^] # Re: Mmh

                PostĂ© par . ÉvaluĂ© Ă  0.

                On en revient toujours Ă  la mĂȘme question, ca va plus vite de prendre un surgelĂ© et le mettre dans le micro onde plutĂŽt que de se taper la bouffe Ă  faire.

                Maintenant lorsque tu fais à manger, tu apprends tout plein de choses qui changent ton regard sur la cuisine. C'est de cette apprentissage (par sérendipité) que viendra l'étincelle qui fera que tu auras évolué, que ta pratique sera plus profonde et que tu pourras choisir la techno adapté qui n'est pas forcément celle que tu connais.

                Si tu savais combien il y a d'experts java qui entravent presque que pouic à la techo et qui pondent du code sous ide (c'est comme sous acide, mais sans les effets secondaires pour le consommateur), code merdique qui fait que naviguer sur ces pages/sur ces softs donne l'impression d'avoir installé xp sur un 486DX2 66 et essayer de regarder une video youtube.

                Lorsque tu montes la voiture tu sais comment elle fonctionne. Alors autant pour un simple conducteur ca peut le faire d'acheter tout prĂȘt, mais pour un garagiste c'est moins fun.

                • [^] # Re: Mmh

                  PostĂ© par (site web personnel) . ÉvaluĂ© Ă  6.

                  Effectivement c'est intĂ©ressant de montĂ© sa voiture soi mĂȘme, mais a un moment il faut ĂȘtre un peu rĂ©aliste, tu peut pas apprend une nouvelle façon de montĂ© tes piĂšces et en mĂȘme temps apprendre a montĂ© un 4x4, alors qu'on montĂ© que citadines jusqu'Ă  rĂ©cemment.

                  ArrĂȘtons la mĂ©taphore on a aussi fait le choix d'utilisĂ© ArtĂ©mis, un framework permettant d'utiliser un systĂšmes entitĂ©s relations. Donc combinĂ© apprendre a utilisĂ© autotools, gĂšres les dĂ©pendances multiplateformes, et utilisĂ© un nouveaux paradigmes, sa commence a devenir compliquer.

                • [^] # Re: Mmh

                  PostĂ© par (site web personnel) . ÉvaluĂ© Ă  8. DerniĂšre modification le 26 octobre 2013 Ă  11:20.

                  C'est de cette apprentissage (par sérendipité) que viendra l'étincelle qui fera que tu auras évolué

                  J'ai fait du C++ pendant des annĂ©es, j'avais mĂȘme une chaĂźne de compilation et d'outils proche de ce que j'aimerais, donc je sais trĂšs bien ce qu'il faudrait faire. Recommencer ce boulot ça n'a aucun intĂ©rĂȘt pour moi: sur mon temps libre, je veux faire des jeux, pas des scripts et des makefiles...

                  Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

              • [^] # Commentaire supprimĂ©

                PostĂ© par . ÉvaluĂ© Ă  2.

                Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

                • [^] # Re: Mmh

                  PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3.

                  J'ai souvent entendu parler de la solution claudex< compilation service premium, mais est-ce que ça fait Windows et Mac?

                  Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

                  • [^] # Commentaire supprimĂ©

                    PostĂ© par . ÉvaluĂ© Ă  3.

                    Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

  • # Cool

    PostĂ© par (Mastodon) . ÉvaluĂ© Ă  2.

    C'est bien ça, une nouvelle version de nanimstudio ! Du coup, ça tombe bien que tu montres cet exemple parce que j'avais une question à propos des animations à une seule frame. Je vois ici que tu mets la durée à une valeur arbitrairement grande, est-ce que c'est la bonne façon de faire ?

    Le choix d'une vue en 3d isométrique nous a amené à choisir Tiled pour l'édition des niveaux. Là aussi c'est un choix par défaut, car il n'y a pas beaucoup d'alternatives sur ce "marché".

    En fait, plus j'y pense, plus je me dis que Tiled fait soit trop de choses, soit pas assez. Tiled pourrait ĂȘtre un simple logiciel pour construire des cartes et rien d'autres. Le fait est qu'il sait faire d'autres choses comme mettre des formes sur la carte. Mais du coup, ces formes et leur signification dĂ©pendent beaucoup du jeu qui va les charger. Et donc, il y a une phase de conversion Ă  faire dans tous les cas. On peut s'en sortir plus ou moins bien avec les propriĂ©tĂ©s associĂ©s aux objets mais ça devient vite lourdingue.

    En fait, Tiled devrait ĂȘtre un composant parmi plein d'autres (qui n'existent quasiment pas) pour crĂ©er un moteur de ressources de jeu. Mais ça demanderait beaucoup de boulot, notamment normaliser les besoins des jeux de maniĂšre Ă  peu prĂšs gĂ©nĂ©rique. Tout ça, c'est gĂ©nĂ©ralement refait dans chaque jeu, et c'est de la perte de temps je trouve. On pourrait aller beaucoup plus loin. L'autre solution, c'est d'utiliser un moteur de jeu complet, avec tous les inconvĂ©nients que ça engendre.

    Ma bibliothĂšque laisse le jeu faire le chargement lui mĂȘme.

    Oui, j'ai fait pareil pour libtmx. MĂȘme si en C++, on n'a pas un truc plus ou moins standard pour charger les images (Ă  l'inverse de Java), je me dis que les bibliothĂšques graphiques savent faire ce genre de chose, et le font toutes diffĂ©remment, donc laissons ce travail facile Ă  l'utilisateur. La seule difficultĂ©, c'est de calculer le bon chemin jusqu'au fichier (puisque les chemins sont dĂ©terminĂ©s en fonction du fichier courant).

    • [^] # Re: Cool

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2.

      Je vois ici que tu mets la durée à une valeur arbitrairement grande, est-ce que c'est la bonne façon de faire ?

      Comme il n'y a qu'une frame, la durée n'a pas d'importance. Tu peux mettre -1, 42 ou 1000000.

      En fait, Tiled devrait ĂȘtre un composant parmi plein d'autres (qui n'existent quasiment pas) pour crĂ©er un moteur de ressources de jeu

      A ce propos, j'attends de voir ce que donnera la prochaine version de Krita: http://krita.org/item/197-new-clones-array-tool

      Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

  • # Commentaire supprimĂ©

    PostĂ© par . ÉvaluĂ© Ă  3.

    Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

    • [^] # Re: git

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2.

      On a voulu aller vite, l'autre développeur connaissait git et voilou. J'aurais bien aimé prendre le temps de réévaluer Mercurial, car git est assez peu intuitif et trÚs galÚre à héberger.

      Pour les projets persos, je préfÚre toujours le trÚs bon fossil, mais en équipe, je n'avais pas envie d'imposer un outil que personne ne connaßt.

      Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

      • [^] # Re: git

        PostĂ© par (site web personnel) . ÉvaluĂ© Ă  1.

        git compliqué a hébergé ? Il faut trouvé la solution qui conviennent a tout le monde la l'équipe est principal composé de néophytes et donc utilisé gitolite n'était pas une bonne idée (certaine personne on du mal avec la notions de clef rsa).

        Une authentification par http nĂ©cessitĂ© la mise en place d'un systĂšme de compte, et sa peut'ĂȘtre embĂȘtant pour les utilisateurs rĂ©gulier de taper son mot de passe a chaque push ou pull.

        gitlab et la solution qui regroupe les deux systĂšme sans ĂȘtre contraint de faire un hack horrible (j'ai envisager une solution basĂ© sur cron pour synchroniser 2 dĂ©pĂŽt un avec accĂšs gitlab l'autre avec http).

        Le principal problÚme de fossil, c'est le packaging la derniÚre fois que j'ai regardé y avais pas de paquet pour fedora.

        • [^] # Re: git

          PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2.

          la derniÚre fois que j'ai regardé y avais pas de paquet pour fedora.

          Je l'entends souvent celle lĂ  ;-)

          Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

      • [^] # Commentaire supprimĂ©

        PostĂ© par . ÉvaluĂ© Ă  2.

        Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

        • [^] # Re: git

          PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3.

          Créer un groupe, un user, gérer des clefs, avoir un serveur ssh... C'est pas vraiment ce que j'appelle simple et il manque encore le bug tracking et le wiki!

          Avec fossil, tu as juste besoin d'un bĂȘte cgi de 2 lignes pour avoir tout ça.

          Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

          • [^] # Commentaire supprimĂ©

            PostĂ© par . ÉvaluĂ© Ă  2.

            Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

        • [^] # Re: git

          PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3.

          Dit a 3 maceux et 2 windowsiens de te gĂšre des clef publique, et tu vera leurs tĂȘte exploser.

          • [^] # Commentaire supprimĂ©

            PostĂ© par . ÉvaluĂ© Ă  1.

            Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

          • [^] # Re: git

            PostĂ© par . ÉvaluĂ© Ă  0. DerniĂšre modification le 26 octobre 2013 Ă  17:13.

            On dit macuser 'spĂšce de vilain -.-.
            lili retourne bouder sur son krita

Suivre le flux des commentaires

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