pctroll { jorge palacios }

desarrollador de juegos, programador, investigador de IA

Supervivencia en un Game Jam: técnica

mario fireballTeniendo claro cómo es la preparación física para un game jam, es hora de conocer cómo puede ser, en mi opinión, la preparación técnica para el mismo. Son 48 horas para todo el proceso y es crucial ir bien preparados porque de nosotros depende que el juego funcione.

De primera mano, y resumido en una sola frase, la mejor preparación que puedo ofrecer es hacer la mayor cantidad de juegos o demos posibles antes del evento. Como yo lo veo, se puede desglosar en tres puntos fundamentales.

  • Conocer el lenguaje.
  • Conocer la herramienta.
  • Conocer la teoría.

Conocer el lenguaje

Es bueno tener el mayor dominio posible del mismo. No basta con tener un libro de referencia en el jam o contar con el acceso a Internet para ir a la referencia y partir de ahí para hacer algo. Experimenta, programa, haz los ejercicios de algún libro que consigas.

Para quien gusta de las lista, éste es el mínimo necesario (con lenguajes imperativos* de propósito múltiple -C/C++, Java, ActionScript, Python, etc.-) según Falco Girgis, y con el que estoy de acuerdo:

  • Todas las estructuras de control.
  • Arreglos.
  • Funciones / procedimientos / subrutinas.
  • Referencias.
  • Punteros / apuntadores.
  • Memoria dinámica.
  • Estructuras de datos.
  • Orientación a objetos.

Conocer la herramienta

Al igual que con el lenguaje de programación, es fundamental dominar lo más que se pueda el API, Framework o motor de desarrollo a utilizar. Desde cómo cargar y mostrar imágenes por pantalla, hasta saber si tienen estructuras de datos propias. Tiene sentido, porque usualmente éstas herramientas tienen como finalidad ayudarnos, y es mejor leer y aprender cómo se usa a que tener que reinventar la rueda en tan poco tiempo.

Cabe destacar que es importante tomar en cuenta el pipeline o el flujo de trabajo si la herramienta es avanzada (un motor, por ejemplo). De este modo, el trabajo en equipo traerá mejores resultados a la hora de engranar todos los elementos.

Como anécdota, en el 2009 comenzamos planteando la idea de hacer el juego con SDL/C++; pero por desconocimiento de ciertos puntos importantes, no hubo avance entre el Viernes y el Sábado. El juego se logró terminar porque ambos programadores habíamos realizado el primer tutorial de XNA (3.0 para la fecha) y supimos que podíamos utilizarlo de base para la mecánica que teníamos en mente.

Conocer la teoría

De poco sirve (para hacer juegos) todo lo anterior si no hay bases teóricas que ayuden alcanzar el objetivo final. Bien se puede crear un ejecutable que muestre un par de imágenes en la pantalla y se reproduzca un sonido al presionar un botón, pero eso está lejos de ser un juego. Las bases teóricas ayudan a transformar las ideas en algoritmos que luego será código funcional y a partir de ahí puede llamarse juego. Afortunadamente, dominar un lenguaje de programación nos deja un conocimiento de lógica y algoritmia rudimentario, pero importante.

Algunos puntos que vale tener frescos para el evento son los siguientes:

  • Álgebra.
  • Trigonometría (más que una recomendación, diría que es obligatorio).
  • Máquinas de estado.
  • Algoritmos sobre grafos.
  • Física básica.
  • Cálculo básico.

Esos son, en mi experiencia, los tres pilares técnicos fundamentales a la hora de ir a un game jam. La mejor forma de levantar estos pilares es haciendo juegos, tal como lo dije en un principio. Así mismo, programar otras cosas nos dará experiencia y perspectiva. De este modo, nos daremos cuenta más rápidamente de cuáles son nuestras fortalezas y en qué áreas debemos hacer énfasis para mejorar.

*: La parte galla formal de la entrada fue patrocinada por: Maestría en Ciencias de la Computación – Universidad Simón Bolívar :D.

Crédito imagen: Nintendo, New Super Mario Bros.

2 Comentarios

  1. Esta genial, pero (y esta es una duda honesta), ¿no debería haber una clase de preparación técnica, también, en el área de arte y desarrollo de juego?

    • pctroll

      4 enero, 2014 at 6:28 pm

      Sí, claro. Preferí no tocar el asunto del arte por cuestiones de hablar de mi área y con lo que realmente he tenido experiencia en un Game Jam.

      En mi humilde opinión, el flujo de trabajo para el artista gráfico es similar a aquel que se consigue al momento de hacer desarrollo web. Unos bocetos principales, medidas, exportar, etc. Eso para el área 2D, agregando la elaboración de atlas de sprites (conocidos también como sprite sheets). Para el apartado 3D es importante considerar la optimización y reducción de polígonos, trabajar en base a triángulos (creo que esto se resuelve con algunos clicks en Maya y 3DS Max), texturas n*n donde n es potencia de 2 (128, 256, 512, 1024, etc…), estar claro en lo que es rigging, etc.

      Creo que en general aplica lo mismo que para la programación: conocer a profundidad las técnicas y procesos para la elaboración de piezas y las herramientas con las que serán elaboradas para así elaborar prototipos de la forma más rápida posible para que los programadores tengan algo con qué trabajar mientras el arte final es desarrollado. También está la capacidad de síntesis y conocer que con 48 horas quizás no se puedan alcanzar altos niveles de detalle, por lo que la experimentación no es algo que veas mucho en un game jam en el sentido de que no vas a ir a estudiar, vas a resolver problemas. Experimentas en base a las herramientas que posees, no a adquirir nuevas (a menos que contemos trabajar bajo presión y compromiso de equipo de entregar algo jugable al final del evento)

Deja un comentario