monaco is mine

Al enterarme que GDC Vault, sitio oficial de la GDC con material audiovisual expuesto en sus distintos sabores, colocó material gratuito de la GDC 2011 no me quedé tranquilo. Decidí ‘pescar’ algo y estoy contento con lo que seleccioné. El video seleccionado fue “How to win the IGF in 15 weeks or less” por Andy Schatz; una presentación de cómo fue el desarrollo de Monaco (ganador del IGF 2010) desde un punto de vista holístico. No voy a darles una traducción del video (son aproximadamente 45 minutos de ponencia), sino más bien lo que consideré importante extraer y plasmar como desarrollador.

La presentación me gustó bastante ya que es casi una charla “de tú a tú” con la audiencia (hasta un par de groserías se escapan), y Andy explica tanto aspectos técnicos del juego como algunos detalles personales para no sólo darle sustancia, sino algo de humor y reflexión.

Motivación

Es importante que estés haciendo algo que te guste y de verdad te nazca trabajar en ello. Andy comenzó el proyecto estando deprimido por sentir que su avance como desarrollador independiente no era lo que realmente esperaba, buscó un problema que le pareció interesante y “se lanzó al agua”, a ver qué tal, como una forma de escapar de un juego con el que no se sentía a gusto trabajando. Al poco tiempo estaba de mejor humor en incluso tenía commits diarios en el repositorio del juego.

Parte del secreto de ésto es, la clave en la que varios métodos de productividad y aprendizaje hacen hincapié; establecerse pequeños objetivos o tareas a fin de alcanzar la meta final. Andy, durante las primeras semanas de desarrollo, trabajó en pequeños problemas u objetivos de forma diaria (logrando a veces 4 por día). No es secreto para nadie que el sentido de pertenencia aumenta y la motivación se mantiene a medida que obtenemos logros; especialmente cuando son satisfacciones personales.

Una de las razones por las cuales Dinosauria falló y Monaco es tan bueno, y me mantuvo enérgico, es que me aseguré de trabajar en algo genial cada día. Algo que me hiciera feliz, algo que yo dijera “ésto es genial, nadie lo ha hecho antes” y nunca trabajé en algo que me tomara más de un día

Dinero vs satisfacción personal

motivacionAlgo importante que menciona durante la presentación es que hacer trabajo para terceros es algo que te genera ingresos importantes, pero no necesariamente es algo que realmente te genere felicidad. Por otra parte, hacer algo que te gusta y disfrutas te llevará a la satisfacción personal, estar bien contigo mismo y eventualmente generará ingresos. Particularmente pienso que es una cuestión de hallar un balance entre ambos y todo dependerá de cada persona y las circunstancias. Aquí en Venezuela, por ejemplo, es bien difícil esperar el “eventualmente”; entonces lo que hacemos muchos es invertir parte de nuestro tiempo libre en los proyectos que realmente queremos trabajar. Sin embargo, estoy de acuerdo con él en que lo ideal es perseguir lo que realmente disfrutamos.

Trabajar por contrato te hace rico, pero no es divertido.

Mi filosofía al escoger y trabajar los proyectos es que si trabajar en un proyecto sólo por ganar dinero, vas a ganar dinero o vas a la quiebra. [Por otra parte[, si trabajas en un proyecto que te gusta y es interesante, vas a obtener reconocimiento o vas a ganar un montón de dinero.

Si sólo ganas el reconocimiento y no ganas un montón de dinero, tienes otra oportunidad de volverlo a intentar porque tienes la reputación para ello; especialmente con la prensa.

Diseño de juegos

En fases del desarrollo de Venture Dinosauria, el juego que les dije que no era tan divertido desarrollar, Andy probó desarrollar juegos de mesa como un break y es donde surge la idea de Monaco, entre otras menos exitosas. En sus propias palabras:

Yo pienso que los juegos de mesa son realmente una forma fantástica de cargar tus habilidades de diseño. Los juegos de mesa se centran en la mecánica

Ahora entiendo por qué Ciro, en su curso de desarrollo de juegos, pide a sus estudiantes desarrollar juegos de mesa antes de tocar cualquier herramienta de desarrollo de juegos de video. Quizás esto último sea algo obvio, pero no me he preocupado por investigar a profundidad sobre diseño.

Expectativas

Tal como lo dijo Kyle Gabler en el keynote del GGJ 2009, no es sano establecerse altas expectativas en los proyectos al comenzar a trabajar en ellos. Andy esperaba que Venture Dinosauria fuera EL juego y por diversos motivos no lo fue. Por otro lado, Monaco comenzó como un proyecto de juego de mesa, luego fue un experimento que llevó a XNA y ahora es el ganador del IGF 2010. La enseñanza es que no debemos enamorarnos de nuestros proyectos por ser nuestros, el desarrollo de juegos es una disciplina bastante experimental y, como tal, algunos experimentos fallan y otros son exitosos.

Uno de los problemas con Dinosauria, y los otros títulos en los que trabajé, es la ambición que tenía en los mismos era demasiado grande. Estaba tratando de hacer EL juego, el juego de mi vida.

Creía que por esa razón lo iba a lograr y la verdad es que es indudablemente un error. Está bien ser ambicioso, pero está mal establecer expectativas por ti mismo al inicio de un proyecto.

Es importante recalcar que tener altas expectativas difiere de esforzarse. No porque se tengan bajas expectativas significa que se va a trabajar con menos pasión y/o esfuerzo; es cuestión de hacer y ver si el experimento resulta o no. Por ejemplo, en un Game Jam no es bueno tener la expectativa de hacer un juego como Street Fighter; sin embargo, bien puedes dar lo mejor para tener un juego sencillo pero completo.

Programación

programadorEs importante conocer la plataforma y herramientas de trabajo, así como el problema a resolver para ‘darle la vuelta’ y encontrar una solución adecuada. Andy, de alguna forma, divisó varias vías de atacar el problema inicial (algoritmo de visibilidad en cuadrículas para juegos de turnos) y, si mi intuición no me falla, cuando él habla de que ciertos acercamientos son lentos o consumen bastante CPU se refiere a que son soluciones de orden exponencial; para lo que utilizó caching, cotas y algunos otros trucos a fin de reducir el impacto. Una vez más, vemos lo importante de tener buenas bases de algoritmia en el desarrollo de juegos.

Igualmente, hace énfasis en que se debe ser un poco cauteloso al momento de escoger las herramientas de desarrollo.

Lo que descubrí al prototipar de Monaco es que si haces prototipado en un motor que te fuerza a tener cierto enfoque o realizar un particular tipo de juego, vas a terminar haciendo ése juego; y va a ser difícil desarrollar un juego que no sea así.

La razón por la que Monaco fue genial luego de tres días es que comencé con XNA. XNA es un marco de trabajo suficiente que me dio todo los elementos básicos que necesitaba para desarrollar el algoritmo de visibilidad que quería. Si hubiese comenzado con algo más monolítico, probablemente hubiese terminado haciendo un juego que luce como muchos otros.

Para algunos desarrolladores avanzados ésto puede ser obvio, pero también existen casos que siguen un acercamiento distinto y resultan exitosos (Batman Arkham Asylum). En cualquier caso, me inclino por la filosofía práctica de Andy a menos que de verdad quiera experimentar con una herramienta específica en donde hacer tweaks de enfoque sea menos costoso que utilizar algo menos monolítico.

Pruebas

Otro punto importante que resalta Andy es que “deberíamos tener jugadores probando el juego desde el segundo día; desde el momento en que tenemos algo jugable“. En este punto, menciona, existen dos tipos importantes de testers a considerar: consejeros y gente que no sabe sobre desarrollo de juegos.

Los consejeros son otros desarrolladores, preferiblemente con mayor experiencia que tú, que se identifiquen con tu visión y te empujen a mejorarla y fortalecerla; aunque no necesariamente deben estar de acuerdo en todo. Del segundo tipo de testers lo importante son las impresiones (lo que les gusta y lo que no les gusta del juego).

A lo que sí deben prestar atención [de los testers] es a sus impresiones y experiencias del juego (lo que les gustó y lo que no). Siempre son acertadas.

Hay tres preguntas que siempre les hago, especialmente si son extraños:

  1. ¿Qué te gustó?
  2. ¿Qué no te gustó?
  3. ¿Qué te confundió?

Aun quedan algunos puntos por tratar, pero la idea es que ustedes mismos disfruten de la charla y extraigan lo que les parezca más interesante y trabajar en ello o seguir investigando. Personalmente me llamó la atención la forma en la que el juego fue agarrando forma y las decisiones que se tomaron tanto a nivel de programación como a nivel de diseño, porque refleja lo experimental del desarrollo de juegos -especialmente los indie– (una de las cosas que más me gusta por sobre el desarrollo de sistemas de información). Sería bastante positivo poder tener el post-mortem en Gamasutra en un futuro no muy lejano.

Crédito de la imagen principal: Monaco (Pocketwatch Games).