Bip bop con LIKO-12, una charla, y Sapper, un juego

He aquí las láminas para una charla que di para el Flisol Madrid 2018 sobre LIKO-12. LIKO-12 es una computadora de fantasía, un software que ofrece una plataforma sencilla, con muchas restricciones gráficas, y con herramientas para desarrollar juegos fácil y rápido. Forma parte de una competencia de computadoras de fantasía como PICO-8 (de donde toma gran inspiración), TIC-80, Pixel Vision 8, y otros. La diferencia de LIKO-12 es que está escrito con una licencia de software libre, lo que permite desarrollar sobre ella con total libertad. LIKO-12 corre sobre LÖVE, una librería para escribir juegos usando Lua, el lenguaje de programación.

Las láminas las puedes conseguir en español y en inglés. Si presionan ‘s’ obtendrán las notas de orador para guiarse.

Gameplay de Sapper

Para la charla hice también un juego, Sapper, un clon de Frogger, disponible en su repositorio de Github. Sólo hace falta descargar el archivo, y lo pueden cargar con LIKO-12 para jugar e inspeccionarlo.

Inscripciones abiertas para el Caracas Game Jam 2018, la décima edición

Toda la información sobre la inscripción se puede conseguir en esta página.

A continuación reproduzco el contenido de la página enlazada. La introducción fue escrita por los organizadores en Caracas de esta edición. Por mi lado puedo agregar que me enorgullece que un evento como el Caracas Game Jam siga estando presente, llevado adelante en su logística por la propia comunidad que el evento formó. Salud por todos, y por que el evento siga adelante.

Aprovecho también para informar que en Cabudare, Estado Lara, también habrá jam. Más información en Facebook, y en el poster del evento.


Nos enorgullece escribirles hoy para abrir oficialmente la décima edición del Caracas Game Jam. Para nosotros es un honor saber que podemos celebrar nuestro décimo aniversario de la mano del Global Game Jam, habiendo participado Caracas en todas las ediciones.

Es increíble pensar que en 2009, Ciro Durán y Yole Quintero organizaron el primer Caracas Game Jam, en ese entonces contando con 26 participantes, en un ambiente más íntimo, sin imaginar en lo que el CGJ se convertiría. En su novena edición, El CGJ 2017 contó con 100 participantes. Es una demostración de la fuerza de nuestra cultura de juegos el haber crecido consistentemente en medio de condiciones que han sido cada año más duras.

El camino ha sido largo, hermoso, arduo y enriquecedor. Dentro las diversas sedes que nos han acogido a lo largo de estos diez años han surgido amistades, exitosas carreras, empresas y colaboraciones que han impulsado la industria de videojuegos en Venezuela. Agradecemos profundamente la confianza y el apoyo de todos nuestros patrocinantes, la constancia y esfuerzo de los participantes, y la perseverancia de nuestros organizadores. En conjunto, hemos construido una cultura.

El Caracas Game Jam es nuestra determinación no solo por mantener viva la antorcha, sino de hacerla brillar cada vez más.

En nuestro décimo aniversario, celebremos juntos el haber convertido nuestros sueños en realidad,

¡Sigamos soñando!

___________________________________________________________________

El Caracas Game Jam es un evento cooperativo que reúne a programadores, artistas, músicos y entusiastas para crear un juego de video, cartas o de mesa desde cero. En el evento participan por igual gente de diversas edades, disciplinas y experiencia, haciéndolo un ambiente ideal tanto para alguien que nunca haya desarrollado un juego antes como a un profesional con experiencia buscando crear un prototipo rápido de conceptos nuevos.

El Caracas Game Jam forma parte del Global Game Jam, y durante el fin de semana del 26 al 28 de enero de 2018 estarás participando simultáneamente junto a más de 600 sedes distribuidas en más de 70 países del mundo. Al finalizar el evento subirás tu juego, junto con todo lo que tu equipo desarrolló, para que otras personas puedan jugarlo, estudiar el código y, como ha pasado en otras oportunidades, darle publicidad. Sin embargo, todos los derechos del juego siguen siendo del equipo desarrollador.

Este año volvemos a contar con el apoyo de la Academia Wayra, con un espacio que ya mucha de la comunidad conoce y saben que es genial no sólo para trabajar cómodamente, sino que se adapta muy bien para este tipo de eventos. La Academia Wayra se encuentra en la Torre Xerox, en Bello Campo, a muy poca distancia del C.C. Sambil y a unas cuadras de la estación de Metro Altamira o Chacao.

Las inscripciones se abrirán a partir de hoy, y estarán abiertas hasta el 24 de enero o hasta agotarse los cupos. En este sentido, es importante destacar que tenemos una capacidad para 100 participantes y tenemos la seguridad de que tendremos la casa llena en muy poco tiempo. El costo de la inscripción es de Bs 120.000 por persona. Este costo incluye la entrada al evento, refrigerios, bebidas y certificado de participación. La edad mínima de participación del evento es de 18 años. Si eres menor de edad, debes venir con un representante legal y una autorización firmada por el mismo.

Deberás traer tu propia computadora ya que no contaremos con máquinas para prestar. Si traes desktop, trae tu propia regleta para poder conectar todos los dispositivos. Sólo podemos asegurar un punto de corriente por participante. Debes traer también tus implementos para dormir (Colchoneta portatil o colchón inflable, recuerda que si traes colchón inflable, debes traer también la bomba de aire).

El espacio incluye una sala acondicionadas para trabajo con computadoras con internet inalámbrico, área de descanso, de esparcimiento, comedor con microondas, vigilancia, entre otras.

El proceso de inscripción es bastante sencillo, pero es importante que tomes en cuenta los tiempos de las transferencias bancarias y nuestros tiempos estipulados aquí para que todo se complete de manera exitosa.

  1. Completar el formulario (anexo al final del correo)
  2. Hacer transferencia bancaria para el pago de la inscripción
  3. Enviar email con comprobante de transferencia
  4. Esperar confirmación

1 – Completar el formulario

Necesitamos que completes el formulario para hacer la pre-inscripción y reservar el cupo por 36 horas. Al finalizar el formulario tendrás acceso a una lista de participantes pública donde podrás monitorear la cantidad de cupos disponibles.

