[Game tool]spritesheet maker
[Game tool]spritesheet maker
Salut
Voici un petit utilitaire que j'ai conçu car j'en avais besoin pour les jeux que je développe en ce moment.
Fonctions
V1.2x (28/09/2015) :
- outil d'animation
- oignon skining
- ajout de frame, suppression de frame
V1.0
- possibilité d'ajouter et de créer des menus
V0.72 (01/04/2014) :
- Ajout bouton pour ajuster la taille des frames, ajout bouton frame courrante, départ et fin du preview (on s'en sert pour l'édition, par exemple réaliser un miror horizontale sur les frames choisies),
- la grille change en fonction de la taille des frames
- miror sur les frames sélectionnées (dans l'onglet preview)
- ajout des extensions lors de la sauvegarde ou de l'export en png
- corrections de bugs
V 0.6 (31/03/2014)
- ouverture de plusieurs images (menu files\open serie of images) : toutes les images doivent être dans un dossier unique
- ouverture d'un spritesheet (une seule) (files\Open spritesheet)
- export vers une image png (un spritesheet)
- on peut faire quelques modifications (bouger la position,changer l'alpha des frames, couper/copier/coller...)
- on peut ajouter une ombre si besoin, avec quelques paramètres (alpha, position, taille)
- preview : on peut visualiser l'animation du spritesheet. On peut prévisualiser l'offset ou la boundingbox si besoin, ça peut être utile pour connaitre le centre d'un sprite ou définir la bouding box pour les collisions par exemple
Screenshots
Création d'animation (on peut dessiner sur les images), depuis la 1.20
Version 1.24
Oignon skining :
Version 1.22
Création d'animation (pour l'instant c'est très basique)
Création de menu (depuis la 1.0)
Version 1.05
V0.95
V 0.81
V 0.54
Download
Version 0.71 (01/04/2014)
http://blendman.free.fr/dev/pb/spritesh ... tMaker.zip
Todolist
- Ajouter des outils basiques de dessins
- pouvoir faire des Batchs
- pouvoir ajouter des images (multi-sélection) et non toutes les images d'un répertoire
- pouvoir ajouter des frames vides
- pouvoir ajouter des images en plus (merge)
- ajouter des fx d'animation : fade (in/out), déplacement, échelle...
Peut-être que ça sera utile à certains d'entre vous .
Si vous avez des souhaits particuliers, ou que vous aimeriez d'autres fonctions, vous pouvez toujours poster vos suggestions, si j'ai le temps, j'essaierai de les ajouter (mais rien n'est sûr lol).
Logiquement, il n'y a plus de bugs, mais si vous en trouvez, signalez-le .
Voici un petit utilitaire que j'ai conçu car j'en avais besoin pour les jeux que je développe en ce moment.
Fonctions
V1.2x (28/09/2015) :
- outil d'animation
- oignon skining
- ajout de frame, suppression de frame
V1.0
- possibilité d'ajouter et de créer des menus
V0.72 (01/04/2014) :
- Ajout bouton pour ajuster la taille des frames, ajout bouton frame courrante, départ et fin du preview (on s'en sert pour l'édition, par exemple réaliser un miror horizontale sur les frames choisies),
- la grille change en fonction de la taille des frames
- miror sur les frames sélectionnées (dans l'onglet preview)
- ajout des extensions lors de la sauvegarde ou de l'export en png
- corrections de bugs
V 0.6 (31/03/2014)
- ouverture de plusieurs images (menu files\open serie of images) : toutes les images doivent être dans un dossier unique
- ouverture d'un spritesheet (une seule) (files\Open spritesheet)
- export vers une image png (un spritesheet)
- on peut faire quelques modifications (bouger la position,changer l'alpha des frames, couper/copier/coller...)
- on peut ajouter une ombre si besoin, avec quelques paramètres (alpha, position, taille)
- preview : on peut visualiser l'animation du spritesheet. On peut prévisualiser l'offset ou la boundingbox si besoin, ça peut être utile pour connaitre le centre d'un sprite ou définir la bouding box pour les collisions par exemple
Screenshots
Création d'animation (on peut dessiner sur les images), depuis la 1.20
Version 1.24
Oignon skining :
Version 1.22
Création d'animation (pour l'instant c'est très basique)
Création de menu (depuis la 1.0)
Version 1.05
V0.95
V 0.81
V 0.54
Download
Version 0.71 (01/04/2014)
http://blendman.free.fr/dev/pb/spritesh ... tMaker.zip
Todolist
- Ajouter des outils basiques de dessins
- pouvoir faire des Batchs
- pouvoir ajouter des images (multi-sélection) et non toutes les images d'un répertoire
- pouvoir ajouter des frames vides
- pouvoir ajouter des images en plus (merge)
- ajouter des fx d'animation : fade (in/out), déplacement, échelle...
Peut-être que ça sera utile à certains d'entre vous .
Si vous avez des souhaits particuliers, ou que vous aimeriez d'autres fonctions, vous pouvez toujours poster vos suggestions, si j'ai le temps, j'essaierai de les ajouter (mais rien n'est sûr lol).
Logiquement, il n'y a plus de bugs, mais si vous en trouvez, signalez-le .
Dernière modification par blendman le lun. 28/sept./2015 18:21, modifié 4 fois.
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Re: [Game tool]spritesheet maker
Ca bouge sur le forum
Fonctionne parfaitement sur mon pc en carton (HP Pavilion acheté en 2006, qui a échappé à plusieurs tentatives de meurtre de la part d'EDF ~la carte mère commence à gémir un peu ~)
Encore un petit logiciel bien utile !
Avec le boulot de majikeyric et le tien, bientôt on n'aura plus d'excuses pour ne pas produire quelque chose !!
Question du jour : simple ou double-boucle repeat ?
Question subsdi...subdsib,...subsidiaire :
Hasta la vista !
Fonctionne parfaitement sur mon pc en carton (HP Pavilion acheté en 2006, qui a échappé à plusieurs tentatives de meurtre de la part d'EDF ~la carte mère commence à gémir un peu ~)
Encore un petit logiciel bien utile !
Avec le boulot de majikeyric et le tien, bientôt on n'aura plus d'excuses pour ne pas produire quelque chose !!
Question du jour : simple ou double-boucle repeat ?
Question subsdi...subdsib,...subsidiaire :
Bientôt des infos ?Voici un petit utilitaire que j'ai conçu car j'en avais besoin pour les jeux que je développe en ce moment.
Hasta la vista !
Elevé au MSX !
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [Game tool]spritesheet maker
Le 2D est à la mode sur ce forum en ce moment. Pourvu que ça dure
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [Game tool]spritesheet maker
je me suis demandé si il fallait se faire un second post pour l'arène du débat parce qu'on a sacrément dévié du sujet originel !Huitbit a écrit :Question du jour : simple ou double-boucle repeat ?
@blendman : beau boulot (mais je suis pas graphiste )
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
Mon site : CeriseCode (Attention Chantier perpétuel )
Re: [Game tool]spritesheet maker
salut
Merci pour vos réponses.
J'ai mis à jour le zip.
Version 0.7 :
- ajout des frames de départ, de fin, frame courrantes : onglet preview
- ajout de boutons pour modifier la taille des frames (W et H) : onglet sprite. Quand on modifie la taille de frame, ça modifie tout le spritesheet en temps réel. La grille change désormais en fonction de la taille de la frame.
- corrections de quelques bugs
Pour les questions :
ça ressemble à ça :
J'ai d'autres jeux commencés, dont un que je compte finir très prochainement (un tower defense). Ce sont des petits jeux, et j'utilise Purebasic pour développer les outils dont j'ai besoin : éditeur de map, de path, font bitmap, ou celui-ci pour créer mes spritesheets ^^. Il m'arrive aussi de faire des bouts de codes, des maquettes avec purebasic lorsque je bloque sur certains trucs, mais après, je dois adapter le code.
Merci pour vos réponses.
J'ai mis à jour le zip.
Version 0.7 :
- ajout des frames de départ, de fin, frame courrantes : onglet preview
- ajout de boutons pour modifier la taille des frames (W et H) : onglet sprite. Quand on modifie la taille de frame, ça modifie tout le spritesheet en temps réel. La grille change désormais en fonction de la taille de la frame.
- corrections de quelques bugs
Pour les questions :
simple boucle avec WaitWindowEvent(1)simple ou double-boucle repeat
ça ressemble à ça :
Code : Tout sélectionner
Repeat
EventID = WaitWindowEvent(1)
EventGadget = EventGadget()
EventMenu = EventMenu()
EventWindow = EventWindow()
If doc\anim = 1
UpdatePreview(1)
EndIf
Select EventID
Case #PB_Event_CloseWindow
quit = 1
CloseWindow(EventWindow)
Case #PB_Event_Menu
Select EventMenu
EndSelect
Case #PB_Event_Gadget
Select EventGadget
EndSelect
EndSelect
Until quit = 1
Ce sont des jeux pour android pour le moment, j'en ai un qui est disponible sur le google play, mais c'était un test pour valider tout le pipeline, depuis la création (avec AGK) jusqu'à la publication (et mise en vente) .Bientôt des infos ?
J'ai d'autres jeux commencés, dont un que je compte finir très prochainement (un tower defense). Ce sont des petits jeux, et j'utilise Purebasic pour développer les outils dont j'ai besoin : éditeur de map, de path, font bitmap, ou celui-ci pour créer mes spritesheets ^^. Il m'arrive aussi de faire des bouts de codes, des maquettes avec purebasic lorsque je bloque sur certains trucs, mais après, je dois adapter le code.
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [Game tool]spritesheet maker
Suite à ce post J'étais en train de codé une petite procédure qui me permet de faire un mirror horizontal global sur chaque frame d'un spritesheet.
Ton code permet de faire un mirror horizontal d'un spritesheet mais il faut le faire frame par frame.
Pourrait on avoir une option sur l'ensemble du spritesheet ou bien sur une sélection de frames (Ex de 2 a 12)?
Ton code permet de faire un mirror horizontal d'un spritesheet mais il faut le faire frame par frame.
Pourrait on avoir une option sur l'ensemble du spritesheet ou bien sur une sélection de frames (Ex de 2 a 12)?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [Game tool]spritesheet maker
Rhoooo mais là je râle Monsieur Blendman : Je viens de faire un miror horizontal de 42 frames un par un d'un spritesheet et j'ai voulu faire une sauvegarde sous et ........ rien !!! Même pas une demande de nom de fichier. Merci pour ce poisson d'avril, je me suis fait avoir
Reedit : Fallait faire une exportation et non pas une sauvegarde
Quand on exporte un spritesheet tu n'ajoutes pas automatiquement l'extension png quand on saisi un nom de fichier.
Reedit : Fallait faire une exportation et non pas une sauvegarde
Quand on exporte un spritesheet tu n'ajoutes pas automatiquement l'extension png quand on saisi un nom de fichier.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [Game tool]spritesheet maker
@falsam : content de voir que ça t'es utile
L'ensemble du spritesheet, ça devrait être facile et rapide . [Edit :c'est ok]
Je vais enlever le "save as".
"save document" : permet d'enregistrer certains de tes paramètres, comme l'alpha, x,y, paramètres des ombres (alpha, x,y,size) pour le moment.
J'ajouterai le miror, l'offset, les bouding box, etc... pour une prochaine version .
EDIT : bon, ben ça a été super rapide à ajouter le miroir des frames sélectionnées
J'ai mis à jour le zip :
- miror sur les frames sélectionnées (dans l'onglet preview)
- ajout des extensions lors de la sauvegarde ou de l'export en png
- corrections de quelques bugs qui faisaient planter le soft quand on avait aucune image (ex : en utilisant le miror horizontal)
je vais ajouter ça sur ma todolistPourrait on avoir une option sur l'ensemble du spritesheet ou bien sur une sélection de frames (Ex de 2 a 12)?
L'ensemble du spritesheet, ça devrait être facile et rapide . [Edit :c'est ok]
oui, si tu veux "exporter" tes images en un spritesheet, c'est export qu'il faut faire.falsam a écrit :Rhoooo mais là je râle Monsieur Blendman : Je viens de faire un miror horizontal de 42 frames un par un d'un spritesheet et j'ai voulu faire une sauvegarde sous et ........ rien !!! Même pas une demande de nom de fichier. Merci pour ce poisson d'avril, je me suis fait avoir
Reedit : Fallait faire une exportation et non pas une sauvegarde
Je vais enlever le "save as".
"save document" : permet d'enregistrer certains de tes paramètres, comme l'alpha, x,y, paramètres des ombres (alpha, x,y,size) pour le moment.
J'ajouterai le miror, l'offset, les bouding box, etc... pour une prochaine version .
C'est corrigé.Quand on exporte un spritesheet tu n'ajoutes pas automatiquement l'extension png quand on saisi un nom de fichier.
EDIT : bon, ben ça a été super rapide à ajouter le miroir des frames sélectionnées
J'ai mis à jour le zip :
- miror sur les frames sélectionnées (dans l'onglet preview)
- ajout des extensions lors de la sauvegarde ou de l'export en png
- corrections de quelques bugs qui faisaient planter le soft quand on avait aucune image (ex : en utilisant le miror horizontal)
Dernière modification par blendman le mar. 01/avr./2014 14:01, modifié 1 fois.
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [Game tool]spritesheet maker
Oui oui j'en ai l'utilité. Je code pour le plaisir un lecteur de scene 2d sous forme de fichier xml (Et bientôt un éditeur of course) Je t'avoue que ton code qui permet de faire un miroir d'un spritesheet l'interesse beaucoup mais je vais chercher un peu (C'est mieux que de se lancer dans le tricot .blendman a écrit :@falsam : content de voir que ça t'es utile
Ton gestionnaire d'ombre et pas mal. L'idéal étant que tu projettes un détourage du sprite au sol. Peut être une prochaine étape ?
Ring sur le forum anglais avait fait quelques chose en ce sens. Mais ça date.
http://www.purebasic.fr/english/viewtopic.php?t=29680
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [Game tool]spritesheet maker
En fait, c'est assez simple :falsam a écrit :Je code pour le plaisir un lecteur de scene 2d sous forme de fichier xml (Et bientôt un éditeur of course) Je t'avoue que ton code qui permet de faire un miroir d'un spritesheet m'interesse beaucoup mais je vais chercher un peu
lorsque j'ouvre une image (un spritesheet), je découpe cette image en frame. Chaque frame étant une nouvelle image.
Par exemple, un spritesheet de 256*256 devient 16 frames (=16 images) de 64*64. Je stocke chaque frame dans un tableau.
Code : Tout sélectionner
Structure sFrame
; structure pour les frame
id.i ; l'image
ImgbaseID.i ; l'image de base au cas où, par exemple si je la redimensionne
x.w
y.w
alpha.a
EndStructure
Global Dim Img.sFrame(0)
Code : Tout sélectionner
Img(CurrentFrame)\id
Code : Tout sélectionner
For i= 0 To NbImg - 1
If IsImage(Img(i)\id)
DrawAlphaImage(ImageID(Img(i)\id), doc\x + Img(i)\x + doc\shadoX, doc\y + Img(i)\y + doc\shadoY, doc\shadoAlpha)
EndIf
Next i
Ensuite, le miror, je le fais sur les images sélectionnées tout simplement (avec une boucle for i = Framestart to frameEnd...)
Du coup, je peux faire plein de transformation sur chacune de ces petites images si je veux ^^.
exemple du code d'ouverture de l'image (le spritesheet complet) :
Code : Tout sélectionner
file$ = OpenFileRequester("Open", "", "Images Files |*.jpg;*.png;*.bmp",-1)
If file$ <>""
doc\file$ = file$
doc\dir$ = GetPathPart(file$)
; on ajoute le psrite sheet (de base) dans la liste des spritesheets
AddElement(SpriteSheet())
SpriteSheet()\img = LoadImage(#PB_Any, file$)
SpriteSheet()\ID = ListSize(SpriteSheet()) - 1
SpriteSheet()\w = ImageWidth(SpriteSheet()\img)
SpriteSheet()\h = ImageHeight(SpriteSheet()\img)
SpriteSheet()\fileName$ = GetFilePart(file$)
AddGadgetItem(#G_listSpriteSheet, -1, SpriteSheet()\fileName$)
CreateTheFrame(SpriteSheet()\img)
doc\type = 1
EndIf
La procedure pour créer les images à partir du spritesheet ouvert, ou recalculer les images si on modifie par exemple la hauteur/largeur du spritesheet :
Code : Tout sélectionner
Procedure CreateTheFrame(img, mode = 0, name$="")
; mode = 0 : on ouvre un spritesheet
; mode = 1 : on recalcule les images des frames, par exemple, en changeant la taille des frames, je dois recalculer chaque frame (image)
If mode = 1 ; on redéfinit les frames
; si on a déjà charger le spritesheet, on peut le modifier, c'est ici que ça se passe
ForEach SpriteSheet()
If SpriteSheet()\fileName$ = GetFilePart(name$)
; on a trouvé notre image (spritesheet), celle dont on se sert.
img = SpriteSheet()\img
Break
EndIf
Next
; on supprime les anciennes images (toutes les frames) si besoin
For i = 0 To NbImg - 1
If IsImage(Img(i)\id)
FreeImage(Img(i)\id)
EndIf
Next i
NbImg = 0
; on redim le tableau des frames
ReDim Img(0)
EndIf
; on définit la taille du document (lors de l'export, ce sera la taille de l'image exporté
w = doc\frameW
h = doc\frameH
; d'abord, on définit la taille de l'image
width = ImageWidth(img)
height = ImageHeight(img)
; je définis le nombre de colonne (frame) et de lignes
NbFrame = width / w
NbLine = height / h
; on a le nouveau nombre d'image
NbNewImg = NbFrame * NbLine
; le nombre d'image actuel
NbImgActuel = NbImg - 1
If NbImgActuel < 0
NbImgActuel = 0
EndIf
; j'ajoute les nouvelles images au nombre total d'images que j'ai déjà (NBImg est global)
NbImg + NbNewImg
; je redéfinis le tableau contenant mes images
ReDim img(NbImg - 1)
; puis, je les crée
For i = 0 To NbNewImg - 1
img(NbImgActuel + i)\id = CreateImage(#PB_Any, w, h, 32)
; pour placer l'image
x = Mod(i, NbFrame)
y = i / NbFrame
img(NbImgActuel + i)\x = x * w
img(NbImgActuel + i)\y = y * h
If StartDrawing(ImageOutput(img(NbImgActuel + i)\id))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,0,w,h,RGBA(0,0,0,0))
DrawingMode(#PB_2DDrawing_AlphaBlend)
DrawAlphaImage(ImageID(img), -x * w, -y * h)
StopDrawing()
EndIf
Next i
EndProcedure
J'y ai pensé. Je pourrais l'ajouter sur ma Todolist aussi ^^.Ton gestionnaire d'ombre et pas mal. L'idéal étant que tu projettes un détourage du sprite au sol. Peut être une prochaine étape ?
Je pense aussi ajouter un système de layers (simple) mais ce ne sera pas pour tout de suite, car là, tel quel, le soft me convient, il fait ce que je voulais, c'est à dire créer un spritesheet à partir de plusieurs images, ou pouvoir modifier un spritesheet existant et le sauvegarder ^^.
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english