
Una plataforma de desarrollo para gobernarlos a todos
Haciendo honor a la frase escrita en el anillo único de poder de la famosa novela El señor de los anillos de J. R. R. Tolkien, Unity 3D ha conseguido hacer honor al lema de sus creadores: “democratizar el desarrollo de juegos”.
Unity 3D es motor para desarrollar videojuegos, de los más completos y usados en la actualidad. Permite la creación de juegos para múltiples plataformas a partir de un único desarrollo, incluyendo juegos para consola (PlayStation, Xbox y Wii), televisión (Android TV), escritorio (Linux, PC y Mac), html 5 (WebGL), navegador (usando el cliente el plugin de UNity), móviles y tabletas (iOS, Android, Windows Phone y BlackBerry).
Para el desarrollo de aplicaciones dispone de un motor 2D como 3D, y el scripting es orientado a objetos basado en MonoDevelop, lo que permite el desarrollo en C#, Boo (que tiene una sintaxis inspirada en Python) y UnityScript (muy parecido a Javascript, pero la sintaxis no es exactamente la misma).
Todo esto hace que Unity 3D sea una de las herramientas más usadas para el desarrollo de videojuegos y aplicaciones que necesiten usar un motor gráfico.
El fracaso convertido en éxito
Una de las cosas que siempre me ha fascinado de estas compañías tecnológicas, es como son capaces de convertir un fracaso en un éxito absoluto. En este caso, no podía ser diferente. Este motor nace en 2004 en Copenhague, Dinamarca, por David Helgason, Nicholas Francis, y Joachim Ante. Los 3 desarrollan un motor gráfico 3D para dar soporte a un videjojuego que lanzan en 2005 para Mac, GooBall, que lamentablemente no obtuvo éxito esperado.
El juego no tuvo el éxito, pero sí el motor y las herramientas que crearon para ello. Vieron que podía tener mucha utilidad para aquellas empresas que quisieran crear un videojuego. De esta forma se planta la semilla para la cual nace Unity, obtener una herramienta que se convirtiera en el entorno donde programadores, artistas y diseñadores que llegasen a diferentes plataformas sin obligar a programar el juego específicamente para cada una de ellas.
Así fue como, con el apoyo financiero tan prestigioso como Sequoia Capital, entre otras, Unity ha conseguido su objetivo principal, “democratizar el desarrollo de juegos”, haciendo que el desarrollo de aplicaciones en 2D y 3D lo más accesible posible a tantas personas en todo el mundo como sea posible, ya sean grandes o pequeñas compañías.
Pero… ¿Por qué ha obtenido tanto éxito? Un pequeño análisis del porque:
Entorno de Unity3D
El editor de Unity 3D es uno de los más sencillos y potentes del mercado. Se divide en 5 vistas principales:
- Explorador: Lista todos los elementos o assets de tus proyectos. Permite ordenar de forma sencilla tu aplicación. En esta vista se encuentran tus imágenes, escenas, scripts, audios, prefabs, texturas, atlas y todos los elementos que usarás o podrás usar en tu juego o aplicación.
- Inspector: Muestra y define las propiedades de los elementos de tu proyecto. En el se pueden modificar valores de forma rápida, posicionamiento en la escena, cambiar texturas arrastrando ficheros desde el Explorador, añadir scripts, prefabs, etc.
- Jerarquía: Lista jerárquica de los objetos de la escena.
- Escena: Diseño y posición gráfica de los elementos de la escena.
- Juego: Visualizar el juego o aplicación a distintas resoluciones, como lo vería el usuario final.

Motor gráfico 3D y 2D
Como su nombre indica, Unity 3D inicialmente estaba basado exclusivamente para un motor grafico 3D. Es cierto que se podían desarrollar juegos en 2D, pero simulándolo. Es decir, jugando con ciertos parámetros del motor como cámara ortográfica, texturas planas, etc. A partir de su versión 4, se pudo disfrutar de herramientas exclusivas para este tipo de desarrollos, incluyendo nuevos objetos y efectos para facilitar el desarrollo y el rendimiento de tu juego, como texturas 2D, efectos de física 2D o tipos de cámara específicos.
Respecto a su apartado 3D poco que a añadir. Puede usarse junto a las herramientas más utilizadas por los diseñadores y animadores 3D: 3ds Max, Maya, Blender, Cinema 4D, Adobe Photoshop o Nuke entre otros. Los cambios realizados a los objetos creados con estos productos se actualizan automáticamente en todas las instancias de ese objeto durante todo el proyecto sin necesidad de volver a importar manualmente.
El motor gráfico utiliza Direct3D, OpenGL o OpenGL ES en función de la plataforma resultante y dispone del motor de física PhysX, que facilita muchísimo nuestro trabajo.
Por ultimo, Unity incluye desde su versión 4.3, Mecanim, una herramienta de animación. Ha supuesto un gran avance, ya que de forma nativa se soporta la creación y edición de animaciones, usando máquinas de estados, árboles de mezcla, etc.
Scripting
Como se ha comentado, Unity, se basa en Mono, la implementación de código abierto de .NET Framework. Esto permite poder desarrollar en un mismo proyecto en alguno de los lenguajes del framework:
- C#: Una evolución de C++ muy parecida a Java.
- UnityScript: Un lenguaje personalizado inspirado en la sintaxis ECMAScript, parecido a Javascript pero con una sintaxis diferente.
- Boo: Basado en Python
El editor incluye MonoDevelop para la edición y depuración de código. También se puede usar con Microsoft Visual Studio.

