Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[sprites] Formatos, Editores.

Iniciado por deadLock++, 02 de Agosto de 2003, 02:01:38 AM

« anterior - próximo »

deadLock++

 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.



ethernet

 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é

Zaelsius

 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.

Loover

 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!
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

AK47

 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 :)

Loover

 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!
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

AK47

 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.

Loover

 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!
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

AK47

 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 ;)

Loover

 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?
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

AK47

 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 ;)

Loover

 
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?
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

AK47

 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)  

tewe76

 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
Tewe
www.TAPAZAPA.com : Funny and easy to play games for all ages! - Fairy Match - Brain Crash
www.LaRebelionDelBiberon.com : Experiencias de unos padres primerizos

sés

 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)
Soy indeciso... ¿o no?






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.