Esta hoja contendrá la cédula de los participantes registrados. Si deseas que esta información no sea publica, por favor comentalo tan pronto sea posible a organizadores@caracasgamejam.com

Adicionalmente, recibirás un correo con la información para realizar la transferencia bancaria. Pasadas 36 horas sin confirmación de pago, tu cupo quedará abierto para otro participante.

2 – Hacer transferencia bancaria para el pago de la inscripción

Una vez completado el formulario, recibirás en minutos la información bancaria necesaria para realizar la transferencia. Pedimos tomar las consideraciones necesarias en este aspecto ya que todavía es un proceso manual. Nuestra recomendación es que sólo llenes el formulario si tienes la seguridad de poder completar la transferencia y el proceso en los próximos 90 minutos una vez enviado el mismo.

Este año estamos trabajando con Banesco, así que estos son los tiempos que manejamos según la información proporcionada:

  • Banesco a Banesco, inmediato.
  • Otros bancos a Banesco, mismo día después de la 1:00 pm; siempre que se haga antes de las 9:00 am en un día laborable
  • Otros bancos a Banesco, siguiente día laborable después de la 1:00 pm

3 – Enviar email con comprobante de transferencia

Enviar un email a organizadores@caracasgamejam.com con el comprobante de transferencia anexo en pdf o captura de pantalla (Si es captura de pantalla, debes asegurarte de que los datos del comprobante sean perfectamente legibles). El email debe contener la siguiente estructura:

Asunto: [Inscripciones CGJ18] Nombre Apellido

(incluyendo los corchetes)

Cuerpo del mensaje:

El mensaje debe contener:

  • Banco de donde realizaste la transferencia
  • Nombre y Apellido del participante
  • Foto del comprobante de transferencia o depósito adjunto

4 – Esperar confirmación

Una vez hecho esto, te enviaremos un email confirmando tu inscripción en el evento. También podrás monitorear el estatus de tu inscripción buscando tu cédula de identidad en la lista de participantes que te enviaremos al completar el formulario de inscripción.

Se tomará en cuenta la formalización de la inscripción al momento de acreditar el monto. Iremos avisando a medida que las plazas se llenen y cuando ya queden pocos puestos. Atenderemos por orden de llegada de las transferencias.

El formulario de inscripción lo puedes conseguir aquí: https://goo.gl/forms/Nxkl5OLCa1NxantL2

Si tienes alguna inquietud, puedes hacerla también a organizadores@caracasgamejam.com. Está pendiente de nuevos anuncios que haremos a través de esta lista de correos y nuestras redes sociales.

¡Gracias por tu atención!

Ciro Durán, Yole Quintero
Fundadores del Caracas Game Jam

Jorge Veloso, Isaac Lopez, Patricia Navarro y Erick Subero
Organizadores del Caracas Game Jam 2018.

Lilibeth’s Parade: un postmortem y una guía para juegos físicos

El pasado Global Game Jam 2017 fue un buen jam para mí y para Yole, con quien participé. Los game jams son una ocasión propicia para ensayar nuevas ideas, esto es algo fundamental en el evento, y nosotros lo aplicamos sobre el concepto propio del videojuego.


Revelando el tema del GGJ 2017

El tema del GGJ 2017 fue Waves (ondas) pero decidimos tomar otro significado de la palabra, el verbo saludar (to wave). Así, nos inspiramos en el icónico saludo de la Reina Isabel de Inglaterra como mecánica principal de juego. Dos jugadores deben saludar en una forma específica, compitiendo entre ellos.


La Reina de Inglaterra saluda

Habíamos establecido previo al inicio del evento que íbamos a hacer un juego con Arduinos y un Raspberry Pi. Esto es un cambio sustancial con respecto a años anteriores. Ya con Yole había hecho un juego de mesa y un videojuego. Anteriormente, fui colaborador en su proyecto final como estudiante que combinó fotografía, escultura y tecnología, usando ambas tecnologías. Pero en esta ocasión la idea implicaba usar estos componentes a una escala que no habíamos intentado antes.

Ya llevábamos entonces la idea al evento: no solamente reemplazar la entrada, el control, sino también la salida, la pantalla. Teníamos la idea de hacer un juego “autocontenido”, algo que pudiésemos mostrar como un modelo de cartón con partes movibles, que no mostrase partes de computadora obvias. No lo pudimos lograr del todo: el juego aún requiere una computadora con mayor capacidad que el Raspberry Pi, pero la idea está ahí y se puede abordar para otro proyecto.

Al finalizar el evento presentamos “Lilibeth’s Parade”, un juego electrónico para dos jugadores. En un modelo de cartón de la torre del palacio de Westminster están dos carros, y cada jugador debe saludar como la Reina de Inglaterra para avanzar su carro, ganando el primero que llegue a la torre. A continuación un video del primer gameplay, y aquí el repositorio en GitHub del código tal cual lo entregamos.


Demostración de Lilibeth’s Parade

Nuestro juego causó mucha curiosidad al finalizar el jam. Fuimos prácticamente el único equipo que utilizó una combinación de computación y electrónica, y muchas de las preguntas iban orientadas hacia esa parte.

Creo que esta reacción valida nuestra idea de que hay oportunidades para hacer juegos que no impliquen interactuar con una pantalla o con un control usual de videojuegos (teclado, mouse o controlador).

Por esto, en el resto del artículo estaré explicando a manera introductoria cómo funciona “Lilibeth’s Parade” y el proceso de cómo llegamos hasta este concepto.

Computación física para todos

Algunos de ustedes estarán leyendo los términos Arduino o Raspberry Pi por primera vez, o probablemente no le vean sentido en un blog de desarrollo de videojuegos. A continuación daré una introducción a la computación física, y explicar un poco de dónde viene todo esto. Si estás familiarizado con el campo, puedes saltar a la siguiente sección.

La computación física es un campo en el que la computación y la electrónica se reencuentran. A través de tableros electrónicos programables se pueden hacer prototipos de circuitos electrónicos muy rápidamente. El tablero se conecta a la computadora a través de un cable USB y se programa con lenguaje C. Los programas se escriben, se compilan, y se descargan al tablero. Después de haber descargado el código, el tablero se puede desconectar de la computadora y sólo requiere electricidad para funcionar.