Multiplataforma
Una de las mayores ventajas de Unity 3D es que permite aprovechar el mismo desarrollo para desplegarlo en muchas plataformas. A diferencia de otras tecnologías, con Unity 3D prácticamente no hay que hacer casi ajustes para adaptar compilar un juego para iOS teniéndolo ya para Android, salvo que queramos usar funcionalidades específicas de alguna de estas plataformas. Las plataformas permitidas son prácticamente todas las existentes actualmente:
Móviles y tablets
Unity 3D permite desarrollar para iOS, Android, Windows Phone 8 y BlackBerry 10. Las licencias completas para Windows Phone y BlackBerry están incluidas en la licencia básica de Unity 3D, principalmente porque de no ser así muy pocos desarrolladores harían esta inversión para estos dispositivos. iOs y Android, sin embargo, requieren licencias adicionales para hacer desarrollos completos. Aunque con la versión básica se pueden realizar los desarrollos, pero aparecerá el splash screen inicial de Unity 3D.
Para poder compilar para cada dispositivo es necesario algún trabajo extra mínimo. Para Android, por ejemplo, es necesario descargar e integrar el apk de Google para Android. iOS requiere, como no, de un pago a Apple en concepto de licencia de desarrollador con un coste actual de 99$ al año. Además necesitarás un Mac para poder realizar tu compilación final, ya que Unity genera un proyecto en XCode que podrás abrir y compilar con tu entorno XCode en Mac.
Navegador
Unity 3D permite desarrollos para navegador y por tanto para Facebook. Todos los navegadores modernos permiten reproducir estos juegos: Google Chrome, Firefox, Internet Explorer y Safari.
Los juegos hechos con Unity 3D se reproducen con el reproductor oficial de Unity, Unity Web Player, que debe instalarse en tu navegador para poder ser usado. Anteriormente Unity exportaba ficheros Flash, pero ha dejado de hacerlo. Aunque en su versión actual, el novedoso Unity 5, permite la reproducción de sus juegos con HTML5, haciendo mucho más sencillo la integración en páginas web.
Escritorio
Se puede compilar para PC, Mac y Linux.
Consola
Recientemente Unity 3D ha anunciado que es posible desarrollar sin coste adicional juegos para PS3/PS4/PSVita, Wii U y Xbox 360. A pesar de esto, todavía no es trivial publicar juegos para estas consolas, al menos para empresas o equipos pequeños. Si bien Unity 3D no te exige licencias adicionales, sí que necesitas los equipos de desarrollo de las diferentes plataformas, que deben ser proporcionados por Sony, Nintendo y Microsoft, respectivamente.
Actualmente los desarrollos para consola realizados con Unity 3D son aquellos de menor presupuesto, enfocados a descargas desde las tiendas online de las 3 consolas. Los primeros juegos ofrecidos por Sony para usuarios Plus de PS4 estaban hechos con Unity 3D. Los juegos más potentes de estas consolas usan otros motores, como Unreal.

Asset Store
Ademas de su potencia de desarrollo gráfico y su lanzamiento multiplataforma, se refuerza con una tienda de herramientas / complementos / elementos gratuitos o de pago que a golpe de un simple clic podemos integrar en el proyecto.
En la tienda de Unity se pueden encontrar modelos 3D listos para usar, interfaces de usuario, exportadores/importadores de Photoshop, motores de física, ejemplos de juegos, scripts de todo tipo, animaciones, sistemas de partículas, extensiones para tu editor, y un largo etcétera.
Todo esto nos facilita, aun más si cabe, reducir el tiempo de desarrollo del proyecto.

Tarifas
Generalmente esta es la principal barrera para los desarrolladores: el precio de las licencias. Un desarrollador puede empezar por la licencia gratuita, pero tiene ciertos límites. Incluye obligatoriamente el logotipo de Unity en la carga inicial de tu juego y solo puede usarse si la facturación total de tu empresa no supera los 100.000 $ anuales.
El precio de la licencia de Unity Pro es de 75 usd/mes por desarrollador. Un desarrollador puede realizar el uso de todas las prestaciones de Unity Pro en hasta 2 ordenadores. A nivel técnico no existen diferencias entre la Pro y la gratuita, pero si en cuanto a control de código (importante en proyectos en equipo), uso de Unity Analytics, etc.
Las licencias para Windows Phone y BlackBerry están incluidas en la licencia básica de Unity 3D, pero no así las de Android y iOS. Las licencias de iOS Pro y Android Pro tienen un precio de 1.500 usd cada por persona. Son necesarias, por ejemplo, para el uso de Sockets .Net, necesarios para ciertas aplicaciones multi-jugador en tiempo real.
Javi Giner
Latest posts by Javi Giner (see all)
- IIS Express Visual Studio, como configurar para permitir conexiones remotas - febrero 26, 2016
- Evento solidario sobre Innovación - diciembre 14, 2015
- Uso de Component en Unity - noviembre 10, 2015
Hola Javi!.. me gustaria saber tu opinion, una duda q me surgio.. las aplicaciones que uno puede desarrollar para android, en mi caso, se pueden considerar nativas? o son hibridas?
Hola Enrique,
Disuclpa por la tardanza. Se me debe haber colado el mail de aviso y estas semanas he estado un poco off del blog. Supongoq ue te refieres a crear una app para Android desde Unity. El resultado es totalmente nativo, con sus activitys y todo. No se exatctamente a que te refieres con hibridas
Hola Enrique,
Disuclpa por la tardanza. Se me debe haber colado el mail de aviso y estas semanas he estado un poco off del blog. Supongo que te refieres a crear una app para Android desde Unity. El resultado es totalmente nativo, con sus activitys y todo. No se exactamente a que te refieres con híbridas