Entornos de creación de videojuegos: Unity
Dentro del mundo amateur siempre han existido entornos que simplifican la creación de videojuegos. Algunos casos conocidos son el AMOS en Amiga, Div Games Studio en MS-DOS, o GameMaker en Windows. Estas soluciones pretenden simplificar el desarrollo de un juego, minimizando la necesidad de programar y ofreciendo un entorno visual desde el que diseñar y editar todos los elementos (gráficos, sonido, interacción, etc.).
En el ámbito profesional, este tipo de entornos de desarrollo han existido dentro del concepto de motores gráficos, que pese a permitir su uso con versiones de aprendizaje limitan su explotación comercial requiriendo el pago de costosas licencias. El motor de Quake es uno de los ejemplos más conocidos, pero más recientemente, los UDK (Unreal) y Cryengine también están siendo muy utilizados.
Otro hito importante ha sido la llegada de Unity, un motor multiplataforma que ofrece una versión comercial de bajo coste. Gracias a que ofrece soporte para un gran número de plataformas móviles, muchos estudios independientes han recurrido a Unity para dar vida a sus creaciones. Otras compañías, como Havok, se han unido al carro con casos como Project Anarchy, una herramienta de creación de juegos similar a Unity. En definitiva, nunca antes los desarrolladores han dispuesto de tantas herramientas ni tan potentes para desarrollar videojuegos. Además, si te decides en este campo, puedes partir de muchos programas gratuitos con los que practicar y adentrarse en el aprendizaje de la programación. ¡Es un gran momento para animarse a desarrollar juegos!
ESTRUCTURA DE PROGRAMACIÓN
En el paradigma de programación actual, el flujo de ejecución del programa es controlado mediante tres tipos de estructura: de iteración, de selección y de secuencia. La iteración permite pasar por una serie de instrucciones varias veces, mientras se cumpla una determinada condición. La selección permite ejecutar un bloque de instrucciones bajo tal condición. La secuencia implica que un bloque de instrucciones debe ser ejecutado en orden.
Este paradigma permitió eliminar el uso de «GOTO», que se consideraba peligroso, ya que permitía realizar saltos de un punto cualquiera del programa a otro. La programación estructurada impone una jerarquía en la definición de estructuras. Si dentro de una estructura se abre otra, ésta última debe ser «cerrada» antes de que se cierre la estructura que la contiene. Cuando saltamos de un punto a otro del programa, siempre se respetará esta jerarquía de estructuras. Por ejemplo, al invocar a una función, saltaremos al bloque de código de la misma, se ejecutará respetando estos principios de iteración, selección, y secuencia, y volverá exactamente al punto donde se invocó.
Juegos actuales tan diferentes como Diablo III o el plataformas Mark of the Ninja comparten un mismo tipo de programación estructurada en «iteración, selección y secuencia». Mismos ingredientes, pero distinta fórmula.
PROGRAMACIÓN ORIENTADA A OBJETOS
La programación orientada a objetos se caracteriza por tres propiedades: encapsulación, polimorfismo y herencia.
- La encapsulación se refiere a que cada objeto encapsula o contiene todos sus datos y las operaciones que puede realizar.
- El polimorfismo es un concepto más abstracto y encierra una mayor dificultad de comprensión. Básicamente se refiere a que cuando realizamos una operación sobre un objeto, el resultado de dicha operación dependerá de la clase a la que pertenezca dicho objeto.
- La herencia determina una jerarquía y el modo en que los objetos interactúan entre sí, en función de su clase. Al definir una clase previamente, se determina el comportamiento de uno o varios objetos. La herencia indica que los objetos de una clase pueden heredar la funcionalidad de otra. Esto está relacionado con el polimorfismo, ya que es posible que una clase redefina operaciones de la clase heredada (en la que se basa) y, en tiempo de ejecución, se decidirá qué versión de la operación se utilizará.
Los enemigos a los que te enfrentas en un juego pueden compartir gran parte del código que rige su comportamiento (clase) y diferenciarse cuando entran en juego diversos factores como el poliformismo, o la herencia. Todos los objetos que puedes ver en un juego –y muchos más que no ves– están sujetos a unas normas de composición definidas en el código. Contienen otros y son contenidos en otros.
EL ENTORNO UNITY
Unity es un entorno de creación de videojuegos desarrollado por Unity Technologies, una compañía afincada en Dinamarca. Inicialmente estaba orientado al desarrollo de juegos en 3D, aunque desde la versión 4.3 soporta también la creación de juegos en 2D.
Contiene un entorno visual desde el cual, arrastrando objetos con el ratón, podemos definir el escenario de juego. Las propiedades visuales, de colisiones y físicas de los elementos se editan desde el propio entorno, y la lógica de cada uno de ellos se puede programar utilizando los lenguajes C#, un lenguaje basado en C++ creado por Microsoft; JavaScript, un sencillo lenguaje muy utilizado en la web hoy en día; o Boo, que es un lenguaje orientado a objetos inspirado, a su vez, en la sintaxis del lenguaje Python.
El Experto
Javier San Juan Cervera
Codirector Máster en Programación de videojuegos U-tad
- Javier San Juan Cervera ha trabajado como programador de videojuegos en los estudios Digital Jokers y Future World Games, así como desarrollador freelance de aplicaciones para plataformas iOS. También fue investigador en materia de Inteligencia Artificial en la Universidad Politécnica de Madrid.
- En la actualidad es profesor en U-tad, y Codirector del Máster en Programación de videojuegos en ese mismo centro junto a Jon Beltrán de Heredia, Fundador y CEO de Mouin.
- Tienes más detalles en su web de perfil en U-tad.
REFERENCIAS
- Felicia, Patrick, Getting Started with Unity. Packt Publishing, 2013
- Friendman, Daniel P., Wand, Mitchell, and Haynes, Christopher T., Essentials of Programming Languages, Second Edition, MIT Press, 2001
- Wexelblat, Richard L., History of Programming Languages, Vol. 1. Acad. Press, 1981