Forums Casio - Vos tutoriels et astuces

Index du Forum > Vos tutoriels et astuces > [Tutoriel] Utiliser le Sprite Optimizer
Dark storm
Hors ligne
Membre d'honneur
Points: 10634
Défis: 174
Message
Posté le 19/08/2018 16:39

[Tutoriel] Utiliser le Sprite Optimizer :

Ce topic a pour but d'être à la fois la doc et la page de discussion de l'outil.
Ce document peut ne pas être à jour. La référence officielle est le dépôt GitLab



Qu'est-ce que c'est ?

Le Sprite Optimizer est un outil permettant de générer le code Multi DrawStat optimisé d'une image. Une fois le programme exécuté, il n'y a plus qu'à copier-coller la sortie dans votre éditeur de programme (BIDE par exemple).
Attention, le programme retourne une solution optimisée, qui peut ne pas être la solution optimale. En pratique, la solution proposée est souvent très correcte. Si vous pensez pouvoir faire mieux, n'hésitez pas !
L'outil est librement diffusé sous licence CeCILL 2.1.


Comment l'utiliser ?

Commencez par installer les dépendances puis récupérez l'outil depuis le dépôt de code.
– Python 3 (n'oubliez pas de cocher l'option « ajouter Python et pip au chemin » sous Windows)
– argparse : pip install argparse
– bresenham : pip install bresenham
– pillow : pip install pillow

Ensuite, le fonctionnement est le suivant (pour Windows, une manip plus simple est dispo) :
# Affiche le code uniquement
python3 sprite-optimizer image.png

# Affiche la progression, des infos (lignes, temps d'exécution), et le code
python3 sprite-optimizer -pi image.png

# Retourne le code de l'image pour un ViewWindow inversé (origine en bas à gauche)
python3 sprite-optimizer --flip image.png

# Retourne le code avec un offset de (10, 5)
python3 sprite-optmizer --offset 10 5 image.png

# Affiche l'aide intégrée
python3 sprite-optimizer -h


Le programme possède un shebang pour une exécution plus simple sous Linux : ./sprite-optimizer

Par défaut, l'origine des coordonnées (0, 0) est en haut à gauche. Cela correspond à un ViewWindow 0, 126, 0, 62, 0, 0. Pour inverser le ViewWindow utilisez l'option --flip (ou -f). Pour le décaler, utilisez l'option --offset (ou -o).


Options disponibles

usage: sprite-optimizer.py [-h] [-d] [-f] [-i] [-o OFFSET OFFSET] [-p] [-s]
                           path

Generate the Multi DrawStat code for an image.

positional arguments:
  path                  path of the image to process

optional arguments:
  -h, --help            show this help message and exit
  -d, --draw            draw the result into a new file
  -f, --flip            flip image vertically (for inverted ViewWindow)
  -i, --info            print informative stats
  -o OFFSET OFFSET, --offset OFFSET OFFSET
                        offset for viewwindow. Default: (0, 0)
  -p, --progress        print progress info
  -s, --show            show the result




Exemple de sortie





drak.png processed in 73 lines (11.5s)

Graph(X,Y)=({16-2T, 7-7T, 11-11T, 5-5T, 17-11T, 14-6T, T, 31-31T, 20-26T, 9-10T, 21-31T, 26-27T, 17-23T, 9-8T, 12-18T, 7-14T, 27-36T, 29-34T, 4-4T, 4+4T, 26-22T, 2T, 16-11T, 18-19T, 28-25T, 23-26T, 16-19T, 11-14T, 15-20T, 12-17T, 9-15T, 22-20T, 22-22T, 19-21T, 16-18T, 12-11T, 14-15T, 15-17T, 5-4T, 1, 2-4T, 29-32T, 25-24T, 21-17T, 25-27T, 23-27T, 12-14T, 10-14T, 27-26T, 25-24T, 14-12T, 15-17T, 13-15T, 9-8T, 2T, 2-4T, 26-30T, 14-18T, 26-31T, 22-27T, 19-21T, 30-30T, 29-29T, 24-24T, 21-21T, 17-17T, 14-14T, 14-14T, 13-13T, 12-12T, 6-6T, 2-2T, 1-T}, {26-27T, 21-32T, 21-31T, 20-29T, 24-32T, 2-T, 11-3T, 18-25T, 15-8T, 10-3T, 27-29T, 13-19T, 11-17T, 21-27T, 23-23T, 6-T, 27-29T, 21-21T, 20-25T, 22-25T, 7-4T, 28-32T, 28-34T, 13-7T, 25-33T, 14-11T, 15-17T, 8-8T, 24-22T, 6-6T, 14-7T, 20-21T, 11-13T, 7-8T, 5-5T, 30-32T, 20-18T, 12-10T, 28-30T, 11-9T, 28-30T, 18-15T, 24-20T, 17-19T, 8-12T, 26-30T, 17-13T, 10-10T, 25-27T, 21-23T, 16-17T, 12-12T, 10-12T, 17-19T, 13-14T, 15-15T, 14-11T, 2+2T, 27-32T, 27-29T, 17-23T, 26-26T, 20-20T, 29-29T, 29-29T, 29-29T, 28-28T, 19-19T, 26-26T, 20-20T, 16-16T, 20-20T, 29-29T})



