Journal nanim 1.6

PostĂ© par (site web personnel) . Licence CC By‐SA.
Étiquettes :
20
20
déc.
2013

Bonjour Nal,

Je t'écris pour te donner des nouvelles de nanim. Au départ simple format d'animation 2D basé sur protobuf optimisé pour les jeux vidéos, le projet a évolué pour proposer un outil d'édition d'animation générique.

nanimstudio

Cette version propose les nouveautés suivantes:

Compression

Je suis passé de fossil à git et ce dernier n'apprécie pas les gros fichiers. Nanim étant un format non compressé, on arrive facilement à des fichiers de plusieurs dizaines de mo...

Les fichiers d'animation peuvent ĂȘtre compressĂ©s au format gzip (extension .nanim.gz ou .nanimz).

J'envisage de gérer d'autres types de compression (bzip?) si je trouve des bibliothÚques simples.

Packaging

Je fournis un paquet pour debian et un installeur pour Windows. J'essayerais de faire des rpms ou d'autres paquets si j'ai des demandes.

J'aimerais bien faire des paquets pour Mac OS X, mais je ne sais pas si c'est possible sans acheter une machine Ă  Apple.

JSON

J'envisage de faire une version web de Newton Adventure. Malheureusement, il est assez difficile de gĂ©rer des fichiers binaires avec cette (扊陀) daube (ć‰Šé™€ă“ă“ăŸă§) technologie du futur qu'est HTML5.

J'ai fait un essai, mais ça donne un code est moche et des performances pas terribles... De plus la quasi totalitĂ© des cadriciels de jeu ne prĂ©voient pas qu'une nimage puisse ĂȘtre autre chose qu'une image au format png/jpg/gif.

Comme j'ai peu de chances de faire accepter nanim par (扊陀) le W3C (ć‰Šé™€ă“ă“ăŸă§) (扊陀) le whatg (ć‰Šé™€ă“ă“ăŸă§) la fondation Mozilla, j'ai dĂ©veloppĂ© une version web de nanim en json:

{
 "animations": [
 {
 "name": "walk_up",
 "frames": [
 {
 "duration": 100,
 "image": "ned_image_0.png",
 "u1": 0.0,
 "v1": 0.0,
 "u2": 1.0,
 "v2": 1.0
 },
 {
 "duration": 100,
 "image": "ned_image_1.png",
 "u1": 0.0,
 "v1": 0.0,
 "u2": 1.0,
 "v2": 1.0
 },
 {
 "duration": 100,
 "image": "ned_image_2.png",
 "u1": 0.0,
 "v1": 0.0,
 "u2": 1.0,
 "v2": 1.0
 },
 {
 "duration": 100,
 "image": "ned_image_3.png",
 "u1": 0.0,
 "v1": 0.0,
 "u2": 1.0,
 "v2": 1.0
 }
 ]
 },

Code clean

J'ai également fait beaucoup de ménage: les outils peu utiles ont été abandonnés, la génération des paquets est plus simple et réduits la taille des livrables, le code a été nettoyé...

Aujourd'hui linuxfr et demain le Monde!

nanim commence Ă  ĂȘtre utilisĂ© pour d'autres projets que Newton Adventure. Il y a bien sĂ»r Ned et les maki, mais aussi Akagoria et un Ă©tonnant moteur de jeu qui reproduit le fonctionnement d'une Super Nintendo.

The end?

A plus dans le bus, Nal!

Site officiel
nimage de fin officielle

  • # Git

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

    Je suis passé de fossil à git et ce dernier n'apprécie pas les gros fichiers

    Utilise le fichier .gitignore, Ă  priori versionner des animations n'a pas grand intĂ©rĂȘt (mais je peux me tromper)

    kentoc'h mervel eget bezan saotred

    • [^] # Re: Git

      PostĂ© par (site web personnel, Mastodon) . ÉvaluĂ© Ă  4.

      Je crois que tu te trompes...

      • [^] # Re: Git

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

        Ben non : il vaut mieux versionner les sources des animations que les fichiers nanim...

        ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

        • [^] # Re: Git

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

          Je ne vois pas en quoi tu n'es pas d'accord avec moi: ce que tu dis revient à versionner des animations, et ça c'est utile. Je n'ai pas parlé de versionner des sources ou des fichiers générés.

    • [^] # Re: Git

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

      Dans un jeu, les animations font parti du projet!

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

      • [^] # Re: Git

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

        Dans ce cas, comme dit plus haut, versionne les infos permettant de gĂ©nĂ©rer les animations, pas les animations elle-mĂȘmes. Tu les gĂ©nĂ©reras Ă  la volĂ©e au moment de la compilation. Dans tous les cas, tout ce qui peut ĂȘtre gĂ©nĂ©rĂ© automatiquement ne devrait jamais ĂȘtre en gestion de configuration, Ă  quelques exceptions prĂšs.

        • [^] # Re: Git

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

          Dans le format, il n'y a que des informations pour générer des animations...

          • [^] # Re: Git

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

            Dans le format, il n'y a que des informations pour générer des animations...

            Et juste avec ces informations

            on arrive facilement Ă  des fichiers de plusieurs dizaines de mo...

            ça me semble étrange m'enfin bon, je dis ça je ferme ma g.... et je ~~~>[]

            kentoc'h mervel eget bezan saotred

            • [^] # Re: Git

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

              Le problĂšme, qui est d'ailleurs Ă©voquĂ© dans cette dĂ©pĂȘche, c'est que les images sont stockĂ©s en format raw (RGBA) pas compressĂ© et qu'avec beaucoup d'images, ça peut faire beaucoup de place sur le disque. Avec une compression zlib, on va arriver grosso-modo Ă  la mĂȘme chose que des png.

              • [^] # Re: Git

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

                Ok c'est bien ce qui me semblais !
                Alors je reviens Ă  mon raisonnement initial, quel intĂ©rĂȘt a versionner des images et pas juste les infos pour animer celles-ci ?

                kentoc'h mervel eget bezan saotred

        • [^] # Re: Git

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

          Dans ce cas, comme dit plus haut, versionne les infos permettant de gĂ©nĂ©rer les animations, pas les animations elle-mĂȘmes

          Ces infos sont dans les fichiers nanim :-)

          nanim est un format Ă  comparer avec gif ou apng.

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

          • [^] # Re: Git

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

            du coup ce ne serait pas plus souple de faire un fichier d'info Ă  part des images ?

            kentoc'h mervel eget bezan saotred

            • [^] # Re: Git

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

              Ca dépends de la souplesse souhaitée :-)

              Le format json+pngs est là pour ça.

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

    • [^] # Re: Git

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

      Si le problÚme de performance vient du diff binaire de gros fichiers, gitattributes te permet d'éviter cela.

      .gitattributes
      *.nanim binary

      Chaque fichier nanim sera alors vu comme un fichier binaire (git n'essaiera pas de faire un diff ni un show).

    • [^] # Re: Git

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

      Pourquoi avoir lĂąchĂ© fossil, toi qui n'arrĂȘtais pas d'en faire la louange ?

      Sinon pourquoi ne pas sĂ©parer les donnĂ©es du code ? Ça Ă©vide d'avoir un dĂ©pĂŽt trop lourd tout en les versionnant. C'est ce qu'on fait pour SĂ T: d'un cĂŽtĂ© les mĂ©dias, et de l'autre le code (mais on a Ă©videmment beaucoup moins de fichiers binaires que pour un jeu). Mercurial s'en sort pas trop mal, m'Ă©tonne que ça ne soit pas le cas pour git.

      • [^] # Re: Git

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

        Pourquoi avoir lĂąchĂ© fossil, toi qui n'arrĂȘtais pas d'en faire la louange ?

        J'adore toujours fossil, mais j'ai commencé à travailler avec d'autres personnes et vu que tout le monde fait du git... Monde de merde!

        Sinon pourquoi ne pas séparer les données du code ?

        La gestion de version est aussi intĂ©ressante pour les donnĂ©es et c'est plus simple d'avoir tout au mĂȘme endroit.

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

        • [^] # Re: Git

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

          La gestion de version est aussi intĂ©ressante pour les donnĂ©es et c'est plus simple d'avoir tout au mĂȘme endroit.

          Oui j'entends bien, je parlais de sĂ©parer dans un autre dĂ©pĂŽt. Ça rend le dĂ©pĂŽt de code moins lourd (tĂ©lĂ©charger les binaires Ă  chaque clone, c'est un peu relou et pas cool pour le serveur), et les mĂ©dias bougent moins souvent a priori (mĂȘme pour un jeu). Pour SĂ T le backend est dans sat, les mĂ©dias sans sat_media: http://repos.goffi.org/

          La gestion de version est bien utile pour les binaires aussi, je suis d'accord.

          • [^] # Re: Git

            PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2. DerniĂšre modification le 20 dĂ©cembre 2013 Ă  17:03.

            télécharger les binaires à chaque clone, c'est un peu relou et pas cool pour le serveur

            Pour ça je clone depuis github et je push/pull avec le dépÎt du jeu. Un peu de cloud dans l'autohébergement, ça ne fait pas de mal :-)

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

            • [^] # Re: Git

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

              Tu pourrais peut-ĂȘtre essayer git-annex qui est prĂ©vu pour les fichiers binaires. L'utilisation est un peu diffĂ©rente de git et le support de windows est pas au top mais c'est trĂšs prometteur.

  • # xz

    PostĂ© par (site web personnel, Mastodon) . ÉvaluĂ© Ă  7.

    Les fichiers d'animation peuvent ĂȘtre compressĂ©s au format gzip (extension .nanim.gz ou .nanimz).
    J'envisage de gérer d'autres types de compression (bzip?) si je trouve des bibliothÚques simples.

    xz ?

    Je fais pas de java, mais une brĂšve recherche m'indique apache common compress (licence apache) et xz for java (domaine public).

    ce commentaire est sous licence cc by 4 et précédentes

  • # APNG

    PostĂ© par . ÉvaluĂ© Ă  2. DerniĂšre modification le 20 dĂ©cembre 2013 Ă  15:07.

    Les spec de ton format nanim ne sont elles pas couvertes par l'APNG qui lui est lisible sous Firefox ?

    • [^] # Re: APNG

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  4. DerniĂšre modification le 20 dĂ©cembre 2013 Ă  15:22.

      nanim a quelques particularités:

      • un fichier contient plusieurs animations.
      • les frames sont dĂ©couplĂ©es des images (une frame est une vue vers une sous partie d'une image).
      • le format des images permets de les charger directement via OpenGL.

      L'idée c'est de pouvoir charger toutes les animations d'un niveau trÚs vite dans le GPU en minimisant le nombre de texture.

      nanim

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

      • [^] # Re: APNG

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

        Pourquoi imposer des textures aux dimensions Ă©gales Ă  des puissances de 2 ? Je sais bien que de nombreuses cartes requiĂšrent des textures en puissance de 2, mais rien n'empĂȘche crĂ©er une texture de cette taille et transfĂ©rer l'image quelconque sur une partie de la texture avec glTexSubImage2D. Est-ce que ça apporte un avantage ?

        • [^] # Re: APNG

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

          Pourquoi imposer des textures aux dimensions égales à des puissances de 2 ?

          C'est nanimopt qui par défaut génÚrent des images de 128x128 à 1024x1024, mais ces tailles sont configurables.

          transférer l'image quelconque sur une partie de la texture avec glTexSubImage2D

          Il faut que j'étudie la question!

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

Suivre le flux des commentaires

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