Descomponer GIF animado para juegos

Para el curso que viene voy a coger la optativa de Diseño de Videojuegos, así que llevo un par de semanas mirándome la SDL, una librería multiplataforma open-source que ofrece rutinas para manejar gráficos 2D, sonidos, entrada/salida, etc. y es muy utilizada en el desarrollo de videojuegos sencillitos, así como al portar juegos de plataformas antiguas.

Y ese regustillo a los 8 bits me está impulsando a buscar sprites y tilesets de juegos antiguos, principalmente para poder utilizarlos mientras aprendo y así no perder tanto tiempo dibujando mis propios gráficos. Cabe destacar la impresionante labor de este tío recopilando links a webs de sprites gratuitos, generadores de sprites, etcétera.

La cosa es que encontré algunos sprites con animaciones interesantes pero venían en formato GIF animado, y en la SDL se suelen utilizar tilesets, es decir, poner todos los fotogramas de la animación en una sola imagen, uno al lado del otro, y dibujar sólo el fotograma que nos interesa en cada momento. Así sólo se carga del disco una imagen que se mantiene en memoria, lo cual resulta óptimo. Así, me he puesto a buscar alguna forma de “descomponer” el gif en una sola imagen con todos los fotogramas uno al lado de otro y, cómo no, la inmensa y genial suite ImageMagick dispone de formas de hacerlo, bastante sencillas por cierto.

En esta web explican los usos más comunes de la ImageMagick con gifs animados y demás, y en uno de los apartados explican lo que yo busco. Tomando la siguiente imagen como partida:

Podemos utilizar el siguiente comando:
montage imagen_origen.gif -coalesce -tile x1 -geometry '+2+2' -background none -bordercolor none montaje_destino.gif

Y obtener lo siguiente:

Que es exactamente lo que venía buscando. Mañana más y mejor.

2 gañanes han comentado

  1. Mort on Julio 20th, 2008

    La SDL a pelo no soporta GIFs animados, peor hay librerias auxiliares.

    http://www.libsdl.org/projects/SDL_image/

    Merece la pena utilizar esa libreria, los PNG manejan mucho mejor la transparencia que los JPG, sino te encontrarás con mis viejos amigos, los puntos verdes o rosas.

    (El verde puro 00FF00 y el rosa FF00FF, suelen ser dos de los colores mas usados como fondo de las imagenes para luego hacer blitting y transparencia porque no suelen encontrarse dibujos con esos colores)

  2. TheOm3ga on Julio 20th, 2008

    Vaya, no sabía que la SDL_image pudiera cargar gifs. Ahora que lo veo, a ver si pruebo a cargar un gif animado, no sé qué tal se comportará. Lo de los pngs con alpha blending lo conocía, la verdad es que es la caña, pero el colorkey es más vieja escuela xD Un saludo!

Leave a Reply