Universitat Oberta de Catalunya

Programación de videojuegos “indie” con XNA

El mercado de los videojuegos crece de forma imparable cada año y ni siquiera la crisis económica que azota a tantos países es capaz de detener esta tendencia. Sólo en los Estados Unidos las ventas crecieron un 22% en el año 2008, hasta alcanzar los 11.7 billones de dólares (Entertainment Software Association). En Europa esa tendencia es semejante, con un crecimiento medio del 18% (ADESE). Concretando más se puede decir que el estado español es el cuarto mercado europeo en cuanto a facturación por compra de videojuegos.

Es bien sabido que dicho mercado ya supera al de otros medios culturales que eran hasta hace pocos años hegemónicos, como el cine y la música. Dicho esto, queda claro que estamos ante un mercado creciente y con mucho espacio para el negocio. Pero no es fácil entrar en este mundo.

El proceso de creación de un juego, en cierta manera, tiene parecidos con el de una producción cinematográfica: necesitamos un diseño, cuyo homólogo en el cine sería el guión. Este diseño determinará en gran manera el éxito de la producción. Los gráficos que estamos acostumbrados a ver en los juegos requieren especialistas en diseño y animación 3D (pues sombras efectos y texturas requieren un trabajo de programación gráfica costoso) y los motores de Inteligencia Artificial o física que podemos encontrar en algunos de los videojuegos actuales ocupan la mayor parte del tiempo del desarrollo. Todo eso significa que se requiere disponer de mucho tiempo y mano de obra altamente cualificada. Esto es un capital económico y humano muy importante.

Prototype

Imagen del videojuego Prototype

Assassin's Creed

Imagen del videojuego Assassin’s Creed

Como si todo eso fuera poco, el mercado de distribución de videojuegos internacional es complejo, y la disparidad de dispositivos (XBOX 360, Wii, PlayStation, PSP, Windows) dificultan todavía más el éxito de una producción. Puede darse el caso por ejemplo, de que desarrollemos un juego para Wii, y esta consola decida que nuestra producción no es adecuada para su plataforma. Así pues, la inversión tiene un riesgo, sobre todo para las empresas sin experiencia previa demostrable en desarrollo de videojuegos.

En el caso del estado español es muy difícil encontrar inversores que estén dispuestos a asumir riesgos en este sector, mucho más difícil de lo que lo es en EEUU, el Reino Unido o Francia, por ejemplo. Así pues es muy complicado que las producciones de videojuegos salgan adelante, y aquí es donde entran en acción los “Indie Games”.

Los “Indie Games” son videojuegos producidos por estudios independientes o equipos de programadores amateur, sin el apoyo económico de las grandes distribuidoras o inversores.

Dado que estos juegos no disponen de millonarios presupuestos para su producción, y no se dispone de equipos de cientos de personas altamente cualificadas y especializadas, debe prescindirse durante su desarrollo de los increíbles gráficos, los efectos de sonido dignos de Hollywood, y los complejos argumentos que estamos acostumbrados a ver en el mercado de juegos profesionales. Con los recursos disponibles en el mundo “Indie” se busca sencillez, pero sin dejar de innovar, conseguir jugabilidad, entretener y enganchar al jugador, con el mínimo coste posible en la producción.

Así pues, para desarrollar este tipo de videojuegos necesitamos un framework de programación de videojuegos que sea gratuito, simplifique el trabajo y acelere el ciclo de vida del desarrollo, pero además, que sea compatible con el mayor número de plataformas posible y, puestos a pedir, que nos facilite la distribución en alguna de las videoconsolas más utilizadas del mundo: aquí es donde descubrimos XNA.

XNA es un Framework gratuito desarrollado por Microsoft basado en .Net creado específicamente para el desarrollo de videojuegos para Windows, XBOX 360 y Zune HD, además existen rumores que también será compatible con Windows Mobile 7. Este entorno de desarrollo nos permitirá programar desde el más simple de los juegos en 2D hasta potentes videojuegos en 3D.

Las ventajas principales de la plataforma son:

  • Entorno y SDK’s gratuitos.
  • Soportado en varias plataformas (XBOX 360, Windows, Zune y Windows Mobile 7).
  • Se programa con el archiconocido lenguaje de programación C#.
  • Simplifica las funciones gráficas como el render, o álgebra de matrices.
  • Permite programar directamente sobre la GPU mediante shaders con lenguaje HLSL (el mismo que utiliza DirectX).

Las desventajas más obvias son que no es totalmente multiplataforma (no está previsto que pueda funcionar en sistemas Linux o Mac, aunque existen algunas versiones de XNA bajo MONO, pero no son oficiales), y que el rendimiento no es tan elevado como podría serlo un juego desarrollado con C++. De todos modos, pasará bastante tiempo antes de que un desarrollador de videojuegos amateur sea capaz de alcanzar el límite de rendimiento en un juego hecho en XNA si este programa correctamente, y hace un uso eficiente de las posibilidades ofrecidas como multicore o programación sobre la GPU. En el momento que un programador alcance este límite, probablemente sea el momento de dar el salto al desarrollo profesional de videojuegos.

XNA facilita la distribución de nuestros videojuegos

Esta tecnología está generando una creciente masa de desarrolladores “Indie Games”. Cualquier persona, grupo de personas o estudios pequeños pueden lanzarse a vender sus juegos a un mercado internacional de forma muy sencilla: XBOX Live, donde millones de usuarios de XBOX 360 pueden comprar directamente desde la interfaz de sus consolas estos videojuegos programados bajo XNA. Sólo en diciembre se han publicado 130 juegos “Indie” para esta videoconsola.

Un caso de éxito de videojuego desarrollado con la plataforma XNA en España sería RotorScope, que incluso ha recibido el tercer premio de una competición internacional de “Indie Games” promovida por Microsoft, y que dispone de importantes premios económicos: Dream Build Play.

RotorScope

Imagenes de RotorScope, desarrollado por Nivel 21

Video de demostración:

Otro ejemplo de videojuego español de creación reciente sería Kaotik Puzzle, un innovador juego de puzles, al estilo Tetris, que permite competir con otros jugadores o bien contra un interesante motor de Inteligencia Artificial que se ha proporcionado al juego.

Imagen de Kaotik Puzzle, desarrollado por Nivel 21

Vídeo de demostración:

Puede encontrarse una lista con todos los videojuegos XNA en esta URL:
http://catalog.xna.com/en-US/gamescatalog.aspx

¿Cómo se venden los juegos en XBOX Live?

Lo primero será registrarse como usuario Premium o Trial del XNA Creators Club, que tiene un coste de unos 99$ anuales, pero que sale gratis a los estudiantes de la UOC gracias al DotNetClub de la UOC. Posteriormente el juego entrará en un proceso de revisión, serán otros usuarios como nosotros quienes validen o rechacen nuestro juego, probándolo e intentando cazar bugs. Si finalmente el juego es aprobado, tendremos que establecer un precio por adquisición y el juego ya aparecerá en “Indie Games” y en las consolas de millones de usuarios en todo el mundo. Microsoft gestionará las ventas por nosotros y nos irá ingresando periódicamente hasta el 70% de los beneficios.

¿Y por qué no otras plataformas de desarrollo de videojuegos?

En realidad todas las opciones son perfectamente válidas (y además son muchísimas). Pero si lo que queremos es desarrollar videojuegos para consolas tenemos dos vías, la “Indie” o la profesional.

Programar “Indie Games” para otras videoconsolas puede ser caro (hay que pagar) o difícil (no existe abundante documentación en las plataformas distintas a XNA), o incluso imposible ya que algunos fabricantes no ofrecen facilidad alguna para los desarrolladores “Indie”. Incluso si lo que queremos es desarrollar un videojuego de forma profesional, los fabricantes nos exigirán que tengamos el dinero y la capacidad que ellos consideren suficiente, además de poder reservarse el derecho de no aceptar la publicación del juego si la empresa a la que pertenece la videoconsola huésped no considera que sigue los intereses o imagen que desea proyectar hacia sus clientes.

En este sentido, al final hay que tener en cuenta una cosa: desarrollar videojuegos es muy parecido en todas las plataformas, es decir, que todo lo que aprendas trabajando con XNA te servirá si más adelante quieres ampliar tus conocimientos pasándote por ejemplo a DIRECTX. De una plataforma a otra variará la forma de declarar las variables, o de renderizar un gráfico, pero la lógica de un videojuego, la física o la IA siempre será la misma o muy parecida en cualquiera de las plataformas disponibles.

Grupos de soporte al desarrollo de videojuegos Indie Games

XNA Community

XNA Community es un grupo de usuarios de XNA, con el que el UOC DotNetClub está fuertemente vinculado y en el que sus miembros colaboran activamente. En su página web encontraréis ejemplos de código, tutoriales, vídeos, y código fuente de videojuegos completos, siempre desarrollados en XNA, además de un foro en el que encontraréis respuesta a todas vuestras dudas. Podéis acceder a todos estos recursos gratuitos en Codeplex.

XNA Creators

XNA Creators es la página donde se congregan los desarrolladores de XNA de todo el mundo, y está fundada y administrada por el equipo de desarrollo del XNA Framework. La mayor parte del contenido está en inglés, pero vale igualmente la pena. Encontraréis aquí gran cantidad de ejemplos, y algunos juegos completos, además de un foro de discusión.

UOC DotNetClub

El UOC DotNetClub es la comunidad independiente de usuarios de la UOC entusiastas de la tecnología que te ayudará en tu iniciación a .Net y a XNA. Dispone además de un grupo de trabajo de XNA, en el que distintos miembros de la comunidad colaboramos en el desarrollo de proyectos conjuntos, sin duda una buena forma de aprender.