IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Outil de génération de feuilles de sprites


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 104
    Points : 614
    Points
    614
    Par défaut Outil de génération de feuilles de sprites
    Salut,

    J'ai écrit deux outils pour construire des feuilles de sprites à partir de la ligne de commande et j'aimerais votre opinion à leur sujet.

    Le premier outil se nomme auto-pack-my-sprites ; il reçoit une collection de fichiers d'images et construit une feuille de sprites les contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # crée un fichier nommé sprite-sheet.png avec toutes les resources du dossier assets.
    auto-pack-my-sprites assets/*.png
    Cet outil accepte des options pour contrôler la taille de la feuille, pour appliquer un effet de débordement (bleeding) et pour ajuster l'écart entre les sprites, entre autres. Il peut aussi générer un atlas au format CSS, Cocos2d-x et en texte brut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # crée un fichier nommé sprites.png, dont la largeur et la hauteur sont
    # limités à 2048 pixels, contenant toutes les images du dossier assets/dry,
    # tels quels, et toutes les images du dossier assets/bleed avec un filtre
    # de débordement ; sans espace entre les sprites, et génère un atlas au
    # format Cocos2d-x.
    auto-pack-my-sprites --output "sprites" \
        --size 2048x2048 \
        assets/dry/*.png \
        --bleeding assets/bleed/*.png \
        --margin 0 \
        --plist
    Il gère aussi la génération de plusieurs feuilles si les sprites ne peuvent pas tous tenir dans une seule. Sur certains points cet outil est similaire à glue et à la version en ligne de commande de TexturePacker.

    Le second outil est pack-my-sprites ; il crée les sprites en combinant certains calques choisis dans une image XCF (le format de GIMP) puis il arrange ces sprites dans une feuille. Cela permet de se libérer de l'étape pénible de la production des sprites en fichiers individuels à partir de GIMP.

    Par exemple, je dessine toutes les éléments d'une animation dans plusieurs calques sous GIMP :

    Nom : gimp-example.png
Affichages : 1166
Taille : 183,5 Ko

    Puis je décris dans un fichier comment construire les images de l'animation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    sprite_sheet "projectiles" 256 x 512 margin 1
     
    lava "water-fire-stone.xcf.bz2"
     
    "lava 1" image_size * 1 with lava
      "base"
    ;
     
    "lava 2" image_size * 1 with lava
      "base 2"
    ;
     
    "lava 3" image_size * 1 with lava
      "base 3"
    ;
     
    "lava 4" image_size * 1 with lava
      "base 2"
      "bubble right 1"
    ;
     
    "lava 5" image_size * 1 with lava
      "base"
      "bubble right 2"
    ;
    /* …more frames… */
    Et je lance l'outil sur ce fichier pour générer la feuille de sprites :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pack-my-sprites projectile.spritedesc
    Et hop :

    Nom : projectiles.png
Affichages : 1023
Taille : 11,9 Ko

    À partir de là je peux retravailler l'image source et reconstruire immédiatement la feuille de sprites. Tant que je ne change pas la liste des calques qui composent les sprites, le fichier en sortie sera immédiatement utilisable.

    Le code C++ des outils est disponible sur GitHub sous les termes de la version 3 du contrat GNU AGPL.

    Pour les futures versions j'envisage de gérer la création d'atlas au format utilisé par libgdx, d'ajouter un outil pour extraire les sprites d'une feuille de sprites et ajouter une option pour supprimer les contour transparents des sprites. J'envisage aussi de remplacer le format utilisé par `pack-my-sprites` par une syntaxe plus classique, certainement du Json.

    Pensez-vous que ces outils vous seront utiles*? Y-a-t-il une fonctionnalité que vous aimeriez avoir ?
    Images attachées Images attachées  

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    C'est super intéressant. Habituellement, j'utilise darkFunction Editor. Ce que j'aime bien, c'est la génération d'un XML pour que je retrouve les coordonnées de mes sprites et vous n'en parlez pas (ou indirectement vu que je ne connais pas tous les formats de sprites).
    Est-ce que le fichier décrivant les animations est compatible avec une bibliothèque, ou c'est un format à vous ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 104
    Points : 614
    Points
    614
    Par défaut
    L'outil peut générer trois formats de fichiers avec les coordonnées des sprites*: un format xml «*plist*» tel qu'utilisé dans Cocos2d (c'est la même structure que ce que produit Zwoptex), un format CSS adhoc (plutôt pour du web que des jeux donc) et un format texte brut que j'utilisais avec le Bear Engine.

    Je ne connaissais pas darkFunction mais je ne vois pas de difficulté à ajouter leur format. Est-ce qu'ils supportent les feuilles de sprites avec des images tournées à 90 degrés ou bien doivent-ils être tous verticaux*?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Cool pour les formats.
    De ce que j'ai vu, tous les sprites sont verticaux.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Outils pour les feuilles de sprites
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 04/08/2013, 13h44
  2. Quel langage/outil choisir pour export feuille Excel ?
    Par JLDEB dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/10/2006, 23h33
  3. Recherche outil de génération de Pdf
    Par yomax dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 17/02/2006, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo