El Chigüire Literario Desarrollo de videojuegos con denominación de origen

Resumen del Venezuela Duel Jam 2015

El pasado julio se hizo el Venezuela Duel Jam, un game jam online que invitó a varios desarrolladores a hacer juegos en torno a un tema bastante peculiar:

tema_vdjam

Pueden ver a todos los participantes en la página del jam en itch.io. Los ganadores en esta ocasión fueron los juegos Chicks (por Fiery Squirrel), Chicken Rights (por bellick4) y Psycho Chicken (por TriBrain, Tomas Bruckner Kambo, y warles34).

Yo también participé junto a Hector Vargas, y nuestro juego fue La Culpa es de Clotilde (requiere Flash).

¿Por qué el control de versiones es crucial para programar (entre otras cosas)?

Si has tenido que entregar un trabajo escrito, o un proyecto para la universidad, muy probablemente has tenido esto en tu escritorio:

tesis

Es muy importante darse cuenta de que un documento que escribes, ya sea código fuente, documentación, un libro, una tesis, no es solamente el producto que entregas al final. Es también el proceso de pensamiento por el que pasas para poder llegar a ese producto.

Ese proceso muy rara vez es lineal. Muy pocos libros se escriben comenzando desde la introducción, y escribiendo cada capítulo en orden. Muy pocos proyectos de software comienzan con la pantalla de inicio.

El proceso de pensamiento en muchas ocasiones es caótico y desordenado. Pero sobre todas las cosas, los pensamientos son orgánicos, tenemos decenas de pensamientos cada día, pero solo algunos de estos se quedan en la mente. Algunos de estos pensamientos son difíciles de concebir, de hacer crecer, mientras que otros parecieran que crecen más rápido que nuestra misma capacidad de concebirlos.

Cada idea que tenemos es el resultado de ensayar varias posibilidades. No podemos escogerlas todas, hay que tomar decisiones en el camino. Algunas veces es muy conveniente poder ir atrás en el tiempo, y explorar otra posibilidad, lo que lleva la idea por otro camino.

Un control de versiones es un software que facilita este proceso. Es capaz de tomar fotos de un documento y compararlos en el tiempo. En cada comparación podemos ver qué cosas se agregaron, se quitaron o se cambiaron. Es capaz de tomar una de esas fotos y formar una línea de tiempo. Todo lo escrito va para un repositorio, el cual preserva toda esta información.

Pero de todas las funcionalidades, la más importante es tener la capacidad de comunicar y compartir cambios en el documento/código a otras personas que están trabajando sobre el mismo proyecto. En casi todos los sistemas el proceso es similar: cada integrante descarga una copia del proyecto a un “directorio de trabajo”, allí hace los cambios, y luego manda los cambios de vuelta al repositorio. El sistema incorpora los cambios hechos por otros participantes de la manera más transparente posible, pero si no es posible integrar los cambios (por ejemplo, dos personas cambiaron la misma línea de texto), entonces el sistema deja al usuario el trabajo de seleccionar cuáles cambios continúan o se revierten.

No es mi objetivo enseñar específicamente cómo utilizar un control de versiones. Creo que hay recursos en línea que son mucho mejores y están disponibles inmediatamente, y a los que haré referencia al final del artículo.

Si escribo esto, es para animar a aquellos interesados en programar a que aprendan también a manejar un control de versiones. Esto es algo que muchas veces se aprende en una oficina y no en una universidad (donde supuestamente se aprende esta clase de cosas).

Por otro lado, muchos escritores no tienen el conocimiento tecnológico para incorporar un control de versiones en su trabajo (¿instalar un servidor?, ¿cómo guardo mis cosas?). Sin embargo, ver un recurso como GitBook me hace pensar que es posible traer a los escritores las ventajas del control de versiones sin pagar tanta penalidad en el aprendizaje de su manejo. Si eres escritor regular me gustaría saber tus opiniones al respecto.

Si necesitas saber más sobre el control de versiones, el libro Version Control By Example, de Eric Sink, es una de los mejores libros que he leído sobre el tema, e incluye los sistemas más populares. Si tu intención es, además, ser desarrollador profesional de videojuegos, en algún momento te encontrarás con Perforce, el cual es un servidor centralizado, similar a Subversion. Cuenta además con una versión gratuita para un límite de usuarios, lo que te permite probarlo sin costo alguno.

Las herramientas son solamente herramientas

Foto por Lenore Edman Foto por Lenore Edman