Pour toute demande d'aide, suggestion ou remarque, vous pouvez commenter ce topic

Fichier joint



Pages: 1, 2 | Suivante

Lephenixnoir
Hors ligne
Administrateur
Points: 12804
Défis: 136
Message
Citer : Posté le 19/08/2018 16:41 | #
Bien joué ! Il ne manquait plus que ce topic. Je sens qu'il va se faire linker souvent !
----------------------------------
Rise.
Ne0tux
Hors ligne
Membre d'honneur
Points: 3207
Défis: 261
Message
Citer : Posté le 21/08/2018 14:12 | #
Merci pour le bon boulot et l'article DS !

Le sprite d'exemple fait tellement peur...
----------------------------------
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Dark storm
Hors ligne
Membre d'honneur
Points: 10634
Défis: 174
Message
Citer : Posté le 21/08/2018 14:21 | # | Fichier joint
D'ailleurs, j'ai trouvé la faille de l'algo : si le remplissage se fait à peu près qu'avec des lignes de même longueur, il a du mal à choisir le cas le plus optimal. Exemple :



D'où l'intérêt de vérifier le résultat à la main pour corriger ce genre de défauts. Mais dans la pratique ça n'arrive que rarement, donc c'est à relativiser, surtout par rapport à la qualité des anciens algos générateurs de Drawstat
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Ninestars
Hors ligne
Membre
Points: 2092
Défis: 22
Message
Citer : Posté le 21/08/2018 15:30 | #
Super ce que tu as fait Dark Storm !
Je suis impressionné par la vitesse à laquelle tu as pondu ça
Ça fait un outil de plus pour nous simplifier la vie
----------------------------------
Drak
Hors ligne
Rédacteur
Points: 1856
Défis: 38
Message
Citer : Posté le 21/08/2018 16:02 | #
Super ! C'est une bonne chose de faite !

Ne0tux a écrit :
Merci pour le bon boulot et l'article DS !

Le sprite d'exemple fait tellement peur...

Oh, mais non, il est si mignon ! :3
----------------------------------
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Dark storm
Hors ligne
Membre d'honneur
Points: 10634
Défis: 174
Message
Citer : Posté le 23/08/2018 21:01 | # | Fichier joint
Manuel d'utilisation pour Windows

1. Téléchargement

Téléchargez le fichier zip puis décompressez-le quelque part.

2. Installation de Python

Téléchargez Python 3 depuis le site officiel.
Lancez l'installation. Cochez la case « Add Python 3.7 to PATH ». Cliquez sur « Customize installation ». Vérifiez que la case « pip » est cochée. Le reste n'a que peu d'importance.

3. Installation des dépendances

Dans le dossier que vous avez décompressé, clic-droit sur install.bat puis « Exécuter en tant qu'administrateur ».

4. Utilisation

Placez les images à convertir dans le dossier du Sprite Optimizer.
Glissez-déposez un par un les fichiers JPEG ou PNG à convertir sur launcher.bat. Le script se lance. Une fois fini, le code est disponible dans le fichier output.txt.
Vous pouvez coller le code dans FA-124, BIDE, etc.
En cas d'avertissement : il se peut que Windows râle comme quoi le fichier n'est pas de source fiable. Si vous me faites confiance, vous pouvez outrepasser le message d'alerte (« Plus d'informations » → « Exécuter quand même » sous Windows 10).

Attention ! FA-124 coupe les lignes trop longues dans l'éditeur. Vérifiez que tout a bien été pris en compte, et coupez à la main si nécessaire. Je vous conseille d'utiliser BIDE pour éviter ces désagréments.
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Ninestars
Hors ligne
Membre
Points: 2092
Défis: 22
Message
Citer : Posté le 24/08/2018 00:01 | #
Ah c'est pratique ça bien vu
----------------------------------
Dark storm
Hors ligne
Membre d'honneur
Points: 10634
Défis: 174
Message
Citer : Posté le 24/08/2018 00:29 | #
Je ferai peut-être un installateur, dans le même genre.

Ajouté le 24/08/2018 à 19:35 :
J'ai mis à jour le commentaire.

Est-ce que quelqu'un sous Windows peut me dire si les instructions sont claires et fonctionnelles ?

J'ai testé de mon coté, mais vu que j'ai déjà une installation de Python fonctionnelle, je préfère avoir le retour d'un testeur neutre.
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Drak
Hors ligne
Rédacteur
Points: 1856
Défis: 38
Message
Citer : Posté le 25/08/2018 13:03 | #
J'aurais testé volontiers si mon ordi personnel était encore en vie, cet enfoiré, puisque de toute façon j'aurai besoin de Python 3.
----------------------------------
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Hackcell
Hors ligne
Membre
Points: 844
Défis: 6
Message
Citer : Posté le 28/08/2018 14:46 | #
Je peux tester la manip sous Windows, mon installation de python ayant été faite avec spyder Anaconda, c'est le moment de refaire ça proprement sans installer plein de truc qui ne me servent jamais