Estos tableros consumen muy poca energía comparado con una computadora, pudiendo funcionar por horas con una batería de 9 voltios. Son dispositivos relativamente sencillos y limitados, por lo que no corren un sistema operativo completo, pero esto los hace funcionar muchísimo más rápido que una computadora.

Los tableros disponen de conexiones para componentes electrónicos, llamados pines. Se pueden conectar componentes electrónicos a estos pines, y el tablero tiene la capacidad de “leer” y “escribir” voltajes a estos pines. Al leer un valor de un pin, se convierte un impulso eléctrico a un número que el código puede entender y procesar. Al escribir un valor se puede operar sobre un componente electrónico, por ejemplo, encender una luz, mover un motor. Los valores pueden ser literalmente ceros y unos (o bajo y alto voltaje), o puede ser un valor análogo.

La gran ventaja que tienen los tableros electrónicos es que existen muchos componentes electrónicos que se pueden conectar y usar instantáneamente. Los más complejos, como pantallas, servos, luces, traen librerías que permiten usarlos muy fácilmente; usualmente con una llamada para inicializar el componente, y otra llamada para llevarlo a algún estado. Otros componentes traducen alguna condición del ambiente en impulsos eléctricos, como sensores de luz, de distancia, temperatura, sonido, humedad, lo que amplía el campo de lo que puede hacer una computadora. Existen otros componentes que permiten al tablero comunicarse con otros dispositivos, a través de una red con cables o inalámbrica o a través de transmisión de radio.

La computación física así permite usar cómputos para una variedad de campos: desde las artes hasta cosas más prácticas, como botánica, o proyectos de automatización casera. Siendo este un sitio de videojuegos, nos orientaremos a cómo aplicar computación física para esto, pero que quede claro que existe muchísima gente trabajando en computación física que no está haciendo videojuegos (agarra la pista: mira lo que están haciendo en otros campos).

A continuación explicaremos tres componentes que utilizamos durante el jam, lo que dará la base para explicar el funcionamiento del juego al final del artículo.

Arduino

Una marca reconocida de tableros es Arduino, y es casi el nombre genérico que se ha adoptado en la comunidad para los tableros. Su diseño es open source, y otros fabricantes han desarrollado tableros “compatibles con Arduino”, lo que te permite conectarlo y usarlo con la computadora casi de la misma manera. Existen muchos modelos, cada uno con formas y disposiciones de pines diferentes para necesidades diferentes. Algunos de ellos, como el Gemma de Adafruit, tienen forma de botón y están hechos para coserse en la ropa con un hilo conductor, combinando moda y electrónica.

Los tableros Arduino se conectan con la computadora a través de un cable USB. En la computadora instalas el ambiente de desarrollo de Arduino que tiene la capacidad de compilar el código que escribas y descargarlo al tablero. El cable también permite comunicarse con la computadora a través de la emulación de un puerto serial. Esto es necesario para que el Arduino pueda comunicarse con la computadora, y viceversa, aunque algunos tableros no tienen esta capacidad. Así, puedes hacer circuitos que lean algún dato del ambiente y lo puedan pasar a la computadora para un proceso más complejo.

Los tableros Arduino también cuentan con una gama amplia de accesorios que se suelen llamar shields (escudos). Los shields ofrecen funcionalidades al tablero que se complementan con una librería de código para hacerlos funcionar. Ejemplos: una pantalla con touch screen, conexión por cable ethernet, wi-fi, u ondas de radio, higrómetros, termómetros, sensores de distancia, etc. Uno mismo puede elaborar circuitos para conectar estos componentes, sólo que el shield ofrece la ventaja de ser un producto compacto, muy fácil de conectar al tablero.


Ejemplo del shield de pantalla touch conectado a un Arduino Uno. El Arduino corre un programa que permite dibujar.

Raspberry Pi

El Raspberry Pi es uno de los proyectos de educación en computación más exitosos de los últimos años. Se describe a sí mismo como la computadora del tamaño de una tarjeta de crédito de 35 USD.

Existen varios modelos del Pi, pero en general posee un procesador ARM como el de los dispositivos smarthphone, una tarjeta gráfica que tiene capacidad de mostrar video de alta resolución a una velocidad razonable, un puerto HDMI, puerto para sonido, puerto de red, wifi, y puertos USB. Posee también conexiones para dispositivos propios del Pi, como una pantalla touch y una cámara, y posee también un puerto con pines para conectar componentes electrónicos, llamado puerto GPIO. Los pines funcionan a un voltaje diferente del Arduino, los pines del Pi corren a 3 voltios, y los del Arduino a 5 voltios, cosa que hay que tener en cuenta a la hora de conectar

El Raspberry Pi no tiene disco duro, emplea un puerto para tarjetas microSD para almacenamiento. El Pi tiene la capacidad de correr el sistema operativo Linux, y la distribución más usual es una variantes de Debian llamada Raspbian. Esta distribución contiene casi todo lo necesario para escribir, compilar y correr código en el Pi, con una variedad de lenguajes de programación: Python, C++ y otros más didácticos.


Un Raspberry Pi en funcionamiento, conectado a una TV.

Leap Motion

Aparto el Leap Motion de la categoría que hemos estado hablando, pero igual debo hacerle mención pues es un componente esencial de “Lilibeth’s Parade”. El Leap Motion es un dispositivo que es capaz de capturar y estructurar manos en tiempo real. El programador luego puede crear toda clase de gestos con una o dos manos, ya que lo que obtiene son vectores en el espacio. Por ejemplo, es posible saber la posición de los dedos con respecto a la mano, el vector normal de la palma, si es una mano derecha o una mano izquierda, entre otros datos. Para esto, el Leap Motion tiene dos cámaras infrarrojas de alcance limitado, y sintetizan una estructura 3D de la o las manos.

La gente que produce el Leap Motion ha especificado hasta ahora que el Raspberry Pi no tiene la suficiente potencia para correr su software, por lo que no es una plataforma oficialmente soportada.


Aplicación de ejemplo que muestra lo que ve el Leap Motion y una representación de la mano reconstruida

Cómo funciona Lilibeth’s Parade

Modelo

Lilibeth’s Parade emplea un modelo de cartón, con algunas partes hechas en madera balsa. El modelo se construyó a partir de una caja de cartón, la cual se modificó para hacer la base para la torre y el arco, que representa un puente hacia la torre. Los carros están hechos a partir de madera balsa, con una base que los conecta a los servos. Cuando los servos giran hacia cierto ángulo, la base mueve el carro hasta la posición deseada.


Time lapse de la construcción

La torre del palacio tiene huecos en su parte frontal, donde van montados los neopixels. Los neopixels son unos componentes LED hechos por Adafruit, muy convenientes para trabajar con el Arduino, que pueden mostrar una amplia gama de colores a partir del rojo, verde y azul. Estos se pueden conectar en serie, y cada uno posee cuatro pines, dos que le permiten conectarse a una fuente de electricidad, y los otros dos que reciben los datos para desplegar los colores. Se puede elaborar una cadena de neopixels, y al final se usa un solo pin del tablero para comunicarse con toda la cadena. Adafruit provee sin costo extra una librería que permite comunicarse con una cadena de neopixels a partir de llamadas simples.

La torre del palacio también tiene un hueco circular en el tope donde se monta la pantalla.

Estructura

La salida de Lilibeth’s Parade consiste en una PC conectada a dos tableros Arduino. Uno de los tablero tiene una pantalla conectada, y otro tablero establece la posición de los servos y el estado de las dos cadenas de neopixels. Ambos tableros reciben la información de la PC a la que están conectados. La PC también tiene conectado el Leap Motion. La PC corre un programa escrito en Processing que une todo esto. Consideramos utilizar un Raspberry Pi con una cámara, y un script escrito en Python, el cual mediante OpenCV tuviese la capacidad de reconocer una mano en tiempo real.

Processing es un lenguaje, una librería y un ambiente de código basados en Java, hecho con el fin específico de ofrecer un ambiente grato y didáctico para artistas. El programa se encarga también de leer el estado del Leap Motion, a través de una de las tantas librerías que hay para Processing que permiten usar dispositivos desde Processing.

Pantalla

Un tablero Arduino tiene un shield de pantalla, el cual muestra unas instrucciones a los jugadores. Este tablero contiene algunas imágenes, y el código es una máquina de estados que muestra estas imágenes dependiendo del estado del juego, el cual se comunica desde la PC con un número. Por ejemplo, un primer estado muestra dos manos claras, indicando que los jugadores deben poner su mano enfrente del juego para que la mano sea reconocida. Los siguientes dos estados muestran unas manos opacas, comunicándole al jugador que sus respectivas manos han sido reconocidas.

Algunos de estos estados tienen unas animaciones burdas hechas superponiendo imágenes en la pantalla. El Arduino tiene limitaciones con respecto a la velocidad como puede comunicar los cambios a la pantalla, y la velocidad para dibujar la imagen es de casi un segundo, por lo que no se puede hacer algo extremadamente sofisticado. La solución para esto fue emplear imágenes lo más pequeña posibles, para que se dibujasen rápidamente, y que se pudiese entender el significado de la animación al mismo tiempo.

Servos

Los servos son componentes muy sencillos. Pueden rotar a un ángulo específico ordenado por un tablero, y existe una librería que hace esto de manera simple. Al emplear servos, la dificultad consiste en poder traducir el ángulo al que se desea rotar el servo a la realidad, de manera que el modelo funcione bien. Calibrarlo, pues. Lleva tiempo poder calibrar el modelo de tal manera que la base de los carros no pegue con otras partes del modelo.


Servos al momento de la prueba

OpenCV

La entrada de Lilibeth’s Parade inicialmente consistió en un Raspberry Pi que tuviese instalado OpenCV, con un script de Python que controlase tanto esto como la comunicación con los Arduinos. OpenCV es una librería que ofrece un conjunto de rutinas conocidas para “mejorar” imágenes, ya sea tomadas de un archivo, de un video o de una cámara, facilitando la construcción de estructuras sobre las que se puede razonar en código. En el caso de este juego, nos propusimos hacer reconocimiento del color de la piel para detectar la forma de una mano.

La instalación de OpenCV en el Raspberry Pi requiere compilar código en C++, lo cual constituyó una gran inversión de tiempo para lo limitado del jam. El Raspberry Pi tiene la capacidad de compilar código, pero suele tomar mucho tiempo debido a la limitación de velocidad de procesamiento. El Raspberry Pi puede tomar horas en completar la compilación. Disponemos de un Raspberry Pi 3, el cual tiene 4 núcleos, los cuales se pueden utilizar simultáneamente. Esto lo intentamos, pero el Gigabyte de memoria RAM no fue suficiente, por lo que entró en swap, y además teniendo solo 8 GB en la memoria microSD que utilizamos toda la computadora se detuvo, por lo que tuvimos que reiniciar. Sin embargo, se logró compilar la librería y los bindings a Python.

Utilizamos la guía de Pyimagesearch para hacer la instalación, y fue sumamente efectiva, por lo que la recomiendo para cualquier proyecto que quieras hacer con OpenCV y Raspberry Pi.

Al final, la detección de piel depende mucho de las condiciones de iluminación del lugar, y era un cuanto inconstante con respecto al reconocimiento de la forma de la mano. Habiendo empleado casi 20 horas desde el inicio del evento, y sin haber trabajado hasta ese momento con el código del Arduino, concluimos que esta vía no nos iba a resultar en un juego a la hora de entregar.

Sin embargo, quedó como un ejercicio interesante, y una introducción al uso de OpenCV. El Raspberry Pi junto con la Raspberry Pi Camera posee suficiente desempeño para poder hacer reconocimiento visual en tiempo real. Con la posibilidad de poder obtener la imagen raw de la cámara, sin pasar por compresión JPEG, se tiene una velocidad de al menos 15FPS, lo que hace al reconocimiento factible.


OpenCV + Raspberry Pi + Raspberry Pi Camera

Leap Motion

El Leap Motion fue muy sencillo de configurar, y posee una variedad de software que permite explorar la percepción del dispositivo, y las estructuras de datos que forma a partir del reconocimiento de la mano. Processing facilita la instalación de una librería que sirve de binding al manejador del Leap Motion.

El programador lo que ve son vectores de la mano cuyo origen está en el centro del Leap Motion, por lo que se hace sencillo el razonamiento geométrico de lo que haya que hacer. En el caso específico del juego, detectamos el rango de rotación de la muñeca (máximo y mínimo), y la forma de avanzar en el juego es moviendo la mano de tal manera que la rotación pase por el medio de ese rango. Así que tiene sentido moverla lo menos posible, aunque el gesto de hacerlo es gracioso.

Uno de los particularidades de la librería es que deja al programador con la responsabilidad de identificar la mano que reconoce. Esto quiere decir, la librería ofrece información sobre lo que reconoce en cada frame del sketch de Processing, y sólo es válida para ese frame. Uno puede identificar una mano a través de los frames debido a que tiene un número identificador que es el mismo mientras el Leap Motion reconozca la mano. Cuando la mano sale de la vista del Leap Motion y entra nuevamente, en el frame aparece una mano con un identificador diferente.

No nos dio tiempo de estabilizar el reconocimiento de las manos, por lo que tuvimos que pedirles a los jugadores que no sacaran la mano una vez comenzaran a jugar. De continuar con el proyecto este debería ser una de las primeras tareas a completar.

Coda

“Lilibeth’s Parade” fue un proyecto surgido de la necesidad de hacer algo diferente a un videojuego tradicional, en un ambiente como el de un game jam que está tan orientado al desarrollo de videojuegos. Existen otros eventos llamados hackathones, que tienen una filosofía similar, pero la mayoría de estos eventos suelen ser de naturaleza competitiva. La filosofía de colaboración y experimentación del Global Game Jam es uno de los aspectos más importantes y mejor defendidos desde sus inicios, y bajo ese espíritu esta clase de ideas afloran. Para mi fue una excelente experiencia con computación física, y me anima a seguir explorando las posibilidades de este campo.

11 años de El Chigüire Literario: el artículo anual

Hace 11 años comencé a escribir sobre videojuegos en Venezuela, en ese entonces como una manera de escribir sobre lo que me gustaba: no solamente escribir sobre juegos, sino escribir sobre desarrollo de juegos.

En ese entonces tuve que hacer una decisión que sabía que iba a tener impacto en el blog para siempre: escribir en inglés para poder contactar a otros desarrolladores alrededor del mundo, o escribir en español para poder contactar a otros desarrolladores en el país (el mío o cualquier otro hispanohablante).

Esta decisión la tomé considerando entre compartir experiencias entre desarrolladores que vivían en otros lados, probablemente en una situación muy distinta a la mía, o compartir entre desarrolladores que vivimos en el mismo espacio geográfico, tal vez con realidades similares. Aún con la capacidad para poder escribir en ambos idiomas, traducir es escribir dos veces. Esto es algo muy difícil y costoso en tiempo, por lo que me fui por una sola opción. Por las conversaciones y las oportunidades que he tenido a lo largo del tiempo, creo que ha sido la decisión correcta.

El blog fue en sus inicios un diario de viaje y un intento de formalizar el pensamiento sobre videojuegos. No solamente se trataba de encontrar o escribir tutoriales: era también sobre poder reseñar juegos, pensar sobre ellos, y tomar lecciones para aplicar en futuros juegos. Pero por mucho que uno piense y analice críticamente a los videojuegos, hacerlos es un asunto completamente diferente. Es un proceso constante, que evoluciona a la par con los juegos que uno hace. Me tomó tiempo mejorar en muchos aspectos la práctica de hacer videojuegos. Y me tomó aún mucho más tiempo tomar en serio mis propios resultados.

A lo largo de estos años, ustedes han tomado interés en mi trabajo, algunos de ustedes han tomado inspiración en él para hacer sus carreras. Esto me alegra inmensamente, y me hace pensar que hacerlo vale la pena. Solo espero que en algún momento tengan la posibilidad de que ustedes puedan hacerlo con su gente, con los nuevos que vendrán más adelante.

Se me hace dificil escribir en en blog. No por falta de cosas que he estado haciendo. Más bien lo contrario: escribir requiere establecer un bloque de tiempo, y es una actividad solitaria. Sin embargo, creo que he podido responder a la mayoría que me ha escrito por mi correo, y mantengo al menos el compromiso personal de continuar escribiendo, aunque no siempre sea a través del blog.

Desde el 8 de enero de 2006 llevo 845 entradas publicadas. Espero aprovechar la oportunidad para tener más. Deseo lo mejor para todos lo que me leen por acá.

Prototype Dump: lo incompleto hasta ahora

El proceso creativo es como cultivar plantas. Las plantas crecen bajo las condiciones correctas, y una vez que comienzan a crecer, deben mantenerse para sigan haciéndolo. Aún así, hay plantas que mueren por razones que al escapan a tu control.

Entre 2009 y 2016 hice una serie de prototipos que exploran diferentes ideas, algunas relacionadas con ideas abstractas, y la mayoría relacionada con temas de actualidad en Venezuela. Muchas de estas ideas las hice circular en privado, pero nunca las publiqué, o no tuve la intención de hacerlo.

Los prototipos son solamente eso: concretar ideas de la manera más rápida posible, con poco cuidado de la estructura del código, para poder capturar la esencia de esa idea. A menos que sea especificado de otra manera, la mayoría de estos prototipos requieren Adobe Flash Player.

transmit

Transmit (2009): http://www.ciroduran.com/files/2009/transmit/20090713/index.html (Una versión más vieja aquí)

La idea de Transmit era hace un juego rítmico que se pudiese jugar con un solo botón. Fue inspirado en las cadenas que ponen en los estacionamientos en la ciudad para evitar que los carros estacionen. Al tocar la cadena, se puede ver una onda y eso era algo que quería representar.

rezta

Rezta (2012): http://www.ciroduran.com/files/2012/rezta/index.html (Requiere Unity Web Player)

Un intento de implementar un clon de Zuma.

yano

Yano (2012): http://www.ciroduran.com/files/2012/yano/index.htm

Este juego planeaba explorar la relación entre los hechos y la manera de difundirlos. No recuerdo exactamente la noticia, pero unos indígenas en Venezuela murieron. La idea es entonces explorar la modificación de la noticia dependiendo de la agencia. Pero solamente llegué a tener un walking simulator en guayuco.

cuatower

Cua Tower (2014): http://www.ciroduran.com/files/2014/cuatower/index.html (en Flash o en html5)

Cua Tower está obviamente inspirado en Tiny Tower, y me da mucha pena no haberlo continuado. Como en Tiny Tower, la idea es hacer crecer la torre, invadiendo nuevos pisos, ya sea para hacer residencias o comercios. A la gente la puedes subir en moto por las rampas del estacionamiento para obtener monedas.

puente

Puente (2014): http://www.ciroduran.com/files/2014/puente/Build.html (Requiere Unity Web Player)

Puente lo he mencionado antes, pero me sigue gustado como recordatorio de que clonar un gameplay puede ser un buen Este caso no es más que una reimplementación de Bridge Builder, con su modo de diseño y su modo de prueba.

pinata

Piñata (2015): http://www.ciroduran.com/files/2015/pinata/index.html

Con piñata quería hacer una relación de un Estado dependiente del petróleo, del control militar, y de la dependencia de la población de ese Estado. Al final no pude conseguirle un mecanismo convincente.

feria

Feria (2015): http://www.ciroduran.com/files/2015/feria/index.html

Feria continúa la intención de hacer ver la intervención militar tan intensa que hay en Venezuela. En esta ocasión un militar se encarga de repartir productos básicos a la población que aparece para protestar. Pero algunos no vienen buscando productos, sino valores no materiales. ¿Qué debe hacer el militar en este caso? No puede repartir esos valores. También debe mantener un cierto orden, representado por la barra en la esquina.

Respuestas del Ask Us Anything de Venezuela Game Developers

En días pasados hicimos en el grupo Venezuela Game Developers en Facebook una sesión de preguntas a varios desarrolladores venezolanos que están trabajando en empresas de desarrollo AAA. A continuación la transcripción de las preguntas. Gracias a Paolo Sivila por trabajar en pasar las preguntas y respuestas. Yo edité algunas de las respuestas para agregar acentos y unas letras de más, pero en general las mantuve tal cual las hemos escrito.

Pónganse cómodos porque son 29 preguntas. Las respuestas originales las conseguirán en el post en el grupo de Facebook.

Sigue leyendo Respuestas del Ask Us Anything de Venezuela Game Developers

Ask Us Anything en Venezuela Game Developers

En el grupo de Facebook Venezuela Game Developers estaremos varios desarrolladores venezolanos en estudios AAA en Estados Unidos y Europa respondiendo preguntas. Esto lo haremos durante el transcurso del domingo 21/02/2016, sin un horario particular debido a las diferencias en zonas horarias.

El grupo consiste en: Luis Lairet (Crytek, Alemania), Angela De Castro (Crytek, Alemania), Jose Aponte (Crystal Dynamics, California, USA), Ricardo Ovelar (Rockstar, California), Eduardo Cabrera (Activision, California), Nadia Labeikovsky (Electronic Arts, California), y un servidor (Creative Assembly, Reino Unido)

Luis Lairet: Trabajé en Autodesk como software engineer y me especializaba en tools. Trabajé en Scaleform Studio y Stingray por 3 años. Y ahora trabajo en las herramientas del CRYENGINE en Crytek.

Angela De Castro: Comunicadora Social de la UCAB en mención Audiovisual. MS en Business de Full Sail University. Content Developer y Community Manager para Autodesk Scaleform y ahora Community Manager de Crytek y CRYENGINE.

José Aponte: Ingeniero en Computation de la USB, cohorte 2005. BS en Game Development de Full Sail University FL, 2013. Tools & Graphics Programmer de Crystal Dynamics en titulos como Lara Croft: Temple of Osiris y Rise of the Tomb Raider.

Ricardo Ovelar: BS en Game development. Actualmente Development Support en Rockstar San Diego

Eduardo Cabrera: BS Game development y MS en Game Design de Full Sail University. UX Lab Analyst en Epic games y ahora User Research Assistant en Activision

Nadia Labeikovsky: Ingeniera de profesión, convertida en Project Manager. Productora de Localización y Texto para Maxis en EA. 5 años en la industria, actualmente trabajando en Los Sims™ 4.

Ciro Durán: Ing. de Computación USB, cohorte 2000. Maestría en Computer Games en Goldsmiths, 2014. Supermassive Games (Until Dawn). Creative Assembly (Total War), programador de herramientas y pruebas automatizadas.

Pásense por esta conversación y dejen sus preguntas. Posteriormente haré la transcripción en este artículo (uno nunca sabe qué vaya a pasar con Facebook luego 😛 )

Respondiendo a Marco

Buenas noches señor, mi nombre es marco tengo 16 años y a mi me ha llamado mucho la atención ser un diseñador de personajes de vídeo juegos. Yo vengo de Venezuela, a veces por las tardes me pongo a dibujar personajes pero muy pocos, trato de ser creativo no me gusta copiarme de otros dibujos, ¿usted por casualidad sabe algo de eso? ¿qué me podría aconsejar?, gracias.

Hola Marco,

¡Gracias por escribirme!

Soy desarrollador de videojuegos, y soy principalmente programador. Sin embargo, entiendo el interés que tienes y espero darte alguna orientación a lo que quieres hacer. Solo a manera informativa: cuando tenía 16 años (hace 16 años, de hecho) tomé interés por el anime y por el teatro, entre otras cosas.

El anime fue algo que me duró relativamente poco, digamos unos 2 años, porque sin buen internet para descargar videos tocaba comprar las películas y no tenía mucho dinero, y poco a poco me fui quedando atrás en esa materia. Sin embargo, del anime aprendí a dibujar un poco, y a tener idea de las proporciones y algunas técnicas de dibujo que hasta el día de hoy tengo. Puedes ver mi estilo de dibujo en Tómate un Descanso, aunque los fondos son herencia completa de Day of the Tentacle.

El teatro me duró mucho más, aunque actué muy poco, lo que realmente hice fue tocar un instrumento (el clarinete) durante los más de 5 años que estuve en un grupo del colegio, estando allí incluso después de haberme graduado, y esto lo digo porque tiene cierta importancia, ya verás por qué.

Posiciones como “diseñador de personajes en videojuegos” parecen difíciles de obtener, y lo son porque la mayoría de las personas que ves trabajando en esas posiciones son personas que ya estaban haciendo algo (dibujando, digamos) y “cayeron” en la industria del videojuego, por así decirlo. Son personas que en cierta manera han logrado inventar y reinventar su trabajo. En estas épocas donde todo parece dar tan poca certidumbre, creo que esa es la tarea que todos debemos adoptar.

Por cierto, ¿a qué llamas “pocos personajes”? La creatividad es una cosa muy curiosa: creo que uno es más creativo en tanto conoces otras fuentes. Los mejores artistas han comenzado copiando descaradamente las cosas que les gustan, y creo que tú deberías hacerlo también. Cuando copias, comienzas a darte cuenta de los pequeños detalles que conforman todo el cuadro, y si lo haces bien, comienzas a preguntarte por qué esos artistas tomaron esas decisiones, y comienzas a cuestionar esas decisiones. Bien también puede pasar que practiques y practiques y no logres imitar del todo a tu artista (o artistas favoritos), pero tus fallas en eso deberían convertirse en tu marca.

Conocer fuentes es lo que te va a dar material para ir en nuevas direcciones, y cuando hablo de esto no hablo solamente de artistas visuales, sino de todo lo que te rodea: música, películas, tu vida cotidiana. Todo de donde puedas tomar material para incluir en tu obra.

Ahora explico: ¿por qué el teatro duró mucho más que el dibujo en mi vida? creo que es porque en el teatro conseguí a una comunidad que me dio la bienvenida y con la que compartí mucho de mi tiempo. Conseguir a gente que comparta tus gustos y formar tu comunidad es lo que te va a permitir progresar en tu arte y eventualmente
descubrir lo que quieres hacer (y lo que no quieres hacer también, que es importante).

Espero que eso te haya podido orientar algo, aunque probablemente tengas más preguntas que antes, lo cual también es válido 😛 si es alguna pregunta con respecto a técnicas de dibujo, creo que hay otras personas que podrían responder esas preguntas mejor que yo 🙂

También importante: aprende inglés para poder leer buena parte del contenido que existe en internet 😉

Cualquier otra pregunta estoy a la orden.

Saludos,

Ciro.

10 años de El Chigüire Literario

“Los días son largos, pero las décadas son cortas” — Sam Altman

“«Este es un mundo como otro cualquiera»” — Luis Mateo Díez

El 8 de enero de 2006, hace exactamente 10 años, publiqué un post en un blog de Blogspot donde comencé a hablar sobre videojuegos. A medida que escribo estas palabras, pienso en la frase de Sam Altman. Pienso también en qué son 10 años como medida de tiempo, en lo que estaré viviendo dentro de 10 años, y un balance sobre lo que ha pasado. De eso hablaré hoy.

Diferentes diseños del blog
El blog a lo largo del tiempo

Perspectiva

10 años puede ser una medida de tiempo que pone muchas cosas en perspectiva.

Cuando publiqué por primera vez y hablé de Quake (que para la fecha ya tenía 10 años), no existían los smartphones como los conocemos ahora.

Steam ya existía pero estaba apenas naciendo como plataforma de ventas digitales.

El hardware de las consolas no se parecía tanto al de la PC como ahora y, en consecuencia, los procesos de desarrollo eran muy diferentes entre sí en comparación con hoy en día. Hoy en día algunos fabricantes ofrecen sus kits de desarrollo para mucha más gente, y en consecuencia hay una mayor variedad en videojuegos.

En 2006 estábamos pasando de usar MSN a usar Google Talk. Ninguno de los dos existe actualmente, al menos no en su forma original.

En MSN me gustaba poder extender el nombre que mostraba a mis contactos para poner alguna frase u ocurrencia del momento. En esos días quería hacer un archivo automatizado de las frases que ponía en “mi nick de MSN”. En 2007 ese archivo se materializó en Twitter.

En 10 años co-fundé una empresa que continúa funcionando hoy, me di una segunda oportunidad de estudiar, y estoy actualmente trabajando en la industria del videojuego (más sobre esto más adelante). Nada de esto podía ver yo en 2006.

En 2006 existía una extensa comunidad de blogueros. Ellos fueron los que inicialmente me impulsaron a abrir un blog. Sigo manteniendo contacto con algunos de ellos, y inclusive me casé con alguien de la comunidad y me cambió la vida 🙂 . Sin embargo, la popularidad de los blogs decayó a medida que otras redes sociales tomaron nuestras interacciones.

Hoy

Escribo los siguientes párrafos con el objetivo de poderlos leer más adelante, y poder compararlos, espero, dentro de 10 años.

Actualmente tenemos un mercado móvil que pareciera que se come a sí mismo, con precios que sólo garantizan la supervivencia a los que están en el Top 5.

Tenemos un mercado para navegadores que cambió y que espera a que HTML5 sea una solución fácil de utilizar y que sea multiplataforma.

Las consolas se han abierto poco a poco a más desarrolladores, pero siguen siendo en general tímidos.

Finalmente tenemos un mercado para PC gigantesco, con las descargas digitales casi tan grandes como las ventas físicas, pero ante un estancamiento a nivel de contenido que nos obliga a todos los desarrolladores a replantear muchas cosas que damos por sentado.

El correo electrónico sigue siendo imbatible en la forma de comunicarnos por Internet. Slack ha acumulado muchísima popularidad como un chat y herramienta colaborativa. El streaming se ha popularizado cada vez más y es ahora una forma de transmitir conocimiento a muchas personas.

Nada de esto reemplaza tener una buena conversación y el contacto personal. Es importantísimo conseguir a las personas con la que compartes intereses en tu propia ciudad. Internet facilita este proceso, pero hay que saberlo utilizar para luego poder hablar cara a cara.