Últimamente he observado en varias comunidades de desarrolladores de videojuegos la tendencia a idealizar las herramientas que utilizamos, quizás hasta el punto de excluir la posibilidad de que existan otros puntos de vista.

Comparamos engines, lenguajes de programación, hasta pipelines completos de desarrollo. No es que esto sea malo, la verdad es que aprender a utilizar alguna de estas herramientas (o conjunto de herramientas) requiere invertir tanto esfuerzo que entiendo la necesidad de sentir que hemos hecho la elección correcta y, por lo tanto, destacar las bondades de la herramienta.

También es cierto que es muy difícil anticipar cómo se va a comportar una herramienta ante un proyecto. No es lo mismo hacer un juguete que algo que sea entregable. La herramienta puede tener limitaciones que no eran conocidas al momento de comenzar, o se comporta lentamente, o la recolección de basura pone el juego lento en momentos al azar.

Pero uno de los vicios, si así lo puedo llamar, es hacer la comparación de las herramientas empleando el material de marketing o los juegos más exitosos del momento. Dado el nivel de muchos desarrolladores noveles, no creo que les sean útiles muchas de las últimas características novedosas de tal o cual herramienta, pues suelen ser cosas que en cada versión van aumentando en complejidad. Son características que multiplican la productividad o los resultados si has hecho el trabajo indicado al momento en que aparecen, pero no agregan beneficios si apenas estás comenzando.

Cada desarrollo es un proceso largo y complejo, conformado por muchos pequeños momentos que se suman y forman algo más grande. Ese material de marketing que vemos está hecho precisamente para eso, para difundir las bondades del engine que se te está vendiendo, muy probablemente sin cubrir tu caso de uso, que suele ser más complejo u oscuro de lo que parece. El juego que estás alabando muy probablemente tuvo que tomar más de un atajo para lograr el resultado que estás viendo. Quizás todo esto sea porque me gustaría ver más juegos hechos, y no tanto “mira qué maravilla [tal característica] de [tal engine]”.

Mi recomendación, si es que quieres seguirla, es que siempre cuestiones lo nuevo que sale. Si has visto un juego hecho con una determinada herramienta, sea cual sea, significa que existe la posibilidad de hacerlo. Por tanto, lánzate a hacer tu juego con esa herramienta que conoces. Verás que esa herramienta que alabas tanto tendrá sus dificultades y sus achaques. Eso es algo bueno, significa que esa herramienta tiene posibilidades de mejoras. Si es un producto hecho en comunidad, significa que puedes ingresar a la comunidad de desarrolladores y participar allí, sugiriendo mejoras, e incluso hacerlas tu mismo y subirlas.

9 años con El Chigüire Literario

Hace 9 años abrí un blog en Blogspot donde quería hablar de videojuegos como literatura. Esta idea la tomé de una de las definiciones en el diccionario, que define la literatura como “arte que emplea como medio de expresión una lengua”, en este caso, tratando al videojuego como una lengua con existencia propia. El Chigüire Literario desde entonces ha crecido lenta y orgánicamente; siendo, sin preverlo, una referencia en el tema del desarrollo de videojuegos en Venezuela. Inicialmente como un blog que apuntaba a hacer reseñas de juegos, mutó posteriormente a un lugar para publicar tutoriales y enlaces a información de interés, y eso dio paso a ser también un punto de encuentro de gente curiosa por el desarrollo de videojuegos.

Esta curiosidad llevó a hacer el Caracas Game Jam, un evento que llegó a su séptima edición, y un evento que me transformó y transformó a sus participantes. A todos aquellos que han participado o colaborado en el evento, invirtiendo su tiempo y entregando su confianza a los que organizamos las diferentes ediciones: Gracias. Gracias por estar allí, y esperamos que el jam les haya dado el impulso que necesitaban, ya para hacer juegos u otras cosas que comprendieron en el evento.

2014 en El Chigüire Literario

En general 2014 fue un año en el que el blog tuvo poca actividad, aunque tuve bastante actividad fuera del blog que espero poder comentar por acá. 2014 fue el año en que hice y completé una maestría en desarrollo de videojuegos, y fue un período de mucho trabajo. Para resumir un poco el cuento, pude darme un tiempo para implementar un capítulo del libro GPU Gems, y llevar la simulación de fluidos al GPU (aunque el grado de éxito de esto fue relativo, debido a la lentitud con la que funciona). También pude conocer algunos temas de inteligencia artificial, e implementar algo sencillo. Pude hacer un proyecto sencillo en Unity, y así por fin atender las solicitudes que me han hecho compañeros acerca de usarlo :-) sí, funciona. Hice un proyecto en equipo para generar una ciudad y sus interiores, con el que estoy muy satisfecho, y un explorador de superficies, que es algo que había hecho en el pasado pero que no está de más hacerlo nuevamente para mantener el conocimiento fresco.