Ajouté le 28/08/2018 à 15:55 :
J'en suis a la phase de test, et pour l'instant tout semble fonctionner. J'ai eu un doute quand tu as mis un lien direct vers l’exécutable, était-ce pour la version 32 ou 64 bits ? Il semble que c'est la 32, donc pas de soucis (bien que certaine personne préféreraient sans doute pouvoir profiter de la version 64 bits si possible, si c'est juste pour ce script, ça ne change pas grand-chose et complexifierait le tutoriel)

En tout cas, tu as vraiment bien simplifié le processus à l'aide des fichiers BAT, donc je pense que ça devrait être bon pour tout le monde (la seule façon de faire mieux serait une vidéo, si quelqu’un veut s'y mettre )

Ajouté le 28/08/2018 à 17:08 :
J'ai trouvé un problème, chez moi il est impossible de copier du texte depuis la console Windows, ce qui est problématique pour récupérer le résultat.
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Breizh_craft
En ligne
Modérateur
Points: 845
Défis: 7
Message
Citer : Posté le 28/08/2018 17:14 | #
Tu as bien sélectionner puis fais clic droit, et non essayé de faire Ctrl+C ?
----------------------------------
Informagicien professionnel, prestidigitateur système. Tout est possible.
Hackcell
Hors ligne
Membre
Points: 844
Défis: 6
Message
Citer : Posté le 28/08/2018 17:16 | #
je ne peux même pas selectionner quelque chose

Ajouté le 28/08/2018 à 17:19 :
nop, c'est bon.
Sous Windows Seven, faut faire clic droit -> sélectionner pour être autoriser à sélectionner du texte, puis Ctrl+C pour copier le texte sélectionné.
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Breizh_craft
En ligne
Modérateur
Points: 845
Défis: 7
Message
Citer : Posté le 28/08/2018 17:20 | #
Précision : sous Windows 7. La console standard de Windows 10 a beaucoup changé.
----------------------------------
Informagicien professionnel, prestidigitateur système. Tout est possible.
Hackcell
Hors ligne
Membre
Points: 844
Défis: 6
Message
Citer : Posté le 28/08/2018 17:56 | #
Ca marche moyen et c'est un peu compliquer à faire, donc j'ai rajouter à l'arrache ces deux lignes en fin de fichier
    with open("result.txt",'w') as f:
        f.write(code)
C'est pas optimal, mais ça marche, donc bon...
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Dark storm
Hors ligne
Membre d'honneur
Points: 10634
Défis: 174
Message
Citer : Posté le 28/08/2018 19:19 | #
Ok. Je modifie le .bat pour ne pas avoir à changer le script Python. En effet, j'ai testé sous W10, j'ai pas autre chose
Concernant la version de Python, j'ai pris celle que propose par défaut le site officiel quand on est loggué sous W10. Donc je sais pas si c'est la 64 ou 32…

Merci pour le retour

Ajouté le 28/08/2018 à 19:48 :
J'ai mis à jour le zip et la procédure, tu peux vérifier que tout fonctionne ?
Je mets à jour le script sur la forge (ajout de l'option --export FILE) dès que je boot sous Gnunux.
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Hackcell
Hors ligne
Membre
Points: 844
Défis: 6
Message
Citer : Posté le 29/08/2018 13:47 | #
je peux me tromper, mais j'ai l'impression que le zip est le même qu'avant.
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Dark storm
Hors ligne
Membre d'honneur
Points: 10634
Défis: 174
Message
Citer : Posté le 29/08/2018 13:51 | #
En effet, je sais pas ce que j'ai foutu, c'est louche. Je corrige ce soir.

Ajouté le 29/08/2018 à 21:48 :
Done.
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Hackcell
Hors ligne
Membre
Points: 844
Défis: 6
Message
Citer : Posté le 02/09/2018 21:14 | # | Fichier joint
Tout est bien écrit dans le fichier, il faut encore que je mette ça sur calculatrice.
En revanche, j'ai également des messages d'avertissement sous Windows7
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Dark storm
Hors ligne
Membre d'honneur
Points: 10634
Défis: 174
Message
Citer : Posté le 02/09/2018 21:16 | #
Nice \o/
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Hackcell
Hors ligne
Membre
Points: 844
Défis: 6
Message
Citer : Posté le 02/09/2018 21:56 | #
Je viens de tester, ça marche (bon mon sprite est à 180° en bas a gauche, mais c'est probablement moi qui ai foiré mon ViewWindow)
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐

Pages: 1, 2 | Suivante

Index du Forum > Vos tutoriels et astuces > [Tutoriel] Utiliser le Sprite Optimizer

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 32 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd