Así que quieres hacer un juego (I): ¿Por dónde comenzar?

Este artículo es la parte 1 de 1 de la serie Así que quieres hacer un juego

He iniciado esta serie de posts para guiarte en el inicio del aprendizaje del desarrollo de videojuegos. En este primer post hablaré sobre algunos aspectos generales del proceso de aprendizaje, y en siguientes posts iremos cubriendo aspectos más concretos.

¿Interesado?

Primero que nada, si estás leyendo este post porque llegaste a él a través de algún buscador, felicidades. El desarrollo de videojuegos hasta ahora sigue siendo un campo que se aprende principalmente mediante el auto-aprendizaje, por lo que considero que tienes la curiosidad suficiente para averiguar por ti mismo de qué va esto y ahora tienes por delante un largo camino que recorrer. Si llegaste por recomendación de alguien, o por mi  curso de desarrollo de videojuegos, espero igualmente que tengas la suficiente curiosidad como para seguir adelante.

¿Por qué insisto en la curiosidad? Me he dado cuenta a lo largo de este tiempo que esta es la cualidad necesaria para aprender a cómo desarrollar juegos, y en general, para aprender cualquier cosa. La curiosidad no te la puede dar nadie, es algo que tiene que originarse en ti y ser el motor de tus acciones. A medida que crecemos, a diferencia de lo que mucha gente cree, la curiosidad no se pierde. Al contrario, a medida que crecemos esa curiosidad se concentra en un punto y se profundiza.

Como ingeniero de computación graduado te digo: no te engañes con que la carrera universitaria te va a dar las herramientas para hacer juegos. En el pensum vas a ver muchas cosas que no tienen la más remota relación con este campo, pero que igualmente te van a servir en otros aspectos. Quizás la mejor ventaja que te da una carrera relacionada con computación es mucho tiempo frente a la computadora, por lo tanto tiempo para aprender a programar, y muchas amistades.

Aún así, programar no es lo único necesario para hacer juegos; de hecho, hay muchísimas cosas que otras personas hacen durante el desarrollo de juegos que no es programación, y de ello hablaré más adelante. Creo que otras áreas del conocimiento tienen muchísimo que aportar al campo de los juegos. La inspiración para el desarrollo puede provenir desde cualquier lado, ya que todas las áreas del conocimiento pueden aportar para la elaboración de un juego. El desarrollo de videojuegos es todavía un campo con muchas incógnitas, así que hay mucho por descubrir.

Aja, entonces ¿cómo comienzo?

Cuando hablo de comenzar a desarrollar un videojuego, por lo general me limito a hablar de desarrollar para la PC o la Mac, dado el caso. Probablemente tu interés por desarrollar videojuegos proviene de jugar juegos de consola, pero el desarrollo para juegos de consola por lo general requiere un permiso de los fabricantes para desarrollar, lo que se conoce como una licencia, que puede costar algunos miles de dólares. Quizás hasta ahora la consola más económica para desarrollar sea la Xbox 360, pero requiere un pago de 100 USD anuales para poder probar los juegos en una consola. Mientras tanto, la PC servirá muy bien.

Un videojuego como tal no es más que un programa de computadora que implementa reglas, visuales y sonidos para uno o varios jugadores. Por otro lado, un programa de computadora contiene instrucciones (generalmente llamadas en conjunto código) que la computadora puede entender. A través de este código se pueden procesar datos (copiarlos o hacer operaciones aritméticas), mostrar cosas en pantalla, reproducir sonidos o música, y leer las acciones del usuario, ya sea a través de un teclado, del mouse, el Wiimote, de un joystick o de un mando.

Dicho esto, un videojuego tiene dos grandes ingredientes: uno es el código, y el otro son los recursos. El código, como ya lo dijimos, controla la computadora y lee las acciones del jugador, pero también es el encargado de implementar y hacer valer las reglas del juego. Cuando escuches a algún empleado en la industria de los videojuegos hablar de diseño de videojuegos, muy probablemente esté refiriéndose a esta importante parte, y la que uno generalmente comienza a darse cuenta de esta importancia solamente cuando has completado tu primer juego. Los que construyen este código por lo general se les llaman programadores, aunque esto es una simplificación.

Por otro lado, vamos a decir que los recursos son todos esos elementos que no son hechos por los programadores. Específicamente: imágenes del juego, sonidos, datos de los niveles, texto de los diálogos de los personajes, todo esto suele ser hecho por ilustradores, artistas gráficos, ingenieros de sonido, y también los diseñadores de los que hablamos anteriormente meten mano también. Quizás esta confusión entre diseño gráfico y diseño de juegos es lo que hace que el significado de la palabra diseño se haya diluido tanto. Para fines de este tutorial, asumamos que cuando hablamos de diseño hablamos del diseño de un sistema de reglas.