Extraño a mis padres y a mi familia, que están más lejos de lo que yo quisiera. Espero verlos muy pronto y más seguido.

Comunidad

En 10 años tuve la oportunidad de conectar con otros desarrolladores, y convencer a muchos más de que tenían en sus manos la posibilidad de crear algo desde cero.

Esta labor y, más importante aún, la curiosidad de ver si se podía hacer un game jam en Venezuela, me llevó a crear el Caracas Game Jam.

Cada enero desde 2009 se han dado cita desarrolladores noveles y experimentados, y todos los eneros termino completamente complacido de la calidad de los juegos que se hacen con los recursos que tienen los caraqueños y demás visitantes de otras ciudades, que se lanzan ese viaje sólo para estar en el evento.

Confieso que cada vez que se termina una edición, me entra un cierto miedo a no poder repetirlo el año siguiente debido al deterioro de las condiciones de vida de mucha gente en el país.

Este miedo se ha incrementado desde que me fui de la ciudad, pero ese miedo ha sido reemplazado por una satisfacción que nadie me puede quitar: la propia comunidad que creció con el Caracas Game Jam se ha encargado de organizar y llevar adelante hasta ahora dos ediciones.

Gracias al blog y al esfuerzo de estudiantes de la Universidad Católica Andrés Bello, di clases. La única vez donde me levantaba con el mayor de los gustos a las 4:45AM un día a la semana para dar clases. Conocí gente maravillosa y trabajadora. Espero haberlos inspirado, así como ellos me han inspirado.

Todo esto va más allá de lo que había esperado o había soñado en 2006 cuando esto comenzó.

Por lo tanto, no me queda más que decirles a todos ustedes, estudiantes, los organizadores y participantes del Caracas Game Jam: gracias. No tengo para ustedes sino el agradecimiento de querer formar parte de esto. Deseo que les dé el impulso para seguir adelante con sus propios emprendimientos.

Arte

Muchas veces esas buenas películas, buenas canciones o buenos juegos que disfrutamos llevan un mensaje implícito de que no vale la pena crear tu propio arte. Lo que consumes está en cierta forma tan bien hecho que no hace falta criticarle, más allá de algunos meros aspectos técnicos o superficiales.

Se piensa que la crítica es decir que algo está mal hecho, y por lo tanto el acto de criticar se convierte en una afrenta. A la afrenta se le responde visceralmente: “si me critican es porque me envidian”, y se pierde una oportunidad fantástica para mejorar.

La crítica comienza cuando después de presenciar algo te preguntas: “¿qué tal si…?”, y cuestionas lo que estás viendo, la idea que hay detrás de ello. Lo que se deja de decir es tan importante como lo que se dice. Otros mundos pueden existir, no limitemos nuestra imaginación a ser un mero reflejo de nuestra vida cotidiana.

Nuestra propia sociedad contribuye a la inaccesibilidad del arte, diciendo (y aquí voy a parafrasear a un querido profesor) que lo que tienes que decir no le interesa a nadie. Buena parte de la sociedad piensa que el arte es un lujo, algo que sólo los ricos pueden hacer y/o pueden pagar.

Pero el arte nos rodea, día a día, cada hora que estamos despiertos. Y podemos participar en ella. Y podemos participar en ella porque es lo que nos permite sentir empatía y que somos más parecidos de lo que aparentamos, aún cuando el mundo de hoy nos obliga a especializarnos. También nos permite desahogarnos, sentir que no somos perfectos, y eso es perfectamente válido.

En 2006 el subtítulo de este blog era “el videojuego es la nueva literatura, el MP3 es cultura”. La literatura la define la RAE, entre otras cosas, como el “arte de la expresión verbal”. ¿Qué se hace con la expresión verbal? Contar historias.

Contar historias es sólo una parte del arte. Hay gente que cuenta emociones, o cuenta impresiones. Pero contar historias es algo que siempre me ha gustado, aunque los juegos me han impulsado hacia analizar sistemas de reglas y ver cómo funcionan.

Contar historias es ofrecerte para que otros se sientan solidarios contigo. Cuando dos o más personas se unen con una idea en común, es cuando adquirimos la capacidad de crear un mundo propio. Entre grupos nos podemos llevar adelante para impulsarnos y tener una vida mejor.

Eso es lo que hace el arte. Y el arte comienza sincerándote con tus gustos.

El ejercicio para 2016 es, entonces, aprender a criticar, y aprender a disfrutar tus gustos.

Lo que viene

El Chigüire Literario para mí representa lo que ocurre cuando uno pone algo de sí para alguien, y encuentras respuesta de parte de ese alguien. Es una interacción que me nutre, y que espero nutra a los que me leen.

Esto no siempre ocurre con todo lo que haces, e incluso pueden haber períodos donde no pasa nada, períodos en los que uno, honestamente, se siente como el culo.

Sin embargo, todo esto pasa y uno trata de encontrarle una explicación, una narrativa. Seas profundamente religioso, o seas obstinadamente ateo, esto ocurre porque somos seres humanos.

Estamos hechos para ver patrones en la vida, y nuestros cerebros desean tanto ver esos patrones que a veces comienzan a ver cosas donde no hay. Esto no es malo, ni es bueno. Simplemente es así. Y mientras más conscientes seamos de eso, creo que seremos capaces de llevar una mejor vida.

En 10 años tuve la oportunidad de comenzar a trabajar en la industria del videojuego. He sido desarrollador de juegos desde cero, y ahora soy desarrollador de algo que es muchísimo más grande que un equipo pequeño, o yo solo.

El repertorio de habilidades técnicas es diferente, y a lo largo de estos años he tenido la oportunidad de aprender una parte de este repertorio.

Pero lo más importante sigue siendo el pensamiento crítico, la capacidad de resolver problemas, los que te vengan, y la capacidad de empatizar con otros y ver su punto de vista.

Ver hacia adelante es muy difícil. Siempre lo ha sido. Uno tiene que ir por la vida con una mezcla de optimismo y ansiedad, y a veces ni siquiera el optimismo. Creo en el agradecimiento como antídoto para esa sensación. A ti, por todo: gracias.

Revisa los posts de años anteriores: 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006.