Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [Tutoriel] Utiliser le Sprite Optimizer
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

[Tutoriel] Utiliser le Sprite Optimizer

Posté le 19/08/2018 16:39

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





sprite.png processed in 71 lines (0.622s)

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



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

Fichier joint


1, 2, 3 Suivante
Lephenixnoir En ligne Administrateur Points: 24146 Défis: 170 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 !
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Ne0tux Hors ligne Membre d'honneur Points: 3524 Défis: 265 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 En ligne Labélisateur Points: 11631 Défis: 176 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
Ninestars Hors ligne Membre Points: 2461 Défis: 24 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: 1925 Défis: 40 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 En ligne Labélisateur Points: 11631 Défis: 176 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
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 24/08/2018 00:01 | #


Ah c'est pratique ça bien vu
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 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
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 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 Maître du Puzzle Points: 1524 Défis: 11 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.
Breizh_craft Hors ligne Modérateur Points: 1157 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 ?
Breizh.pm – Un adminsys qui aime les galettes.
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 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é.
Breizh_craft Hors ligne Modérateur Points: 1157 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é.
Breizh.pm – Un adminsys qui aime les galettes.
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 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...
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 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
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 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.
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 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
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 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
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 02/09/2018 21:16 | #


Nice \o/
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 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)
1, 2, 3 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 101 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd