Journal nanimopt: un optimiseur de nanim

Post√©¬†par¬† (site web personnel) . Licence CC¬†By‚ÄĎSA.
9
22
avr.
2012

Bonjour Nal,

La semaine dernière, je te faisais part de la naissance du projet nanim, une spécification et un ensemble d'outils pour un nouveau format d'animation 2D destiné aux jeux vidéos.

Aujourd'hui, j'ai implémenté un nouvel outil destiné à optimiser les fichiers nanim pour opengl.

Optimisation

Le but de nanimopt, c'est son nom, est de regrouper les nimages d'un fichier nanim en nombre minimum de textures carr√©es dont les c√īt√©s sont des puissances de 2 (de 32x32 √† 1024x1024), ce qui est le plus agr√©able pour les cartes graphiques modernes.

Ce regroupement d'images est un problème nommé bin packing qui bien que NP complet peut se résoudre approximativement avec l'heuristique suivante :

  • choisir une taille de texture de d√©part (par exemple 64x64)
  • classer les images de la plus grande √† la plus petite.
  • placer la premi√®re image en haut √† gauche de la texture et noter les espaces rectangles libres restant.
  • recommencer en pla√ßant les autres textures dans les espaces libres, le plus en haut √† gauche possible.
  • si √ßa ne rentre pas, essayer avec une texture plus grande ou construire une autre texture avec les images qu'on n'a pas pu placer.

bin pack algo

Autres changements

J'ai ajouté au projet quelques fichiers d'aide ainsi qu'un SDK avec la spécification du format nanim et les outils précompilés. Il manque encore beaucoup de documentation, mais c'est un premier pas.

Le futur

Mon prochain objectif est de gérer les nanims dans mon jeu, Newton Adventure.

J'aimerais aussi écrire des exemples de code pour utiliser des fichiers nanim avec SDL ou WebGL, mais je ne sais pas si j'aurai le temps de le faire.

