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

me lo lees?

El español tiene muchas variantes. Considerando que, tal y como descubrió Chomsky, el idioma es el primer puzzle que resolvemos, la forma en la que hablamos el español da muchas pistas sobre la forma en la que pensamos.

El español boliviano es muy diferente al español que hablamos allá en Guatemala, y no solo es por el acento, existen muchas diferencias sintácticas! Consideremos, por ejemplo, la palabra “pero”: en Guatemala, se usa sólamente como conector y al principio de la oración que está conectando:

– Levántate! es hora de ir al colegio
-> pero no quiero ir :'(

En cambio, un boliviano hablaría este diálogo así:

– Levántate! es hora de ir al colegio
-> pero! :'(
o también: no quiero ir, pero :'(

En bolivia la palabra “pero” es como una queja, como una palabra que puede ser usada de manera aislada de la escusa.

Encuentro estas diferencias muy interesantes, porque el español boliviano está fuertemente influenciado por sus ancestros nativos. Entendiendo estas diferencias, podemos darnos cuenta de cosas que nuestros ancestros consideraban tan importantes, usuales y naturales, como para necesitar crear un sonido para expresarlas con frecuencia.

Nosotros heredamos estos modos de hablar, tal y como se hereda una herramienta, y estas ideas ancestrales persisten en nosotros y nos permiten transmitir sentimientos complejos que, de no ser por la “corrupción” del lenguaje original, se habrían perdido para siempre.

Pero mi “corrupción del lenguaje” favorita, es la anteposición de “me” a ciertas oraciones imperativas. Por ejemplo: “me lo vas a cuidar”, “me lo vas a llevar”, “me lo vas a dar comida”.

En las oraciones imperativas, observamos a tres actores principales: el que recibe la orden “el oyente”, el que da la orden “el autor” y la acción que se comanda, le llamaremos “la orden”.

Yo veo a esta corrupción del lenguaje, sintácticamente hablando, como si la orden fuera propiedad del autor, y da a conocer un lazo afectivo entre el autor y la orden, que hacen que el oyente transfiera un poco del aprecio que siente por el autor hacia la orden.

Es como decirle, de una forma corta: “es mío, así que cuídalo”, o “hazlo por mi”, o “ya sea que decidas obedecer o desobedecer mi orden, también me va a afectar a mi, de una forma personal.”.

Podría nombrar otra gran cantidad de diferencias sintácticas entre el español que yo hablaba en Guatemala, y el español que hablamos aquí, pero sólamente quería compartir mis experiencias con esta última corrupción del lenguaje, así que… es todo… Chau, se me van a cuidar!

Instalación de Dios al 89%

Podías encontrar en el ciberespacio infinidad de ofertas laborales, y entre los requerimientos siempre estaría la instalación de neurosoftware de control laboral, y con letras pequeñas, la afiliación de más de 1 año a alguna religión.

El ciberministerio de credos y dogmas, realiza constantemente un control estricto sobre cualquier neurosoftware, penalizando severamente a todo aquel que fabrique uno que rompa las reglas. Sus reglas eran muy severas con el neurosoftware de control laboral. Pero ambiguas y escuetas con frameworks de creencias religiosas. La religión era un área difícil de regular, debido a la libertad de culto que figuraba en la DUDH.

Y es por eso que actualmente, la única forma de conseguir trabajo, es afiliándose a una secta religiosa, ya que solo así los empleadores podrán sacar el máximo provecho de la mente de sus trabajadores, y pese a que el ciberministerio de credos y dogmas conoce este problema, no hay nada que pueda hacer al respecto, debido al neoliberalismo del mercado moderno, si el gobierno insinuara la regulación de ofertas laborales, el país entero perdería la cabeza, con ataques DDoS que paralizarían toda la producción.

– Fragmento de un libro que tal vez exista en el futuro

Sobre la censura gubernamental

colegial.png

Un gobierno que censura información con la escusa de proteger a sus ciudadanos de información falsa es, por definición, un gobierno deficiente.

Por un lado, si la información censurada fuera verdadera, quiere decir que el gobierno miente. Por lo tanto, el gobierno es corrupto y descarado, dispuesto a atropellar las libertades individuales de sus ciudadanos con fines egoístas.

Por otro lado, si la información censurada es realmente falsa, quiere decir que el gobierno no confía en que sus ciudadanos tengan la madurez intelectual como para discernir entre lo verdadero y lo falso.

Este último escenario es también aterrador, ya que da indicios de que el gobierno no se preocupa por que sus ciudadanos tengan acceso a educación de calidad, ya sea por descuido, o porque es más fácil gobernar a ciudadanos iletrados.

Cuando el internet no era real

Yo soy de esa generación en la que el internet era un club secreto, protegido por un aura friki y escondido por el temor al rechazo, alimentado por la soledad y fortificado por el anonimato.

En aquellos tiempos, si amenazabas a alguien con matarlo argumentando que sabías en dónde vive por algún artilugio informático, él se reiría en tu cara con un estruendoso LOL seguido de “se nota que estamos en verano”, y si alguien decía que cometería un atentado terrorista, su comentario se perdería entre otros tantos comentarios incentivando actos de odio, mismos que nunca serían materializados, pero aliviarían la ira de sus autores.

Yo pertenezco a un lugar en el que todos hablábamos tonterías, y nos reiríamos de las tonterías que los demás decían. Pertenezco a una familia intangible, inestable, virtual. Pertenezco a una comunidad de inadaptados, marginados por su timidez. Pertenezco a una hermandad que, pese a su aparente intolerancia, recibía con calidez a los newbies, una calidez que solo personas de nuestra calaña podría comprender.

Vengo de un internet en el que lo que decíamos nunca se materializaría en acciones, solamente en pensamientos, un internet en el que lo que decíamos era un reflejo real de nuestros pensamientos más profundos, y hablábamos sin miedo, porque entre frikis nos entendíamos, y nadie perdería su tiempo leyendo nuestras conversaciones. A quién le importaba por entonces lo que pensaran un montón de inadaptados?

En el mundo real, nos entristecíamos de que nadie nos entendiera, pero cuando nos juntabamos, nos enorgullecíamos de que así fuera. Entre nosotros, no existía el miedo a ser tachado de machista, racista o psicópata, porque, en el fondo, sabíamos que solo bromeábamos, pero a veces hablábamos en serio, cuestionando todos nuestros dogmas. Si alguna vez metías la pata, solamente te creabas otra identidad y comenzabas de nuevo, re-integrarse nunca era difícil.

Yo soy de esos tiempos… esos tiempos en los que el internet no era real. Pero ahora, en dónde está ese lugar? en dónde está esa gente y sus retorcidos pensamientos? en dónde quedó nuestro búnker secreto?

Inocencia

En un reino lejano ocurrió una peste: la fiebre de las praderas. Nadie sabe cómo llegó, ni tampoco cómo curarla, pero las personas que vivían apartadas de las grandes comunidades comenzaron a enfermar con conclusiones fatales.

Loretto era un pequeño, pero próspero pueblo de este lejano reino.

Era una noche fría y lluviosa, cuando una preocupada familia se aproximó a la entrada de sus murallas, los guardias, que tenían instrucciones estrictas de no abrir las puertas a nadie, conmovidos por las ropas húmedas de aquella familia, solicitaron una audiencia con el maestre para decidir el destino de aquellos extranjeros.

En un pueblo pequeño, se esparcen rápido los rumores. Antes de media noche, todo el pueblo discutía sobre el destino de aquella familia. “Son de la pradera!” gritaba enfurecido el herrero, quien tenía una gran familia, “si los dejamos entrar, dejaremos que la peste entre al pueblo, y habrán muchas muertes”. El carnicero, una persona solitaria, pero increíblemente amable y altruista, creía que lo correcto era dejarlos entrar: “tienen frío, y está lloviendo, no importa si están o no están enfermos, dejarlos afuera es inhumano”.

Todos discutían, intercambiando opiniones, todos, a excepción del cocinero, quien totalmente absorto de lo que pasaba a su alrededor, solo le preocupaba que la sopa tuviera suficiente orégano.

El maestre, hombre sabio y de avanzada edad, quien había logrado hacer próspero a un pueblo tan pequeño desde sus tempranos años de tutela, decidió que sería mejor dejar que el pueblo le ayudara en esta decisión tan delicada, para evitar revueltas en el futuro.

El sol aún no había salido, cuando el pueblo se reunió en un granero para discutir el destino de la familia. Todos expusieron sus razones: los que creían que la familia no debería entrar, entre ellos, el herrero. También los que creían que la familia debía ser acojida, entre ellos, el carnicero.

El carnicero habló con tanta razón, y de forma tan elocuente, que convenció a todos en el pueblo de que la familia debía ser acogida; todos en el pueblo estaban convencidos, todos, a excepción del herrero, quien amaba a su familia más que a nada, y el cocinero que nunca emitió su opinión.

La reunión finalizó con la decisión de dejar entrar a aquella familia, se alojaron en la posada, donde la moza les brindó un cálido hospedaje.

Hasta el día de hoy, las murallas de Loretto continúan cerradas debido a la cuarentena, y de sus habitantes solo se sabe que ninguno sobrevivió a la terrible fiebre de las praderas, sólamente se sabe eso y que el cocinero no tuvo la culpa de tan terrible decisión.

Sobre los hackatones…

Es difícil organizar un hackatón, hay que administrar bien el dinero, buscar jurados justos, ser imparciales, administrar bien el tiempo, y muchas otras cosas más!

Hace tiempo ya quería escribir una entrada de blog sobre este tema, pero por todo lo que ha pasado, creo que esta vez sí me animo…

Yo nunca he organizado un hackatón XD pero he participado en algunos (tal vez muy pocos)… en calidad de hackatonera, me gustaría compartir mi experiencia, dar algunos consejos a los organizadores y dar a conocer mi teoría sobre las principales causas del descontento en este tipo de eventos.

Acceso a comida, café y té (de manzanilla) de forma gratuita.

Esto es algo que abundó infinitamente durante el primer GGJ que participé (allá por el 2014, en mi opinión, este fue el mejor de los mejores hackatones en los que participé, y más adelante explico por qué).

Es importante que haya comida (al menos galletitas de agua), y café y té de forma ilimitada y gratuita, porque los hackatoneros no podemos amanecernos sin el “líquido vital”, y difícilmente nos fluye la creatividad con el estómago vacío. Tener acceso a estas cosas, nos hace sentir queridos (de esto también hablaré más adelante)

Es importante también que todos estos recursos estén centralizados en un lugar lejano. Salir de nuestra área de trabajo para ir a farmear café y galletitas, nos hace hablar con el resto de hackatoneros: se nos contagia la emoción, y se crea cierto lazo afectivo… aumenta la espectativa en el día final.

En este sentido, el hackatón del BNB (y el GGJ2014) lo hicieron muy bien.

Host y staff amigable

Esto es algo muy importante, el hackatonero debe sentirse apreciado, esto hace que se identifique con la causa, también crea un ambiente de comunidad.

Sé que hackatonear a veces es estresante por los estrechos deadlines, y por dormir en el piso, pero cuando te atienden bien, todo este estrés puede convertirse en emoción, sirviendo de combustible para el proyecto… un hackatonero malhumorado usará todo este estrés en contra de los miembros de su equipo (y quizás, también en contra del resto de equipos).

Si no confías en que tu staff puede trabajar bajo presión, o tratar bien a tus hackatoneros, es mejor que falte staff a que sobren jetas ;), sólamente, mantenlos alejados de los hackatoneros, podrían arruinar el ambiente.

