sábado, 30 de julio de 2016

Convertir un GIF animado en una hoja de sprites

Buscando animaciones de ejemplo para crear animaciones de sprites, me encontré con este artículo que explica cómo hacer el típico ciclo para caminar.

Quería convertir a spritesheets los GIF animados, para usarlos como referencia al crear mis propios sprites en Inkscape.

Primero convertí el GIF animado en imágenes separadas, usando en Linux el comando 'convert' de ImageMagick:

convert -coalesce animation.gif target.png

Este tip lo encontré en StackOverflow.

Después, para combinar todas las imágenes en un solo spritesheet hay varias maneras. Decidí usar GIMP y un script genial, llamado Fuse Layers, que hace exactamente esto.

Descargamos el script, lo copiamos en $HOME/.gimp-2.8/scripts/fuse-layers-0.1.scm. Abrimos GIMP. Usamos Archivo -> "Abrir como capas...". Seleccionamos todas las imágenes que van a formar nuestro spritesheet. Luego usamos el script o plugin de GIMP que instalamos antes. Lo encontramos en Filtros -> Combinar -> "Fuse Layers". Se abre un popup que nos pide un número. Es la cantidad de imágenes o columnas que queremos por fila (cuántos sprites de ancho tendrá el spritesheet). Y listo!




Yapa:

Cuando se trabaja con animaciones en GIMP, es conveniente tratar cada cuadro de la animación como una capa. Así podemos probar cómo queda la animación usando el Filtro de Animación "Reproducción...", que nos hace una previsualización de la misma.

Cuando tenemos varias animaciones en la misma imagen, por ejemplo: caminar, saltar, atacar, etc., puede ser conveniente agrupar las capas en grupos. Pero hay un detalle. La opción de agrupar capas no funciona con imágenes en modo 'indexadas', solo en modo RBG. Y cuando importamos un GIF las imágenes quedan modo Indexado por defecto. Así que basta con cambiar de modo. Entonces, si la opción de crear un grupo de capas está desactivada... ya sabemos a qué se debe, y cómo solucionarlo :)

jueves, 28 de enero de 2016

Corebird: exportar fragmentos

Hice este script para exportar los fragmentos que creamos en Corebird:

cat export-fragments.sh
#!/bin/bash
sqlite3 Corebird.db <<!
.output fragments.sql
.dump snippets
!

Para importar la tabla, después hacemos:

sqlite3 Corebird.db <fragments.sql

NOTA: habrá errores de importación si la tabla, o los datos, ya existen.

La idea es simple: usar el autocompletar para reemplazar emoticones por emojis. Por ejemplo:

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE `snippets`(
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  key VARCHAR(20),
  value VARCHAR(200)
);
INSERT INTO "snippets" VALUES(1,'dealwithit','(•_•) ( •_•)>⌐■-■ (⌐■_■)');
INSERT INTO "snippets" VALUES(2,'tableflip','(╯°□°)╯︵ ┻━┻');
INSERT INTO "snippets" VALUES(3,':)','🙂');
INSERT INTO "snippets" VALUES(4,':(','🙁');
INSERT INTO "snippets" VALUES(5,'xD','😆');
INSERT INTO "snippets" VALUES(6,';)','😉');
INSERT INTO "snippets" VALUES(7,':P','😛');
INSERT INTO "snippets" VALUES(8,';P','😜');
INSERT INTO "snippets" VALUES(9,'<- br="">INSERT INTO "snippets" VALUES(10,'->','🠆');
INSERT INTO "snippets" VALUES(11,'+1','👍');
INSERT INTO "snippets" VALUES(12,'-1','👎');
INSERT INTO "snippets" VALUES(13,'ok','👌');
COMMIT;


Entonces, escribiendo xD y pulsando la tecla <tab>, se reemplazará por 😆

domingo, 24 de enero de 2016

Icono alternativo para Argentum Online

El servidor oficial de Argentum Online hace poco publicó la versión 1.0. Hay muchísimos cambios y mejoras, es una importante renovación y la esperada versión 1.0. 

Lo instalé en Ubuntu usando Wine, y la verdad que funciona muy bien. La instalación sobre Wine tuvo sus complicaciones, hay varias guías al respecto de cómo solucionar cada problema, pero finalmente quedó funcionando perfectamente.
 
El único detalle, y uno muy menor, es que el icono del lanzador de AO es de muy baja resolución, y quedaba feo en mi escritorio. Así que hice un nuevo icono alternativo, muy simple, y de diseño similar al original. 

Lo comparto por si alguno quiere usarlo: Descargar iconos (svg + png)