Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: deadLock++ en 02 de Agosto de 2003, 02:01:38 AM

Título: [sprites] Formatos, Editores.
Publicado por: deadLock++ en 02 de Agosto de 2003, 02:01:38 AM
 Estoy buscando algún formato de sprite que se pueda crear desde algún editor gnu o shareware.

O al menos la documentación de algún formato de sprite para poder tomar como base, mi motorcito utiliza uno creado por mi que consta de distintos archivos (uno con la info del sprite en XML y el restos son bitmaps tradicionales), pero no quiero darme cuenta dentro de tres meses que olvidé algo fundamental.

El siguiente es un ejemplo de mi formato:

Citar
<!-- AnaConda Sprite File -->
<!-- Sprite header        -->

   
 
 
   



Tiene una posición por defecto, propiedad de visibilidad chequeo de colisiones, layer y luego la info de animación.


Título: [sprites] Formatos, Editores.
Publicado por: ethernet en 02 de Agosto de 2003, 11:49:34 AM
 Se supone que usas XML para eso no? en el caso de haber olvidado algo añadirlo sin apenas modificaciones.

Una pregnta q me viene a la cabeza: Por que siempre xml? psé
Título: [sprites] Formatos, Editores.
Publicado por: Zaelsius en 02 de Agosto de 2003, 12:12:49 PM
 Tanto si usas .ini o xml, creo que son formatos lo suficientemente flexibles como para añadir/quitar cosas sobre la marcha, no?

Tal vez tb te sería util almacenar en los datos del sprite, cual es su centro. Si es un muñeco, pues pones el centro en los pies, etc. Podrias hacer esto incluso con una constante, en vez de con un par x,y.

Ejemplo:  ... centre=DOWN o centre=CENTERED, o algo asi, y que te calcule luego las x,y correspondientes

Es una idea.
Título: [sprites] Formatos, Editores.
Publicado por: Loover en 31 de Diciembre de 2003, 03:23:00 AM
 Hi, revisando mensajes antiguos me he encontrado con este.

Bueno, yo no fijaría el ancho y alto de todos los sprites de una animación dada. Es decir, lo más normal es que no todos tenga el mismo tamaño. Pero claro, luego al animarlo la imagen daría "saltos" si los colocas todos en el mismo punto. Por eso, para cada frame, necesitas dos valores x e y que indiquen ese el desplazamiento.

frame="Agachado1"
time=150
x=4
y=2

Eso sería un frame. Luego esa x,y deberían sumarse a la x,y de la posición en pantalla donde lo coloques.

PD: Esta forma de hacerlo lo vi en un formato de animación 2d hace tiempo.
PPD: Como ir colocando en un fichero de texto tu mismo los .x y .y es una locura, lo mejor es currarse una pequeña aplicación que luego exporte a ese formato.

Un saludo!
Título: [sprites] Formatos, Editores.
Publicado por: AK47 en 31 de Diciembre de 2003, 12:18:42 PM
 Saludos
En mi "pagina" web (ejem...) tienes mi editor de sprites. No es muy sofisticado, pero quizas te sirva de algo:
http://balder.prohosting.com/gammenon/

Hasta pronto :)
Título: [sprites] Formatos, Editores.
Publicado por: Loover en 31 de Diciembre de 2003, 02:18:59 PM
 Ostras nene, mola mucho. Tiene lo del offset adicional que he descrito arriba.
Lo usaria sin dudarlo para lo que tengo pensado, sino tuviera una cosa que no me gusta nada. Lo del rectángulo para señalar la parte que te interese. Eso es mortal hacerlo uno por uno, y más cuando en el 99% de los casos, el sprite que te interesa no es un recorte, sino todo él.
Tampoco me gusta la estructura    

Texture index: 32 bit integer
Frame box: RECT (Windows standard RECT)
....

En vez de un índice a textura daría el nombre del frame. Porque puede ser, (como es mi caso) que yo no utilizo una textura por frame, sino puede que varias recortadas para usar imágenes que no son potencia de 2. Y tampoco el Rect de windows... pq puede ser que no este en windows, xD.

Vamos, que mi estructura ideal sería:

Citar
[frames]
// Agacharse
nombre="Agachado1" fichero="C:\prueba\Agachado1.bmp"
nombre="Agachado2" fichero="C:\prueba\Agachado2.bmp"
nombre="Agachado3" fichero="C:\prueba\Agachado3.bmp"
nombre="Agachado4" fichero="C:\prueba\Agachado4.bmp"
nombre="Agachado5" fichero="C:\prueba\Agachado5.bmp"
nombre="Agachado6" fichero="C:\prueba\Agachado6.bmp"
// Barny eruptando
nombre="erupto1" fichero="C:\prueba\erupto1.bmp"
nombre="erupto2" fichero="C:\prueba\erupto2.bmp"
nombre="erupto3" fichero="C:\prueba\erupto3.bmp"
[/frames]

[agacharse]
frame="Agachado1"  time=150 OffsetX=4 OffsetY=2
frame="Agachado2"  time=150 OffsetX=3 OffsetY=1
frame="Agachado3"  time=150 OffsetX=4 OffsetY=2
frame="Agachado4"  time=150 OffsetX=4 OffsetY=1
frame="Agachado5"  time=150 OffsetX=4 OffsetY=2
frame="Agachado4"  time=150 OffsetX=4 OffsetY=2
frame="Agachado6"  time=150 OffsetX=6 OffsetY=2
[/agacharse]

[eruptoBarny]
frame="erupto1"  time=150 OffsetX=4 OffsetY=2
frame="erupto2"  time=150 OffsetX=3 OffsetY=1
frame="erupto3"  time=150 OffsetX=4 OffsetY=2
[/eruptoBarny]

Siendo "//" Comentarios
Entre [frames] y [/frames] defino todas las variables frame que va a usar el fichero, para que sea más claro. Luego esas varibles las utilizao para crear secuencias de animaciones [secuencia] [/secuencia]. Y a cada frame le doy su offset y su tiempo.
Para mi esto es lo óptimo. No depende del tamaño de cada frame (cada uno puede tener el que quiera). No depende de ninguna api (no son texturas) cada uno que las cargue como pueda aunque no sean tamaños potencia de 2.

Lo malo es que yo no tengo ni idea de builder ni de historias. A ver si pillo a un colega por banda que tenía un visor de este estilo con las características que digo y se lo pido prestado, jeje.

Un saludo!
Título: [sprites] Formatos, Editores.
Publicado por: AK47 en 01 de Enero de 2004, 04:29:40 PM
 Saludos otra vez
A ver si me explico: mi editor tiene 2 modos. En el primero defines los frames que quieras basandote en un numero indeterminado de texturas. Es decir, cargas las imagenes que quieras (les llamo texturas por llamarles algo) y ahi defines sprites mediante el raton, creando cuadrados. Puedes definir varios frames en una imagen o solo un frame que englobe toda la imagen.
Estas texturas pueden ser del formato .jpg, .bmp, .tga, .dds y alguno que otro mas que no me acuerdo ahora mismo. Ciertamente, estas texturas tienen que ser potencias de 2, ya que el editor usa Direct3D para representar los graficos, y el editor esta pensado para hacer sprites para juegos donde se usaria alguna API 3D, y hoy por hoy piden texturas que son potencias de 2. Eso si, los sprites que definas no tienen que ser potencias de 2.

Despues esta el modo de montaje de animaciones. Aqui en proceso de la creacion de una animacion seria lo siguiente: primero le das al boton "Add animation" e introduces el nombre de la animacion. Despues, para añadir un frame a esta animacion, le das al boton "Add frame", obviamente ;) Aqui el programa te pedira que frame de los que has definido en el otro modo quieres que se añade a la animacion. Eliges el frame que corresponde y ya tienes otro fotograma en esta animacion. Repites el proceso hasta que la animacion tenga los fotogramas necesarios. Despues, ya solo tienes que ajusta los fotogramas para que todos tengan el mismo "centro" y el delay que toca.

Es un poco rollo, pero creo que es logico. De esta forma puedes tener todos los frames de un bicho en una unica textura y no desperdigado por ahi en una ristra de archivos (como hacia yo antes...). Incluso puedes crear una animacion con 10 frames, siendo cadra frame de una textura diferente.

En cuanto al RECT de windows, lo puse porque lo uso y es un formato conocido. Simplemente son 4 longs uno detras de otro, que guardan el left, right, top y bottom de la caja en cuestion. El texture index simplemente indexa la textura a la que corresponde el frame.
Título: [sprites] Formatos, Editores.
Publicado por: Loover en 01 de Enero de 2004, 07:19:11 PM
 No, si el sistema mola. Te lo has currado.
Lo que pasa es que claro, nunca llueve a gusto de todos. Para ti es perfecto para el uso que querrías darle, después de todo lo has hecho tú :D. Sinembargo para mi, lo de tener que ir ajustado el rect para todos me parece mortal :( ¿No podrías ponerlo que por defecto se colocara de ancho y alto a la misma que la textura?
Y luego, lo de meter en la estructura cosas específicas de una api me impide que lo use para ogl :(
De todos modos, tu sistema está bien pensado y se le puede sacar muy buen uso.

Feliz año nuevo!
Título: [sprites] Formatos, Editores.
Publicado por: AK47 en 01 de Enero de 2004, 07:39:05 PM
 Entonces, lo que tu quieres es tener cada frame en un fichero. Es decir, eructo_frame01.bmp, eructo_frame02.bmp etc etc
Eso ya lo hace mi viejo editor, y ademas permite definir cajas que podrian servir para colisiones, etc. Si quieres lo subo a mi "pagina" web :)
En cuanto a lo de usar mi formato desde openGL, no hay nada que te lo impida. Lo del RECT lo he puesto porque es un formato conocido, como te he dicho antes ;)
Título: [sprites] Formatos, Editores.
Publicado por: Loover en 01 de Enero de 2004, 07:55:08 PM
 Sí sí subelo me gustaría mucho echarle un vistazo.
¿No está sujeto a la api? ¿Pero no tiene la estructura un puntero a una textura de d3d?
Título: [sprites] Formatos, Editores.
Publicado por: AK47 en 02 de Enero de 2004, 12:18:26 PM
 Intentare subirlo...
En cuanto a lo de la API...  :blink:  de donde sacas que esta sujeto a Direct3D? Puntero a textura? En un fichero?  O_O  En el fichero solo hay indices, asi que puedes cargarlo sin problemas desde OpenGL, Direct3D, DirectDraw, SDL, tu motor software... vamos, de toas partes, incluso GDI ;)
Título: [sprites] Formatos, Editores.
Publicado por: Loover en 02 de Enero de 2004, 01:59:28 PM
 
Citar
FrameData:
   Texture index: 32 bit integer
                 Frame box: RECT (Windows standard RECT)

Ahhh ok ok. Eso ya mola más. ¿Pero el RECT sigue siendo de windows exclusivo no? ¿O podría cargarse sin problemas desde linux?
También molaría la posibilidad de exportar a formato texto. Siempre hay algún parámetro de última hora que apetece cambiar a mano.
¿Nadie conoce más visores del estilo de Ak47?
Título: [sprites] Formatos, Editores.
Publicado por: AK47 en 02 de Enero de 2004, 02:09:45 PM
 El RECT es, como dije antes, cuatro longs uno detras de otro, definiendo el left, right, top y bottom de la caja. No se en que orden, pero bueno, seria cuestion de mirarlo a ver como lo guarda.
Lo del texto ya seria cosa tuya: coge mi formato y pasalo al tuyo ;)
Ya te avisare cuando suba el editor a mi pagina, que mi puta conexion se empeña en impedirmelo  (asco)  
Título: [sprites] Formatos, Editores.
Publicado por: tewe76 en 07 de Enero de 2004, 06:58:24 PM
 Je, AK47, viendo el txt que viene con tu editor, me he enterado de q AK significa Anrial Kueik
