Spritesheets con inkscape mediante layers

Cómo extrañaba programar!!! y cómo extrañaba usar linux!!!!! y ahora que tengo linux y quiero acelarar mi proceso de producción de spritesheets, encuentro la escusa perfecta para programar y usar linux XD

Este pequeño script genera un spritesheet a partir de un archivo svg que tenga los sprites tirados por todas partes en capas!

demo.png

#!/bin/bash

filename="$(echo "$1" | awk -F. '{print $1}')"
h="+"

# ¯\_(ツ)_/¯
if [[ $* == *-v* ]]
then
  h="-"
fi

# readibility counts -python zen
layerList="$(inkscape --query-all $1 | grep layer | awk -F, '{print $1}')"

echo "$layerList" |
  awk -v file="$filename" -v h="$h" '
    {system("inkscape " file ".svg -i " $1 " -j -C --export-png /tmp/" file "-" $1 ".png")} 

    END{system("convert " h "append /tmp/" file "-*.png " file ".png")}

    END{system("rm /tmp/" file "-*.png")}'

Primero, consigue el id de los layers de inkscape,  y los pone en una lista. Itera sobre esta lista, para generar imágenes temporales de cada una de las capas, y luego, usando imagemagick, las concatena, horizontal o verticalmente.

Hice un repo donde voy a ir colando scripts de bash para game development… tal vez lo abandone igual que el resto de mis proyectos lol XD pero… tal vez no o__O igual, si alguien quiere descargar el código, pueden clonarlo desde aquí: https://github.com/VengadoraVG/bash-for-gamedevs

Ejecutando comandos con parámetros en bash

Cuando hice el script para arreglar un libro escaneado a doble cara, me topé con varios problemas, porque no entendía cómo un script recibe parámetros desde bash! así que decidí  escribir esta entrada, explicando lo que aprendí.

Primero, este script, nos servirá para ver qué es lo que está pasando cuando le pasamos parámetros (o argumentos) a un comando en bash.

En este script, le paso parámetros al script de arriba. Les recomiendo descarguen ambos archivos, y los ejecuten, para ver en tiempo real lo que pasa :O (ambos archivos deben estar en la misma carpeta, duh!)

Resumiendo, para ejecutar un comando, asegúrate de no usar cadenas de texto, lo mejor, es escribirlo justo como lo escribirías en la consola.

Para pasar argumentos a dicho comando, asegúrate de que no estén en una cadena de texto, todas juntitas, porque si no, bash las interpretará como un elemento de los argumentos, en vez de una lista de argumentos ^w^

Libros escaneados a doble cara? No más!

YOHOHOHOOOO surcando por mares, robando libros a los bucaneros.

YOHOHOOO, todo eso ha de ser libre, pero ellos quieren más dinero…

son las editoriales las que se enriquecen, mientras el tercer mundo decrece

YOHOHOHOOO por eso les robo, sin que se den cuenta, sin que afecte a mi moral!

sin tocar sus bolsillos mientras navego por los mares de la web!

Así que Gus fue al centro de estudiantes de la carrera de Bioquímica, y resulta que tenían el libro Bioquímica Humana, texto y atlas, de Koolman y Rön, estaban cobrando por imprimirlo, y había una compu allí, abierta al público, con su mouse, su teclado y todo! ni siquiera tenía contraseña… así que le dijo a su amigo “pero… para qué hacerlo imprimir? podemos copiárnoslo de la compu, y leerlo en nuestros celulares :3”

Así que su amigo puso su flash en la compu, y cuando estaba a punto de copiarlo, llega un ogro y les grita “NO PUEDEN HACER ESO!!! LARGO DE AQUÍ! EN DÓNDE LO COPIARON?! EN DÓNDE?!”, pese a que le dijeron que aún no lo habían copiado, el ogro les formateó su flash :(

Más tarde, encontró el libro, pero estaba escaneado a doble cara x_x, eran cerca de 500 páginas! así que hacerlo a mano no era plausible (pero seguro ese pobre ogro lo hizo a mano… por qué más se portaría tan agresivo? lol).

Así que escribí un script en bash para arreglarlo! XD básicamente lo que hace, es cortar las páginas a la mitad con pdfjam, genera un pdf con páginas pares y otro con impares, y luego las une intercaladas ^w^.

este es el script

(y recuerden… eval is evil T_T)

(también recuerda que debes tener LaTeX instalado para correr este script, ya que usa pdfinfo y pdfjam!)