Herramientas para Crear Juegos

Publicado en

 

Los motores de juego (game engine) son herramientas para facilitar y acelerar la creación de videojuegos. Dichos motores típicamente proveen un framework para el desarrollo de juegos que incluye componentes que se encargan de resolver aspectos tales como rendering de gráficas, audio, animación, inteligencia artificial, física, localización, y habilitación de red, entre los más comunes.
Hoy en día existe una gran variedad de motores para crear juegos, con distintas capacidades, enfoques y modelos de licenciamiento. En este artículo brindo un panorama de los motores y tecnologías que considero más relevantes.

Unity

Unity es un ambiente de desarrollo integrado (IDE) para la creación de juegos 3D, video y otros contenidos interactivos tales como visualizaciones arquitectónicas en tiempo real. Los juegos producidos por Unity se pueden ejecutar en gran variedad de consolas y sistemas operativos tales como Windows, Mac, Xbox 360, PlayStation 3, Wii, iPhone/iPad, Android, Chrome, Flash y próximamente Linux.
Unity consta de dos elementos principales: un editor para el desarrollo/diseño de contenidos y un motor de juego. Ambos están estrechamente integrados, lo cual permite que desde el mismo editor se puedan realizar acciones que invocan al motor de juego. Un ejemplo de esto es que desde el mismo editor puedes visualizar en vivo tus creaciones. El editor de Unity también cuenta con un profiler que provee estadísticas sobre los distintos aspectos relacionados con la construcción del juego.
En general, podemos decir que Unity es un ambiente de desarrollo de juegos que destaca por soportar múltiples plataformas para ejecutar los juegos creados, así como por la facilidad de uso y productividad de su editor. Esto lo ha convertido en una herramienta muy popular en los últimos años.
Unity está disponible en distintas versiones y precios. Aunque existe una versión gratuita, esta no contiene toda la funcionalidad de la edición Pro, además de que los juegos publicados tienen un sello de agua o despliegan un splashscreen de Unity. Unity Pro no contiene estas limitaciones y su precio es de $1,500 USD. Sin embargo ahí no termina la cosa porque dependiendo de la plataforma para la que deseas desarrollar/desplegar puedes requerir complementos adicionales. Por ejemplo, para crear juegos para iPhone/iPad necesitas el complemento para iOS, que a su vez está disponible en dos ediciones: básica ($400 USD) y Pro ($1,500 USD). Entonces, una licencia de Unity Pro + el add-on de iOS Pro saldría en $3,000 USD.

Unreal Engine / UDK

El Unreal Engine (actualmente en su 3ra generación) es un motor para juegos creado por Epic Games, y que ha sido utilizado para construir varios de los videojuegos de consola más populares en el mercado , tales como la serie Gears of War. Durante muchos años, el Unreal Engine solo estuvo disponible para estudios de videojuegos profesionales, sin embargo en noviembre del 2009 Epic liberó el Unreal Development Kit (UDK), que es una versión del Unreal Engine disponible al público en general con el que se puede crear juegos para distintas plataformas incluyendo consolas, PC, Mac, Android, iOS y Playstation Vita.
Este motor destaca por sus capacidades avanzadas para el rendering de gráficas, incluyendo técnicas avanzadas como iluminación por pixel, sombras dinámicas y high dynamic range rendering (HDRR). También cuenta con su propio ambiente de edición (Unreal Editor). Los scripts se crean en un lenguaje de programación propietario (UnrealScript) y son conectados entre sí usando el editor visual Unreal Kismet.
Uno de los inconvenientes de UDK es que solo está disponible para Windows.
Para fines educativos o sin lucro, el uso del UDK es gratuito. En el caso de empresas que planean crear juegos comerciales con UDK, requieren firmar un contrato de licencia comercial en el que hacen un pago inicial de 99 dólares y se comprometen a que en caso de que obtengan ganancias superiores a los 50 mil dólares darán una comisión del 25% de sus ingresos a Epic.

Cocos 2D

Cocos2d es un framework open source para crear juegos 2D. La versión original de cocos2d fue programada en Python, pero existen diversos ports a otros lenguajes y plataformas. El más conocido de estos es cocos2d-iphone, escrito en Objective-C para crear juegos para iOS y Mac OSX. También existen ports de Cocos2d para Android, HTML5 y XNA entre otros.
Entre las ventajas de cocos2d destacan las siguientes:

  • Fácil de usar. Su API es sencillo e incluye una gran variedad de ejemplos. Provee abstracciones de alto nivel para las tareas mas comunes.
  • Rápido. Cocos2d utiliza las mejores prácticas de OpenGL ES y estructuras de datos optimizadas.
  • Es software libre. Cocos2d está bajo licencia MIT, una licencia muy flexible que permite utilizarlo tanto para hacer juegos de código abierto como cerrado. Además puedes extenderlo e integrarlo con bibliotecas de terceros.
  • Comunidad activa. La comunidad de cocos2d es grande y activa, en los foros típicamente puedes obtener respuestas rápidamente.

Cocos2d para iOS utiliza las herramientas y lenguajes de esta plataforma (Objective-C, XCode), lo cual puede ser una ventaja si ya estás familiarizado con ellos o una desventaja si no te son familiares. Otra desventaja de Cocos2d es que a diferencia de las herramientas comerciales como Unity o Unreal, no posee un editor gráfico para animaciones o escenas.

Stage 3D

Stage3D como tal no es un motor de juegos, sino que es un modelo para rendering de gráficos 2D y 3D que se puede usar en aplicaciones Flash y AIR. Lo incluyo aquí porque si eres un desarrollador Flash y te interesa crear juegos, considero que es muy buena opción que utilices las mismas herramientas que ya usas para construir aplicaciones Flash/AIR, y aproveches las capacidades de Stage 3D para crear juegos con rendering de gráficos acelerados por hardware.
Las APIs de Stage3D permiten realizar aceleración de gráficos por GPU de forma sencilla y en múltiples dispositivos (computadoras personales, dispositivos móviles y TVs). A diferencia de las plataformas de gráficos 3D de bajo nivel como Open GL o Direct X que típicamente requieren conocimiento del hardware específico a utilizarse, Stage 3D está en un nivel de abstracción mayor, independiente del hardware o dispositivo, por lo que su uso es más sencillo y amigable. El inconveniente es que Stage 3D no aprovecha las capacidades más avanzadas de los GPUs más modernos. Por ejemplo, Stage 3D se basa en la versión 2.0 del Shader Model (un estándar para sombreado de vértices y fragmentos), pero ya hay tarjetas que soportan la versión 4.0. Así que si tu requerimiento es aprovechar las capacidades más avanzadas de los GPUs más poderosos, posiblemente Stage 3D no sea para tí.
Stage 3D como tal no tiene un costo de uso. Sin embargo, se requieren usar las herramientas de Adobe para construcción de aplicaciones Flash o Air. Adicionalmente, Stage 3D forma parte de las denominadas “premium features” de Flash Player 11.2 y AIR 3.2, y Adobe recientemente anunció que las apps publicadas después del 1 de agosto de 2012 que usen estos premium features y obtengan ingresos mayores a los 50 mil dólares, requieren pagar una comisión del 9% a Adobe por el uso de estas capacidades avanzadas. El uso de estas capacidades en Adobe AIR, incluso para las aplicaciones móviles para iOS y Android, no tendrá ningún costo.

Conclusiones

En este artículo he mostrado lo que considero las herramientas más recomendables para crear juegos. En algunos casos, los precios o modelos de licenciamiento pueden parecer altos, pero la realidad es que el uso de un buen motor sí contribuye enormemente a disminuir el esfuerzo requerido para crear un juego con gran calidad. Es una relación ganar/ganar.

Referencias
[1] Unity. http://unity3d.com
[2] Cocos2D for iPhone. http://www.cocos2d-iphone.org
[3] UDK. http://udk.com
[4] M. Scabia. “How Stage 3D Works”. http://swgu.ru/sg36r6

Bio

Daniel Ramos (@dannygeek) es consultor de tecnología con más de 10 años de experiencia en IT, desarrollando en multiples plataformas como Java, Flash y .Net. Ha participado como conferencista a nivel internacional, y actualmente es Game Engineer en RAKU, empresa especializada en el desarrollo de aplicaciones basadas en iOS.