A veces los organizadores se olvidan que los hackatoneros también hacen una enorme inversión al participar en los hackatones, y esperan ser tratados de forma especial, ya que están brindando su ayuda de forma gratuita.

En este sentido, el GGJ2014 también lo hizo muy bien, porque en todo momento sus organizadores se acercaban a los equipos a ver el progreso, nos sacaban fotos, se reían de nuestras bromas.

En el día final: Escúchalos y provee feedback

No hay nada más feo que matarte trabajando en un proyecto durante mucho tiempo, para que después nadie te tire bola. Te deja vacío por dentro, y enojado por fuera, sin ganas de volver a hacerlo.

Yo sé que no todos los proyectos pueden ser premiados, y que algunas de las ideas que proponemos apestan n.n’ pero, se trata de darle más énfasis a las personas y no a los productos: el perdedor de hoy, podría crear el startupazo de mañana.

Es por eso que es sumamente importante darles a todos los hackatoneros el tiempo que requieran para mostrar lo que han hecho, y no destruirlos con preguntas, sino incentivar su progreso, proveer feedback positivo y negativo en proporciones iguales.

La exposición y la jornada de preguntas no debe estar enfocada a demostrarles a todos quién va a ser el ganador, debe ser orientada a darles a todos y cada uno de los equipos, un espacio para que compartan lo que han hecho, y se sientan apreciados por el trabajo que han desempeñado.

“es que es aburrido escuchar a todos los equipos”, esa es la escusa más ofensiva que un organizador puede plantear para no escuchar a sus hackatoneros… se han esforzado, se han desvelado, podrían haberse quedado en su casa, con una taza de café caliente, en su camita, viendo Star Trek… pero han decidido venir a tu evento y donarte un trozo de su tiempo libre, y ahora, como mínimo, merecen tu atención.

A veces las ideas también son muy buenas, pero el jurado no es lo suficientemente imparcial, o no conoce la tecnología expuesta, por eso…

Jurados de calidad

Los jurados deben ser imparciales… debes asegurarte de que sus juicios no estén sesgados de acuerdo a sus amistades, o hacia sus ideales (por ejemplo, es muy mala idea dejar que una feminista militante descalifique un proyecto sólamente porque no está de acuerdo con el color usado).

Deben ser conocedores, no solo del tema del hackaton, sino que también de las tecnologías que se usarán, y de los géneros que se desarrollarán

Deben ser personas pacientes y con disponibilidad de tiempo, ya que estarán presentes en la exposición final, y le debes dar tiempo a cada equipo para hablar. En ningún momento el juez debe mostrar aburrimiento, ni tratar mal a los expositores, porque recuerda: aunque es importante que surja un proyecto significativo, también es importante que los hackatoneros queden con ganas de volver a participar.

Condiciones puntuales de victoria

Aunque muchos hackatoneros participamos sólamente por amor al deporte XD conozco a varios amigos que participan porque quieren ganar… esto está bien! la competitividad sube la calidad de los proyectos presentados.

Es tremendamente descepcionante cuando te esfuerzas por ganar, y no ganas! es muy difícil eliminar por completo esta descepción, pero sí la aminora el dar condiciones puntuales sobre quién ganará el concurso.

Asegúrate de proveer categorías y delimitarlas muy claramente, y de detallar las condiciones de victoria antes del momento de inscripción, asegúrate de que los jurados conozcan y califiquen de acuerdo a estas condiciones.

Y bueno, para finalizar, siento que el GGJ 2014 fue el mejor hackatón de todos los tiempos, porque durante todo el hackatón me la pasé super feliz, los organizadores parecían un montón de geeks amantes de los videojuegos… Los expositores también parecían aficionados de los videojuegos.

No sé cómo explicarlo, tal vez estoy siendo muy subjetiva (o muy exigente con el resto de hackatones), pero me sentí en comunidad: parte de algo. Al año siguiente quería volver, quería volver a ser parte de eso.