Site du projet nanim

  • # Atlas Cocos2d...

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

    J'avais d√©j√† envie d'en parler la derni√®re fois, mais ton projet ressemble de plus en plus au syst√®me d'atlas de Cocos2d…

    • [^] # Re: Atlas Cocos2d...

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

      Texture atlas, sprite sheet, sprite packing… Tous ces noms d√©signent une m√™me bonne vieille technique du monde du jeu vid√©o.

      La plupart des jeux et des frameworks proposent leur propre variante. J'allais faire de m√™me, mais j'ai pr√©f√©r√© prendre un peu de temps pour faire un SDK r√©utilisable par d'autres jeux, dans d'autres langages, sur d'autres plateformes…

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

      • [^] # Re: Atlas Cocos2d...

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

        Un peu ça, quoi :
        http://xkcd.com/927/

        • [^] # Re: Atlas Cocos2d...

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

        • [^] # Re: Atlas Cocos2d...

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

          On me l'a déjà sorti, mais je ne vois pas avec quel standard je suis competing.

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

          • [^] # Re: Atlas Cocos2d...

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

            Tu es en concurrence avec tous les moteurs de jeu vidéo qui utilisent des atlas, certains depuis très longtemps, et avec des outils plus intégrés que le tien.
            Par contre, il n'existe √† ma connaissance aucune biblioth√®que pour faire des atlas, ce qui force chacun √† s'√©crire sa propre solution (ou √† la voler au voisin), donc ton logiciel r√©pond bien √† un besoin… mais tu arrives un peu tard, et sur un march√© qui de toute fa√ßon ne valorise pas la "standardisation".

            J'ai un avis mitig√© sur la pertinence de ton projet, d'un c√īt√© tu r√©ponds √† un besoin, mais d'un autre c√īt√© tu renforces la fragmentation du monde du jeu vid√©o libre, ce qui est une erreur faite par l'√©crasante majorit√© des d√©veloppeurs de JV libres.

            Arr√™tez de d√©velopper votre petit projet dans votre coin¬†! C'est s√Ľrement tr√®s marrant mais √ßa n'aide pas la cause du jeu vid√©o libre… Est-ce qu'il vaut mieux √™tre le seul aux commandes d'un projet de jeu vid√©o pas marrant et utilis√© par 10 personnes, ou n'avoir qu'une partie du pouvoir de d√©cision dans un jeu de qualit√© et utilis√© par une large audience¬†? Chacun fait son choix mais √† force de choisir la premi√®re alternative on a du mal √† faire des jeux d√©cents.

            Signé : quelqu'un qui travaille sur un JV libre qui a un peu de succès, et qui a du mal à trouver des contributeurs.

            • [^] # Re: Atlas Cocos2d...

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

              Tu penses que le problème des JV libres, c'est un manque de codeurs et pas de graphistes?

              Depending on the time of day, the French go either way.

              • [^] # Re: Atlas Cocos2d...

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

                Le probl√®me, c'est la fragmentation, qui divise l'attention des gens capables de contribuer (qu'ils soient codeurs, graphistes, traducteurs, …). On manque de graphistes, de gens pour faire les effets sonores, de traducteurs, et de codeurs dans une moindre mesure (on trouve toujours des gens pour √©crire 500 lignes de code, on trouve rarement des gens motiv√©s et qualifi√©s qui prennent en charge un module pendant plusieurs ann√©es).

                Pour faire de meilleurs jeux vidéo libres, la communauté a besoin de deux choses :

                • des comp√©tences en cr√©ation de contenu (graphismes, son, …)
                • se concentrer sur quelques projets au lieu d'avoir comme actuellement plus de projets que de d√©veloppeurs
                • [^] # Re: Atlas Cocos2d...

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

                  Mouais, j'sais pas si il y a vraiment une telle fragmentation pour ce qui est du JV libre, je veux dire dans les outils de base (apr√®s que l’on ait un, deux, trois ou cinquante clones de MarioKart √† un moment M n’est pas vraiment probl√©matique), mais je peux me tromper.
                  Par contre, il y a véritable manque de personnes qui ne codent pas, mais qui s'occupent du reste, et je pense qu'il serait plus utile de réfléchir aux raisons de ce déséquilibre, et aux moyens de le renverser.

                  Depending on the time of day, the French go either way.

                  • [^] # Re: Atlas Cocos2d...

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

                    Mouais, j'sais pas si il y a vraiment une telle fragmentation pour ce qui est du JV libre, je veux dire dans les outils de base (apr√®s que l’on ait un, deux, trois ou cinquante clones de MarioKart √† un moment M n’est pas vraiment probl√©matique), mais je peux me tromper.

                    Justement, c'est un probl√®me, √ßa divise les ressources et l'attention¬†! C'est certes tr√®s amusant de d√©marrer chacun son projet de jeu, mais il faut une vraie √©quipe pour avoir un minimum de succ√®s. On ne va jamais s'en sortir si chaque d√©veloppeur pr√©f√®re faire son jeu √† lui dans son coin (qui est invariablement pourri parce que seul on n'arrive √† rien¬†!). Le libre n'a pas les moyens de produire 2000 jeux de r√īle, il a les moyen d'en faire 4 ou 5. Pareil pour les autres genres de jeux (qui souffrent un peu moins du syndrome "not my own game", variante du NIH).
                    Aujourd'hui les jeux libres se font concurrence, pas tellement pour les joueurs (le g√Ęteau est gros, il y en a pour tout le monde), mais pour l'attention des contributeurs.

                    Ça nous fait une belle jambe qu'il y ait plus de graphistes si ils vont tous travailler sur un jeu différent !

                    On (chaque projet) manque toujours de gens pour accomplir les t√Ęches qui ne sont pas du code, mais cela ne viendra qu'en acqu√©rant suffisamment de notori√©t√© (ce qui ne peut se produire que dans un environnement pas trop fragment√©).

                    Le ratio "nombre de jeux libres qui sont bien"/"nombre de jeux libres" est tout simplement honteux.

                    • [^] # Re: Atlas Cocos2d...

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

                      C'est certes très amusant de démarrer chacun son projet de jeu

                      Le jeu libre c'est principalement des gens qui font ça sur leur temps libre, donc le fun prime sur le résultat. Si on pouvait gagner de l'argent en faisant des jeux libres de qualité, ça inciterait les gens à se regrouper.

                      On a déjà évoqué ici de pouvoir vendre des bundles ou même vendre les jeux indépendamment, malheureusement c'est très compliqué en France, car il ne semble pas exister de statut légal pour le développeur amateur qui a un métier principal.

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

                      • [^] # Re: Atlas Cocos2d...

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

                        Sur le statut l√©gal : il y a l'auto-entreprise… en tout cas il y avait jusqu'√† la suppression de la taxe professionnelle. Mais le but n'est pas forc√©ment lucratif… je ne pense pas qu'un jeu libre puisse √™tre vendu suffisamment pour payer le travail r√©alis√© √† un niveau √©quivalent √† un salaire.

                        Quand tu écris un logiciel, s'il n'est pas ou très peu utilisé, alors ton logiciel n'a servi à rien à part à t'amuser toi. C'est respectable, mais lorsque cette attitude se généralise ("je m'en fiche d'avoir des utilisateurs je veux juste m'amuser") ça devient difficile d'avancer pour ceux qui ne se contentent pas de se faire plaisir à eux et qui souhaitent aussi faire plaisir à leurs utilisateurs. C'est cela que je dénonce dans le jeu vidéo libre aujourd'hui. Chacun s'éclate dans son coin, on ne produit rien, et on nuit à ceux qui souhaitent produire en les rendant inaudibles.

                        • [^] # Re: Atlas Cocos2d...

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

                          Sur le statut légal : il y a l'auto-entreprise

                          Ce que je n'ai pas réussi à savoir sur l'autoentreprise, c'est est-ce qu'il y a des charges fixes? Qu'on me prenne 99% de mes bénéfices, je m'en fous, mais je ne veux pas perdre d'argent.

                          Chacun s'éclate dans son coin, on ne produit rien, et on nuit à ceux qui souhaitent produire en les rendant inaudibles.

                          Oui, moi aussi j'aimerais bien avoir 10 graphistes, 5 musiciens, une équipe marketing, 3 webmasters et deux secrétaires sexy pour Newton Adventure, mais la fragmentation me prive de ces contributions :-)

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

                          • [^] # Re: Atlas Cocos2d...

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

                            Ce que je n'ai pas réussi à savoir sur l'autoentreprise, c'est est-ce qu'il y a des charges fixes? Qu'on me prenne 99% de mes bénéfices, je m'en fous, mais je ne veux pas perdre d'argent.

                            L'autoentreprise a été conçue pour qu'il n'y ait pas de charges fixes. Ce qui a été vrai jusqu'à la réforme de la taxe professionnelle, qui a forcé les autoentrepreneurs à payer un machin qui s'appelle, je crois, la contribution économique territoriale. Pour une autoentreprise, cette taxe est assise sur la valeur du logement de l'entrepreneur, ce qui détruit complètement le but de l'autoentreprise.

                            Donc on en revient √† ton affirmation : il n'existe pas de m√©canisme l√©gal pour percevoir des revenus d'appoint en France. En pratique, il para√ģt que d√©clarer ces revenus compl√©mentaires en BIC permet au moins d'√™tre en r√®gle avec le fisc, et l'URSSAF ferme les yeux si ce n'est pas trop gros… mais je ne sais pas dans quelle mesure c'est une base fiable.

                      • [^] # Re: Atlas Cocos2d...

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

                        Le jeu libre c'est principalement des gens qui font ça sur leur temps libre, donc le fun prime sur le résultat.

                        C'est un peu comme les desktop libre alors? ;-)

                        Ah, mince on n'est pas Vendredi..

                    • [^] # Re: Atlas Cocos2d...

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

                      En fait, je me demande si le probl√®me n’est pas ailleurs. Si tu regardes sur Kongragate, Newgrounds, Jay is Game, et la sc√®ne ind√© en g√©n√©ral, tu as quand m√™me une tripot√©e de jeux, √† la qualit√© variable, certes, mais tu trouves clairement plus de jeux de qualit√© que √ßa soit au niveau du game play, ou du graphisme, que dans les jeux libres. Je ne pense pas que √ßa soit √† cause de l’√©clatement de la sc√®ne vid√©oludique libriste, mais parce que ces deux groupes ne sont pas du tout compos√©s de la m√™me population. Le ticket d’entr√© pour faire un jeu flash est moins √©lev√© pour un graphiste, vu qu’il utilise Degas l’outil pour payer son loyer, en fait le libre manque d’outils faciles √† prendres en main pour concevoir, d√©velopper, et distribuer des petits jeux.
                      J’suis d√©sol√© pour ma r√©ponse un peu confuse, mais je n’arrive pas exactement √† articuler le fond de ma pens√©e.

                      Depending on the time of day, the French go either way.

            • [^] # Re: Atlas Cocos2d...

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

              J'ai un avis mitig√© sur la pertinence de ton projet, d'un c√īt√© tu r√©ponds √† un besoin, mais d'un autre c√īt√© tu renforces la fragmentation du monde du jeu vid√©o libre, ce qui est une erreur faite par l'√©crasante majorit√© des d√©veloppeurs de JV libres.

              Quelle solution existante j'aurais pu utiliser selon toi?

              Arrêtez de développer votre petit projet dans votre coin !

              C'est justement ce que je fais! Au lieu de publier mes outils et spécifier un format, j'aurais pu faire comme tous les autres: des métadonnées spécifiques à mon seul jeu.

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

              • [^] # Re: Atlas Cocos2d...

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

                Quelle solution existante j'aurais pu utiliser selon toi?

                Celle mise en Ňďuvre par un jeu libre que tu connais et que tu aimes bien¬†? Il y a celle que je connais parce que je l'ai d√©velopp√©e il y a 4 ans, et il y en a des millions d'autres certainement bien meilleures. Encore une fois, tous les jeux qui utilisent des atlas ont leur propre outil… Tu arrives apr√®s la bataille, ce n'est pas toi qui vas faire changer quiconque (sauf si tu d√©veloppes un nouveau Wesnoth, et encore). Pour moi tu avais deux possibilit√©s :
                * réutiliser une solution existante (le plus intelligent, mais ça demande d'évaluer la qualité et la pérennité, et par expérience c'est difficile), en l'améliorant si nécessaire
                * récrire la tienne dans ton coin (le plus marrant, et ça t'apprend des trucs, mais c'est pas forcément le plus efficace, et même si tu es très très intelligent je te garantis que ce n'est pas le moyen d'avoir le meilleur code)

                C'est justement ce que je fais! Au lieu de publier mes outils et spécifier un format, j'aurais pu faire comme tous les autres: des métadonnées spécifiques à mon seul jeu.

                D√©j√† tu te compliques la vie, ton format est bien plus complexe que n√©cessaire. Un atlas, c'est un tas d'images dans un .png, et un fichier de coordonn√©es √† c√īt√©, il n'y a pas besoin d'un nouveau format d'image a fortiori non compress√©. Quant √† la notion d'animation, elle ne sert √† rien si tu ne pr√©vois pas de faire un codage inter, ce que tu as raison de ne pas faire pour un atlas.

                J'ai l'impression que tu t'imagines que tu cr√©es un nouveau standard. En r√©alit√©, tu cr√©es encore un projet qui pr√©tend √† l'universalit√©, dont la qualit√© et la p√©rennit√© ne sont pas prouv√©es, et donc tu contribues au brouhaha ambiant dans le libre. Ta d√©marche part d'un bon sentiment, mais au final tu ne fais qu'augmenter la fragmentation. (Bon, d'un autre c√īt√© c'est un projet Java, et Java est un √©cosyst√®me √† part.)

                • [^] # Re: Atlas Cocos2d...

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

                  D√©j√† tu te compliques la vie, ton format est bien plus complexe que n√©cessaire. Un atlas, c'est un tas d'images dans un .png, et un fichier de coordonn√©es √† c√īt√©.

                  Ce qui est plus complexe à parser qu'un fichier protobuf: avec ma solution tous les langages populaires peuvent disposer d'un parser de nanim en lançant UNE commande.

                  Quant à la notion d'animation, elle ne sert à rien si tu ne prévois pas de faire un codage inter, ce que tu as raison de ne pas faire pour un atlas.

                  lapin compris

                  tu crées encore un projet qui prétend à l'universalité, dont la qualité et la pérennité ne sont pas prouvées, et donc tu contribues au brouhaha ambiant dans le libre

                  Encore une fois quelle est l'alternative existante? Les formats existants sont sp√©cifiques aux diff√©rents jeux et donc ne sont pas une bonne option…

                  Bon, d'un autre c√īt√© c'est un projet Java, et Java est un √©cosyst√®me √† part.

                  Les outils sont en Java, mais tu peux g√©n√©rer un parser pour C++, Python, Java, …

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

              • [^] # Re: Atlas Cocos2d...

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

                Quelle solution existante j'aurais pu utiliser selon toi?

                Peut-√™tre celle de Cocos2d justement? un png + un fichier xml, niveau facilit√© d'utilisation ca me semble un cran au dessus de ce que tu propose… Et il existe d√©j√† des impl√©mentations (pour ObjectiveC/iOS , Javascript, probablement python et Java/android) et quelques outils pour les g√©n√©rer (mais peut-√™tre pas libre, ni sur toutes plateformes, y a sans doute du travail pour toi de ce cote la!)

                Vraiment d√©sol√© mais ton projet semble effectivement souffrir de la maladie du "not invented here"…

                • [^] # Re: Atlas Cocos2d...

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

                  Peut-être celle de Cocos2d justement?

                  Tu as un lien vers la spec de ce format d'animation?

                  un png + un fichier xml, niveau facilité d'utilisation ca me semble un cran au dessus de ce que tu propose

                  Non, il n'y a rien à faire pour écrire un parser de fichier spécifié avec protobuf: le parser est généré. On ne peut pas faire plus simple :-)

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

                  • [^] # Re: Atlas Cocos2d...

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

                    Tu as un lien vers la spec de ce format d'animation?

                    Je ne trouve pas, ce qui montre qu'il y a de l'espace dans ce projet pour consolider l'existant… Je n'ai pas trouve d'outil libre pour g√©n√©rer des atlas non plus, par contre il y a plein d'outils non libre, il y a donc aussi de la place pour quelqu'un comme toi qui veut faire des outils autour d'un format.

                    Non, il n'y a rien à faire pour écrire un parser de fichier spécifié avec protobuf: le parser est généré. On ne peut pas faire plus simple :-)

                    Parfois, le plus simple sur le papier n'est pas le plus simple a utiliser.
                    Il est bien gentil ton format d'animation, mais une fois que j'ai charge ton protobuf en RAM, j'ai encore plein de boulot a me taper a la pogne. Protobuf est un format de donn√©e "b√™te" (et c'est normal), ce qui fait qu'il n'a aucune id√©e que le flux de bytes que tu mets dans Image.pixels est une image. En plus c'est a moi de faire gaffe a la taille de l'image et au format de pixel, alors que si je charge b√™tement une PNG avec la lib qui va bien, j'ai rien a m'occuper et je peux l'envoyer directement dans mon canevas ou ma lib opengl. Et si j'utilise un moteur de jeu quelconque, soit il aura deja son format de fichier privil√©gier et je n'aurais vraiment rien a faire, soit il faudra que j'√©crive tout le code qui va convertir ta structure de donn√©e en la sienne. En d√©finitive, j'aurais aussi vite fait de refaire un Nieme loader rien qu'a moi mais que je maitriserais a 100%…

                    D√©sol√© mais malheureusement je n'ai pas l'impression qu'en l'√©tat ton projet propose quelque chose de suffisamment int√©ressant pour que quelqu'un d'autre que toi ai envie de l'utiliser…

                    • [^] # Re: Atlas Cocos2d...

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

                      En plus c'est a moi de faire gaffe a la taille de l'image et au format de pixel, alors que si je charge bêtement une PNG avec la lib qui va bien, j'ai rien a m'occuper et je peux l'envoyer directement dans mon canevas ou ma lib opengl.

                      Il va te manquer le texture packing et les infos d'animation.

                      Et si j'utilise un moteur de jeu quelconque, soit il aura deja son format de fichier privilégier et je n'aurais vraiment rien a faire, soit il faudra que j'écrive tout le code qui va convertir ta structure de donnée en la sienne.

                      Si tu utilises un moteur de jeu complet, nanim ne s'adresse pas à toi! Il y a 2 ans quand j'ai commencé Newton Adventure, je n'ai pas trouvé ce que je voulais comme moteur libre, simple et performant capable de faire de la 2D avec des rotations et un moteur physique. La situation a peut être évoluer, ça pourrait une très bonne dépêche si tu es au courant de ce qui se fait aujourd'hui!

                      D√©sol√© mais malheureusement je n'ai pas l'impression qu'en l'√©tat ton projet propose quelque chose de suffisamment int√©ressant pour que quelqu'un d'autre que toi ai envie de l'utiliser…

                      Pour expliquer un peu plus ma démarche: mon projet principal c'est Newton Adventure et je vois les outils que je développe pour comme des bénéfices collatéraux! En me forçant à les coder comme des projets à part, j'espère qu'ils serviront à d'autres.

                      Pour l'instant, Newton Adventure a donné naissance à:

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

      • [^] # Re: Atlas Cocos2d...

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

        Vu le nombre petit de sprite par nanim, tu pouvais faire le test exhaustif (au moins sous forme d'option pour comparer avec ton heuristique). C'est pas parce que l'algo est en temps exponentiel, que cela devient insupportable pour une centaine d'éléments.

        "La première sécurité est la liberté"

        • [^] # Re: Atlas Cocos2d...

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

          Il n'y aura pas toujours un petit nombre de frames par nanim. Un fichier nanim peut contenir plusieurs animations et donc potentiellement tous les sprites d'un jeu ou d'un niveau.

          Toutefois j'implémenterais d'autres solutions si je constate un problème avec l'algo actuel.

          J'accepte aussi les contributions si quelqu'un a envie de faire mieux :-)

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

  • # Juste un mot‚Ķ

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

    Salut,

    je n'y connais rien en jeux vidéos, je lis ça de loin et je comprends ce qu'un néophyte peut en aborder en quelques minutes, mais je tenais à :
    - te remercier pour proposer cet optimiseur
    - t'encourager pour la suite.

    Tu aurais pu ne rien dire et ne rien donner, et tu gardes pour l'instant de la retenue et de l'optimisme dans toutes tes réponses.

    Bravo.

    ­La faculté de citer est un substitut commode à l'intelligence -- Somerset Maugham

    • [^] # Re: Juste un mot‚Ķ

      Post√©¬†par¬† (site web personnel) . √Čvalu√©¬†√†¬†9.

      Tu aurais pu ne rien dire et ne rien donner, et tu gardes pour l'instant de la retenue et de l'optimisme dans toutes tes réponses.

      En fait j'ai souvent envie de mordre mon clavier, mais juste avant j'utilise systématiquement la technique de méditation bouddhiste Zen With Zenitram.

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

      • [^] # Re: Juste un mot‚Ķ

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

        ah toi aussi tu tournes ton clavier 7 fois avant d'appuyer sur la touche entrée pour valider ?
        (moi depuis que j'ai un portable ça m'a bien dissuadé, j'en avais marre de rebrancher l'alim' /o\).

  • # Questions techniques

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

    Je suis un peu ce que tu racontes sur LinuxFR au sujet de Newton Adventure et j'ai l'impression de te voir passer par les mêmes étapes que j'ai vécues en faisant mon jeu.

    Pour le coup, je n'ai jamais cherché à répondre à la question de l'optimisation placement des sprites dans les textures, bien qu'elle se pose depuis le début, et j'ai tendance à le faire au cas par cas. Mais si je devais m'y mettre, la première question concernerait une solution pour remplir l'espace restant après avoir posé les sprites d'une anim.

    Par exemple, j'ai une animation de 3 sprites en 32x32 et une autre de 5 sprites. Je veux les mettre dans des textures de 64x64. A priori j'aimerais me retrouver avec deux images au final. Est-ce que ton format d'animation et ton optimiseur permettent cela facilement ?

    J'ai eu des soucis avec des sprites auxquels j'appliquais une rotation dans le jeu¬†: un bord du sprite voisin avait tendance √† appara√ģtre dans la rotation. Pour √©viter cela, j'ai ajout√© une bande d'un pixel transparent autour de mes sprites. Est-ce que ton outils permet de mettre une marge entre les sprites¬†? Envisages-tu de le faire¬†?

    • [^] # Re: Questions techniques

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

      Par exemple, j'ai une animation de 3 sprites en 32x32 et une autre de 5 sprites. Je veux les mettre dans des textures de 64x64. A priori j'aimerais me retrouver avec deux images au final. Est-ce que ton format d'animation et ton optimiseur permettent cela facilement ?

      Avec les paramètres que j'ai mis, ça va tout mettre dans une texture de 128x128. Si tu veux limiter à 64x64, tu peux changer la méthode createDefaultPossibleTextureDimensions.

      Est-ce que ton outils permet de mettre une marge entre les sprites ? Envisages-tu de le faire ?

      C'est le prochain item sur ma todo list!

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

  • # Retours d'exp√©rience

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

    Comme je te le dis dans le post plus haut, j'ai l'impression de te voir passer par les étapes que j'ai vécue. Alors je te propose un petit retour d'expérience.

    Je ne pense pas que j'utiliserai ton syst√®me car, sans vouloir t'offenser, j'ai le sentiment que tu es encore un poil na√Įf. Je n'ai pas l'impression dans tes propos que tu aies bien fait le tour du besoin. Il est certes utile d'avoir un format d'animation, mais il y a bien d'autres questions qui se posent dans la gestion de l'anim et je doute que le format soit primordial. Par exemple, dans le d√©veloppement de mon jeu, nous sommes pass√©s par ce genre d'√©tapes (uniquement sur l'aspect graphique, je passe le moteur physique, le son, les inputs, l'interface, l'IA, etc.) :

    1. On veux des images. C'est facile
    2. Puis on veut des animations. Pas de problème, on fait un super format XML, un éditeur, on gère la durée des frames une à une, on gère le nombre de boucles, on gère le début et la fin de la partie à boucler.
    3. Puis finalement on se dit que pour faire les personnages et d'autres trucs complexes, il nous faut plusieurs animations. OK, on fait un super format XML, un éditeur, et on gère un concept d'action de personnage durant laquelle une animation est jouée.
    4. Puis finalement on met plusieurs animations positionn√©es les unes par rapport aux autres. Et puis pendant qu'on y est on g√®re l'encha√ģnement des actions et un syst√®me de connexion avec le code du personnage (i.e. la fonction √† appeler √† un moment ou √† un autre d'une action).
    5. Et puis finalement c'est pas au point, le mouvement des anims les unes par rapport aux autres est trop brutal alors on ajoute aussi l'interpolation de mouvement.
    6. Et puis finalement il y a plein d'images à l'écran et on dessine plusieurs fois certains points à l'écran. Alors on fait un super algo qui découpe les sprites à l'affichage pour éviter de dessiner les parties invisibles. Et puis on implémente un algo qui calcule le plus grand rectangle opaque dans chaque sprite pour optimiser l'affichage.

    Et au bout d'un moment on se demande : o√Ļ est le contenu du jeu dans tout √ßa¬†? On a un super moteur qui r√©pond √† quasiment toutes nos probl√©matiques, modulaire et ind√©pendant de notre jeu, on a quasiment pas de niveaux, et on voit les autres d√©veloppeurs de jeux qui revivent la m√™me histoire.

    Si je n'ai qu'un conseil à te donner, c'est de te concentrer sur le contenu de ton jeu. Attention à ne pas passer trop de temps sur la technique ; c'est très satisfaisant mais ça ne fait pas avancer le jeu. Va au plus simple, capitalise sur le concept, et essaie de te montrer sur des sites de jeux genre indiedb afin d'avoir des retours sur ce qui compte dans les jeux : le contenu.

    • [^] # Re: Retours d'exp√©rience

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

      essaie de te montrer sur des sites de jeux genre indiedb afin d'avoir des retours sur ce qui compte dans les jeux : le contenu

      et pourquoi pas sur http://jeuxlibres.net comme ce qui a été mis à jour : http://jeuxlibres.net/showgame/newton_adventure.html ?
      Bon, c'est un exemple, il y a aussi jeuxlinux.fr et bien d'autres recensés sur http://faq.tuxfamily.org/CommunicationLibre/Fr et plus spécifiquement sur la page concernant les jeux.

      Oui, cela demande pas mal de comm' (et souvent d'expliquer les tenants et aboutissants d'avoir choisi de faire son jeu en libre, qui doit sans doute dissuader quelques contributeurs…) mais cela n'en vaut-il pas le coup¬†? Quitte √† faire un jeu, autant qu'il soit utilis√©¬†?
      Je suis preneur de commentaires sur cette page d'ailleurs :-) (qui est s√Ľrement tr√®s incompl√®te).

      • [^] # Re: Retours d'exp√©rience

        Post√©¬†par¬† (site web personnel) . √Čvalu√©¬†√†¬†6.

        Le problème que je vois dans jeuxlibres.net et jeuxlinux.fr, mais aussi happypenguin.org et lgdb.org, c'est qu'ils mettent le focus sur des qualités des jeux qui ne sont pas les plus importantes : c'est libre ou ça tourne sous Linux.

        Je ne dis pas que ce ne sont pas des qualités mais ça me semble aussi peu intéressant que de présenter son jeu sur un site sur Java par exemple. Ça ne concerne aucunement ce qui me semble être le plus important, c'est à dire le contenu. En allant sur des sites de jeux indépendant, ce qu'est effectivement Newton Adventure, les échanges et les commentaires tourneront autour du jeu, et le projet avancera.

        Ce sont les retours des joueurs qui donnent envie de bosser sur les projets. Et les joueurs de jeux sous Linux, ou de jeux libres, sont avant tout des joueurs. Vu le temps que ça demande de communiquer sur un projet, autant le faire au plus efficace, c'est à dire sur des sites internationaux de jeux. Ça n'empêche pas de discuter de technique ou de liberté sur d'autres sites, mais il vaut mieux le faire s'il reste du temps.

        Un type de contributeur que j'aimerais bien avoir et que je n'ai jamais vu serait une personne qui suivrait l'avanc√©e du projet quasiment en permanence. Elle publierait avec un regard externe les avanc√©es, et plut√īt d'une mani√®re orient√©e jeu. Aujourd'hui les nouvelles sont li√©es √† la sortie du logiciel, et la plupart des articles sont carr√©ment propos√©s par les d√©veloppeurs. √áa me semblerait plus utile d'avoir un suivi √† la semaine ou au mois des nouveaut√©s en cours de d√©veloppement, et √ßa aiderait les projets √† ne pas sembler morts durant les ann√©es qui s√©parent les sorties.

        • [^] # Re: Retours d'exp√©rience

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

          En allant sur des sites de jeux indépendants

          lesquels ?

          autant le faire au plus efficace, c'est-à-dire sur des sites internationaux de jeux

          tu as d√Ľ louper http://freegamedev.net/wiki/Main_Page que j'indique sur http://faq.tuxfamily.org/CommunicationLibreGame/Fr¬†? (il y en a d'autres)

          Elle publierait avec un regard externe les avanc√©es, et plut√īt d'une mani√®re orient√©e jeu

          c'est ce qui serait intéressant sur jeuxlibres.net : faire se rencontrer ceux qui ont essayé le jeu et ceux qui cherchent à l'améliorer ; cela toucherait un public différent du forum dédié au jeu.

          ça aiderait les projets à ne pas sembler morts durant les années qui séparent les sorties.

          release early, release often : c'est si dur de packager un tar.bz2 (ou tar.lzma) ? Autant l'automatiser quand il y a des améliorations suffisantes le permettant (au pire, tous les 6 mois, mais ça doit bien être faisable une fois tous les 2 mois si le "packaging" et la génération du changelog sont automatiques ?).
          Je te rejoins, généralement cela demande une personne "extérieure" qui peut faire le point et donner quelques indications sur ce qu'il reste à finaliser.

          • [^] # Re: Retours d'exp√©rience

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

            Quitte à me répéter, les sites que tu listes sont orientés vers le libre et je ne pense pas que ce soit le point le plus important. Pour faire un jeu libre il faut faire un jeu (ça prend plusieurs mois) et copier une licence libre dans le dossier du jeu (ça prend une seconde au début du projet). Une fois que la licence est copiée, il vaut mieux, à mon avis, aller se montrer aux joueurs.

            Pourquoi aller sur freegamedev.net plut√īt que gamedev.net¬†? J'en apprends plus sur gamedev.net et j'y ai m√™me trouv√© des contributeurs pour mon jeu libre. Sur les sites qui tournent autour du libre j'ai plut√īt des retours qui me disent ¬ę¬†t'as vu ce que font les gens de XXX¬†?¬†¬Ľ ou pire, ¬ę¬†pourquoi tu ne vas pas sur openfreefreedomartandstuff.org pour trouver tes ressources¬†?¬†¬Ľ

            Pourquoi aller sur jeuxlibres.net se montrer √† un petit groupe de francophones plut√īt que sur indiedb, o√Ļ des joueurs du monde entier essaieront le jeu¬†? Si vous voulez supporter le jeu libre, ce n'est pas pour les libristes qu'il faut faire des sites, c'est pour les joueurs.

            Quand il s'agit d'outils informatiques, de bureautique par exemple, les utilisateurs du libre cherchent des alternatives √† des outils ferm√©s. Ce n'est pas aussi vrai pour les jeux, o√Ļ les utilisateurs cherchent plut√īt des nouveaux jeux.

            release early, release often : c'est si dur de packager un tar.bz2 (ou tar.lzma) ? Autant l'automatiser quand il y a des améliorations suffisantes le permettant (au pire, tous les 6 mois, mais ça doit bien être faisable une fois tous les 2 mois si le "packaging" et la génération du changelog sont automatiques ?).

            Oui c'est dur de packager un tar.xxx et de le diffuser. Les ajustements pour les différentes plates-formes demandent du temps. L'annonce d'une nouvelle version et son résumé demandent du temps. L'upload met du temps à se faire. L'appli mets du temps à compiler. Le public ne veut pas du source, il veut un truc pour son système, alors faire un deb/rpm ou une compilation statique prend aussi du temps.

            Il me faut généralement un jour et demi pour finaliser l'archive de mon jeu. Après quoi il faut encore rédiger l'annonce de la nouvelle version et la diffuser.

            Donc √† mon avis, qui ne vaut que ce qu'il vaut, l'√©nergie d√©pens√©e pour entretenir des sites comme jeuxlibres.net ou jeuxlinux.fr serait mieux investie dans une veille de l'avancement du dev des jeux et la publication des avanc√©es sur des sites de jeux (pas ¬ę¬†jeux libres¬†¬Ľ, juste ¬ę¬†jeux¬†¬Ľ). √áa soulagerait les developpeurs, √ßa augmenterait la visibilit√© et les retours et donc leur motivation.

            • [^] # Re: Retours d'exp√©rience

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

              Pourquoi aller sur jeuxlibres.net se montrer √† un petit groupe de francophones plut√īt que sur indiedb, o√Ļ des joueurs du monde entier essaieront le jeu¬†?

              Je suis aussi pr√©sent sur indiedb qui ne m'a ramen√© que 2 commentaires… De plus les news sont filtr√©es, il faut vraiment proposer un super article pour √™tre publi√©, ce qui rend difficile la mise √† disposition de release interm√©diaire. De plus ils n'acceptent que les contenus originaux, donc si tu as d√©j√† publi√© ta news ailleurs, c'est mort…

              Pour faire de l'audience, il faut être présent sur beaucoup de sites et passer du temps à rédiger articles sur articles. Je le fais un peu de temps en temps, mais ma force de frappe est limité, surtout que ce qu'apprécie les joueurs ce sont les tests, pas l'autopromotion.

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

            • [^] # Re: Retours d'exp√©rience

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

              Oui c'est dur de packager un tar.xxx et de le diffuser.
              Les ajustements pour les différentes plates-formes demandent du temps.
              L'appli mets du temps à compiler.

              Avec du Java c'est quand même plus simple!

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

        • [^] # Re: Retours d'exp√©rience

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

          Le gros problème de jeuxlibres.net ou happypenguin.org, c'est que ce sont des bases de données.

          Les sites qui attirent des joueurs proposent des tests, des trucs et astuces, des solutions, des rétrospectives, des interviews, bref un travail de journaliste que l'équipe de développement d'un jeu ne peut faire (ou alors ça tourne à la publi-information indigeste).

          En fait il manque (ou je n'ai pas encore trouvé) un site consacré aux jeux libres dont les rédacteurs sont des amateurs de jeux vidéos et pas des développeurs :-)

          Il faudrait peut √™tre entrer en contact avec les cr√©ateurs de jeuxlibres.net pour leur soumettre ces id√©es…

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

          • [^] # Re: Retours d'exp√©rience

            Post√©¬†par¬† (site web personnel) . √Čvalu√©¬†√†¬†2. Derni√®re modification le 23 avril 2012 √† 23:25.

            jeuxlibres.net permet d'écrire des dépêches, comme sur linuxfr.org :-) (il suffit de s'inscrire)

            Cela peut donc concerner un retour de test, des trucs et astuces, des r√©trospectives…
            En outre, il est possible de laisser des commentaires (bon, sans le système de notation propre à LinuxFr.org mais bon), de même il suffit de s'inscrire ;-)

            C'est par exemple ainsi que lanpower a repris en partie l'animation du site.

            • [^] # Re: Retours d'exp√©rience

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

              C'est par exemple ainsi que lanpower a repris en partie l'animation du site.

              Oui le site semble bouger un peu plus après une période de calme. Au passage j'espère qu'ils augmenteront la taille de la police et des screenshots, car c'est vraiment trop petit!

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

        • [^] # Re: Retours d'exp√©rience

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

          Mon probl√®me avec ces sites, c'est le rapport signal sur bruit. 90% des jeux qui sont pr√©sent√©s sont soit mauvais, soit sans rapport avec mes go√Ľts personnels. Au final on est perdu dans la masse. C'est particuli√®rement vrai pour Happypenguin, d'ailleurs.

    • [^] # Re: Retours d'exp√©rience

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

      Je n'ai pas l'impression dans tes propos que tu aies bien fait le tour du besoin.

      Mon besoin, c'était:

      • un format g√©rant des images 32 bits RGBA.
      • g√©rer le texture packing de plusieurs animations.
      • facile √† parser, directement chargeable par opengl et r√©utilisable.

      Jusqu'ici je réponds à 100% à mon besoin et je m'en suis d'ailleurs félicité 3 fois ce matin en m'admirant nu dans le miroir.

      Si je n'ai qu'un conseil à te donner, c'est de te concentrer sur le contenu de ton jeu.

      J'ai passé cette phase il y a longtemps :-)

      Avec ses 25 niveaux, Newton Adventure est loin d'√™tre un jeu vide et la prochaine version comportera un sc√©nario, de nouveaux graphismes, des niveaux suppl√©mentaires…

      Par contre, ce n'est plus tellement moi qui ajoute du contenu, mais d'autres contributeurs, donc j'ai le temps de proposer des solutions techniques hors de mon jeu.

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

      • [^] # Re: Retours d'exp√©rience

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

        Tout d'abord bravo pour ton jeux et ta librairie/ton outil, devnewton.

        Juste une question: l'étape d'après les animations sera la détection des collisions, non?
        Ça me parait lié, enfin si on veut avoir une détection des collisions précise au pixel près..

        • [^] # Re: Retours d'exp√©rience

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

          Pour les collisions, pas seulement la d√©tection, j'utilise phys2d, un moteur physique o√Ļ l'on d√©crit les objets et les personnages d'un niveau selon diff√©rentes propri√©t√©s:

          • la forme (cercle, rectangle ou polygone)
          • le poids
          • la "friction"
          • les mouvements possibles de l'objet: il peut √™tre d√©pla√ßable, pivotable ou toujours immobile.

          Après il y a des forces globales (la gravité ou la force du vent) ou ponctuelles (une collision avec des piques fait bondir Newton).

          Pour des raisons de performance, la collision au pixel près n'est pas possible, je me contente des formes simples proposées par phys2d.

          De plus en plus de jeux 2D font comme √ßa, mais plut√īt avec box2d, un moteur plus moderne (l'auteur m√™me de phys2d le conseille et malheureusement pour moi a arr√™t√© de travailler sur phys2d).

          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.