Arriba la página de la electiva “Introducción a la programación y producción de videojuegos”

Tengo el placer de anunciarles que ya está disponible la página de la electiva que estoy dictando en la UCAB: Introducción a la programación y producción de videojuegos, y se ubica en http://www.ciroduran.com/disenajuegos. A través de esta página me comunicaré con los estudiantes del curso, mantendré un listado de recursos que pueden usar para crear sus juegos, y publicaré los juegos que ellos harán para la posteridad. Ya están disponibles los videojuegos hechos en las dos primeras ediciones del curso, y prontamente pondré fotos e instrucciones de los juegos de mesa que ellos mismos crearon.

¡Eventos!, ¡muchos eventos!: Ludum Dare 18, Competición de TIG Source, y 2010 LISP Game Expo

Parece que los eventos en julio y agsto olieron la salida de los estudiantes a vacaciones, pues hay muchísimos eventos para participar haciendo juegos, así que los listaré sin ningún orden de preferencia:

  • El Ludum Dare tiene dos eventos: el miniLD #20 el fin de semana entre el 16 y el 18 de julio de 2010, con tema y reglas aún por anunciar, y el Ludum Dare 18, que se dará en el fin de semana del 20 al 22 de agosto, y para el cual ya se pueden ir sugiriendo temas, y vienen algunos cambios con respecto a eventos anteriores. La idea del Ludum Dare es hacer un juego uno solo desde cero con la menor ayuda posible de motores.
  • TIGSource, la comunidad de desarrolladores locos de videojuegos, ha organizado la competición “Un juego por su cubierta“, en el que debes tomar la carátula ficticia de un juego que consigas por internet, y hacer un juego a partir de ella. Entre otros enlaces, los organizadores sugieren usar las ediciones 2008, 2009 y 2010 de la exhibición Famicase, un concurso japonés en el que la gente hace carátulas imaginarias para juegos 8-bit. El concurso termina el 31 de julio. Para participar tan solo tienes que crear un thread en el foro correspondiente e ir publicando detalles de tu juego.
  • La Exposición Internacional de Juegos en LISP 2010 invita a todos aquellos que conocen o que están interesados en LISP a hacer un videojuego. Los lenguajes permitidos son los dialectos de LISP, tales como Common Lisp, Scheme, Arc o Clojure. Es una gran oportunidad para pensar los juegos exclusivamente desde el punto de vista de la programación funcional. Igualmente, para participar debes entrar al wiki de la Expo y publicar tu nombre y tu juego. Tienes hasta el 30 de julio.
  • No olvidemos tampoco el concurso CODEAR de la ADVA para hacer un Single Screen Metroidvania, que finaliza el 30 del mes de julio.
  • UPDATE: Game Jolt anunció también un concurso, el Indie Game Demake contest, en el que hay que tomar un juego indie y hacer una versión anterior del juego, como si de una consola antigua se tratase. El concurso termina el 8 de julio.

A continuación les dejo los banners de los concursos, a ver si se animan, que hay mucho chance.

Ludum Dare banner

TIGSource Compo: A Game by its Cover banner

Banner de The 2010 International Lisp Games Expo

GameJolt Indie Game Demake contest banner

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.

Concurso CODEAR en el ADVA: Single Screen Metroidvania

La gente de la Asociación de Desarrolladores de Videojuegos de Argentina lanzó un concurso bien interesante para todos los interesados, argentinos o no. El tema del concurso CODEAR es Single Screen Metroidvania, y la fecha límite es el 30 de julio de 2010, para la cual ya debe estar publicado un thread en el foro correspondiente, y en su primer post debe estar un enlace para jugar y un screenshot sin el marco de la ventana.

Si no sabes lo que es un Metroidvania, no te preocupes, yo tampoco lo sabía hasta que leí el término xD:  http://gaming.wikia.com/wiki/Metroidvania. Es un género de juego en el que tienes un mundo abierto que debes ir explorando poco a poco, y en el que sueles tener que volver sobre tus pasos para entrar a zonas que antes eran inaccesibles. Ahora, estas son las reglas del concurso:

  • De principio a fin, todo el juego tiene que transcurir en la misma pantalla. No se puede hacer scrolling ni zooming.
  • No se puede cambiar de mapa, pero se puede modificar todo lo que quieran (meter/sacar objetos, derribar paredes, etc.).
  • Cuadros de interfaz de usuario flotando sobre el mundo están permitidos.
  • Tiene que ser un juego hecho para este concurso. Se pueden usar engines o librerías hechas anteriormente. Después del concurso, pueden hacer lo que quieran con el juego… es 100% suyo.

Entre las aclaraciones que hacen los organizadores, están las siguientes:

  • Ejemplos de juegos “metroidvania”: Zelda, BioShock, System Shock, Metroid, Castlevania.
  • Pueden oscurecer zonas y revelarlas progresivamente, siempre y cuando estén en pantalla desde el principio.
  • Como siempre, pueden estirar las reglas un poco, pero pregunten antes.
  • Soportar Inglés es altamente recomendado, para poder mostrar el juego afuera.
  • Las preguntas se hacen en este thread.
  • La votación es pública, y el criterio es: “Votar los mejores”.
  • Pueden participar no-argentinos.

El tema me parece super emocionante, así que espero verlos por allí :-)

Gasp Games busca talento para desarrollar videojuegos

Gasp Games está buscando gente en Venezuela para desarrollar videojuegos en el área de programación, producción y creación de arte. Haz click en la imagen para ver el flyer completo. En la página de ellos encontrarás más información acerca de cómo aplicar. Gasp Games lleva ya un par de años desarrollando juegos, ganando el concurso DreamBuildPlay de Microsoft en 2009 con Battle Tennis y logrando una buena posición en la edición de 2010 con Guru Guru, cuyo trailer veremos a continuación.


Enlace al video