Fuera de la maestría, participé en un jam, y éste fue el resultado, un juego con el que estoy muy contento. También comencé a trabajar en una herramienta para voxeles, Dancing Cubes, que se encuentra en itch.io. Allí también estaré poniendo otras herramientas y juegos que vayan saliendo.

Con respecto al blog, en 2013 comencé un tutorial de cocos2d-html5, el cual tuvo la combinación desafortunada de un abandono paulatino, y una rápida evolución de la librería. Esto ha hecho que algunos aspectos del tutorial hayan quedado parcialmente obsoletos, aunque los conceptos fundamentales de cocos2d sigue allí. Sobre cocos2d-x hablé en esta charla para Gamexpo, y espero que les pueda servir también. Este año tengo en planes algunos artículos/tutoriales sobre varios temas, como generación procedimental, o inteligencia artificial.

Ejercicios para 2015

2014 fue un año muy complicado para mi país, Venezuela. Más allá de la situación política, hay un hartazgo mal canalizado. Es imposible decirle a la gente que no se sienta mal, pero sí creo que es hora de revisarse y de reflexionar sobre los actos propios, sobre cómo nos comunicamos y cómo podemos recuperar la confianza que falta nos hace. Cuando una persona se equivoca y nos burlamos de esa persona por ello, en realidad estamos perpetuando el problema y creando mayor resentimiento. Por lo tanto, hace falta respirar hondo, y comenzar a establecer puentes.

Muchísimos factores en Venezuela están interesados en que vivamos sin dudas, llenos de creencias y conclusiones inalterables, imposibles de desmontar. Lo contrario de esta situación es la conversación constante, donde nos enteramos sobre los puntos de vista de otros, y construimos consenso. Desde hace algunas semanas he sugerido algunas cosas que se pueden hacer. Yo no puedo garantizar que esto funcione, pero con que tengas la intención de hacerlo ya es un paso en la dirección correcta. Esto tampoco lo tienes que hacer con desconocidos, hazlo con la gente que conoces:

  • A veces ganar una discusión es muy satisfactorio, pero a la larga vale más ganarse a una persona.
  • Evitar usar el “por eso estamos como estamos”. En general, llegar rápidamente a conclusiones, sin cuestionamiento alguno, es una bandera roja que señala que algo falta en ese argumento.
  • Dejar de usar “intenso” como descalificativo. En Venezuela es común escuchar que una persona es intensa cuando presenta algo que es difícil de entender, o también para aquellas personas que defienden fuertemente una causa. Es importante hacer la distinción, y es también un ejercicio de honestidad decir que no entiendes algo, en vez de achacarle la culpa a la persona que presenta su obra.
  • Dejar de generalizar. Cuando comienzas una frase con “es que los venezolanos…”, destruyes la increíble variedad de personas que hay en el país. Esa variedad es necesaria para la reconstrucción de la misma, así que hay que comenzar a respetar esas diferencias.

Coda

Los videojuegos han sufrido muchísimo en Venezuela, con una ley de prohibición innecesariamente fuerte y, en general, un abandonamiento a su suerte por parte de la sociedad. Esto es un reflejo de las actuales carencias de esta sociedad, que necesita reconocerse tal como es, y no como lo que se nos ha vendido desde hace muchos años. Creo también que la gente necesita darse cuenta de que es capaz de hacer y crear, de que lo que hace y dice tiene importancia, y que solamente ellos mismos pueden darse esa importancia, más allá de las burlas y el desprecio de otros. La confianza, y el trabajo en conjunto es clave para ello. Espero lo mejor para todos ustedes.

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

Charlas en el Caracas Game Jam 2015

A continuación les presentamos las charlas pregrabadas que se dieron en el Caracas Game Jam 2015. La primera es dada por Gabriel Rodríguez, programador en Crytek, en Frankfurt, Alemania. Gabriel también fue participante en el primer Caracas Game Jam, en 2009. La segunda es dada por un servidor :-) , sobre un artista que admiro.

Gabriel Rodríguez

Video en Youtube

Ciro Durán

Video en Youtube