(Unreal Quake, imagino, claro). Me ha hecho gracia.

Ah, y el editor tiene buena pinta. Yo me estoy haciendo un mini-engine, aunque no creo q use tu editor. Tengo la mala costumbre  :)  de hacérmelo todo yo mismo (ups, con permiso de mi novia  :D ). Pero sí q me sirve como orientación.

Bueno, q enhorabuena por el editor y por el nick, jeje
Título: [sprites] Formatos, Editores.
Publicado por: sés en 08 de Enero de 2004, 09:11:59 AM
 Quien quiera puede probar mi viejo editor. Tengo pensada una nueva versión, pero no sé cuándo la haré.

Los formatos SFF, AIR y SND son los de MUGEN.
Los formatos SSP, SAN y SSN son míos y pueden ser modificados, aunque no creo que lo haga por ahora.
El formato SCH es simplemente los ficheros SSP, SAN y SSN juntos, con una pequeña cabecera.

El programa solo carga PCX de 256 colores. Es lo que necesitaba el MUGEN... y lo que siempre uso yo. Nunca he necesitado sprites de más de 256 colores, y para muchas cosas yo los prefiero.
Evidentemente, usa paletas ^_^

Seguramente cambie esto cuando haga la próxima versión.

Como se puede ver por los formatos, el programa crea los sprites, las animaciones y los sonidos. Si se usa mi formato de animaciones, este incluye información extra para cada fotograma (estado, sonido, teclas...) orientada a un juego de lucha, aunque se podría utilizar para otras cosas.

Si a alguien le interesa, puedo poner el formato aquí, incluso añadir una opción para cargar/salvar algún formato de texto (me niego a usar XML (asco)).

Bueno, mi página es: http://ses.mgbr.net
El editor es el MCM (mcm20b-dev3.56.zip)
Título: [sprites] Formatos, Editores.
Publicado por: AK47 en 08 de Enero de 2004, 10:44:01 AM
 Bueno, mi nick es AK47, y no significa Anrial Kueik. Es el nombre del rifle de asalto mas famoso del mundo. Lo de Anrial Kueik biene de un juego mio (sin acabar... ejem) que le llame asi, Anrial Kueik 46, osea AK 46 :P tonterias mia ;)
Gracias por los comentarios de mi editor ;) Dentro de poco subire el viejo, ese que asumia que un fichero era un frame, Loover :)
Título: [sprites] Formatos, Editores.
Publicado por: Loover en 08 de Enero de 2004, 10:09:36 PM
 Ok, aunque ya parseo ficheros de este estilo:


// Fichero de animación

// Aquí definimos los frames
.FRAMES
{
// Si no está el comando .OFFSET_ por defecto el desplazamiento será (0,0)

// Carpeta imagenes
.PATH imagenes\prueba1

.NAME AGACHADO1 .FILE spideyman000.png
.NAME AGACHADO2 .FILE spideyman001.png
.NAME AGACHADO3 .FILE spideyman002.png

// Carpeta perro
.PATH imagenes\prueba2

// Podemos ponerlo en una columna, en distinto orden, etc
.NAME PERRO1
.FILE 276.png
.OFFSET_X 2
.OFFSET_Y 5   

.NAME PERRO2 .FILE 277.png .OFFSET_X 2 .OFFSET_Y 6
.NAME PERRO3 .FILE 278.png .OFFSET_X 0 .OFFSET_Y 5
}

// Aquí definimos las secuencias
.SEQUENCES
{
// Tio agachandose
.NAME AGACHARSE
.FRAME AGACHADO3 .TIME 160
.FRAME AGACHADO2 .TIME 100
.FRAME AGACHADO1 .TIME 500

// Perro mordiendo
// Si no está el comando .TIME por defecto el tiempo será 150
.NAME PERRO_MORDIENDO
.FRAME PERRO1
.FRAME PERRO2
.FRAME PERRO3
.FRAME PERRO2 .TIME 2000
}


Así que creo que al final acabaré usando un editor del que pueda tener el código, o haciendome uno propio.