¿A dónde voy?

Ante esta perspectiva ya deberías tener un esquema más claro de lo que quieres hacer, o al menos serás capaz de hacer las preguntas correctas: ¿quiero ser programador?, ¿quiero ser artista gráfico o de sonido?, ¿quiero ser diseñador?. Al principio si cuentas solamente contigo para aprender, tendrás que aprender un poco de todo, y si no tienes talento para programar, pues buscar a alguien que sepa hacerlo y además quiera aprender a hacer videojuegos puede tornarse complicado. Lo importante es que existe este conjunto de habilidades que bien pueden repartirse dentro de un equipo.

Como lo dije al inicio de este artículo, mucho del campo de los videojuegos es algo que tiene que ser aprendido por medios propios: implementando y terminando juegos, buscando e investigando. Sobretodo en la parte de programación, es importante tener un espíritu autodidacta. En la imagen anterior doy algunos títulos de libros disponibles gratuitamente en internet para aprender Python, que es uno de los lenguajes que yo uso para enseñar a hacer juegos. Aparte de ello, doy 3 sitios muy importantes para aprender: Gamedev.net, uno de los sitios más populares para consultar sobre cómo hacer juegos, TIGSource.com, una comunidad muy variada de desarrolladores entusiastas de videojuegos, conseguirás muchas buenas ideas por allí, y Pygame.org, que te debería interesar si piensas usar Python.

¿Ser autodidacta? ¿Y si quiero aprender a programar con un curso?

En general, cualquier lenguaje de programación va a servir para hacer juegos. Cursos de programación existen, y algunos de ellos tienen gran prestigio, pero yo tengo una tradición autodidacta, y creo que lo mejor que puedes hacer es ponerte manos a la obra y aprender a manejar algún IDE, ya que los juegos suelen complicarse bastante a nivel de programación y uno te ayudará a mantener la pista de todos los archivos de tu proyecto.

  • Uno muy popular y gratuito es Dev-C++ junto con el compilador MinGW, y puedes instalar la librería Allegro o la librería SDL para comenzar a hacer tus juegos en C o en C++.
  • Otro popular, pero pago, es Visual Studio de Microsoft. Sin embargo, hay ediciones gratuitas para C++ y para C#/XNA. Busca por Visual Studio Express. Desarrollar para PC con C#/XNA es gratuito. No he programado nada en C# pero sé que tiene una estructura muy similar a Java, que es el lenguaje que probablemente vayas a ver en la universidad. C# es un buen lenguaje para crear juegos, y XNA te facilitará las rutinas para dibujar en pantalla y hacer sonidos y demás, aunque quizás vayas a encontrar con que las herramientas son un poco complicadas.
  • Podrías comenzar por Python y la librería PyGame, y aprender Python, que es un excelente lenguaje de programación.
  • ActionScript 3 es también una alternativa que se puede hacer gratuitamente, ya sea utilizando FlashDevelop, para el que tengo una guía por acá, o utilizando Flash Builder, para el que hay opciones gratuitas para estudiantes y desempleados. Esto es, se pueden crear juegos para Flash Player sin tener que usar Adobe Flash, la conocida herramienta de Adobe para crear juegos y animaciones para jugar en la red.

Lo importante de este mensaje es que sepas que ningún curso te va a dar todo lo necesario para que programes juegos. Quizás facilite las herramientas iniciales, pero la programación es algo que no se enseña: se aprender dándose golpes uno y por ensayo y error. Una vez más, Gamedev.net es una tremenda puerta de entrada desde hace muchísimo tiempo, y tiene una sección especial para principiantes para ir aprendiendo los tópicos poco a poco.

Para resumirla: comienza sencillo. Probablemente tengas en mente hacer un juego como los que has jugado, pero hacer un juego es una tarea sumamente dificil (pero sumamente satisfactoria o si no no habría nadie haciéndolo). Para hacer juegos como los que has jugado vas a necesitar comenzar por proyectos sencillos, un tetris, un pacman, etc. Y luego que hagas esos juegos vas a tener las herramientas necesarias para ir haciendo otros juegos más complicados.

¡Pero yo no quiero programar!

Me parece muy bien, los desarrolladores necesitamos gente que tenga cierta sensibilidad artística, que facilite llevar esos pensamientos que tenemos en la cabeza a algo tangible en un papel, ya sean reglas, ilustraciones u otras cosas. Sobre este tema me quedo corto, porque el origen del tema está entremezclado con el aprendizaje del desarrollo. Es decir, que te vendría bien también aprender un poco a nivel de código cómo funcionan los juegos. Esto será un tema que iré desarrollando en los artículos de esta misma serie. Por ahora te recomiendo también leer los artículos para principiantes de Gamedev.net.