domingo, 1 de mayo de 2011

Desarrollo de Videojuegos: Aspectos básicos de Unity.


DESARROLLO DE VIDEOJUEGOS:

Aspectos básicos de Unity.



INTRODUCCIÓN


¿Deseas saber cómo funciona el término "desarrollo de videojuegos? ¡Bienvenido! En esta yuca encontrarás los primeros pasos para la creación de juegos utilizando el Unity Engine. Existen infinidades de recursos y programas para la creación de videojuegos, pero el Unity es gratis y potente. Encontrarás información que seguramente funcionará para que tus ideas se vuelvan entretenimiento real.


JUSTIFICACIÓN

Los videojuegos son considerados ambos: arte y ciencia. La industria de los videojuegos es ahora comparable con la industria del cine y la música, siendo todos estos negocios altamente lucrativos. El desarrollo de videojuegos es un proceso complejo, a veces extenso, pero muy creativo y divertido. Para llegar a tener éxito en el medio, es importante desarrollar conocimientos en muchas áreas de desarrollo y programación, así como también en lo referente a diseño y modelación de objetos en tercera dimensión (3D), física avanzada para movimientos y desplazamientos en el espacio, y hasta lograr manejar el desarrollo de una historia tal cual lo hacen en las películas y libros, o lo que es igual, hacer un guión… Pero antes que nada se necesita de mucha creatividad.


Como en todo, el aprendizaje es un proceso que va siempre a largo plazo, pero todo comienza siempre con el primer paso. La idea de esta yuca es abarcar todos los conceptos básicos del desarrollo de videojuegos. Servirá de una guía de cómo comenzar y cómo utilizar una de las tantas herramientas que se pueden conseguir fácilmente en Internet, cómo lo es el manejo del Unity, así que la idea final de la Yuca, será ofrecer a la comunidad de yuqueros los conceptos básicos en la utilización de este engine al punto de estimular la profundización del desarrollo de videojuegos.


PREPARACIÓN

¿Qué son los videojuegos?

Según el Diccionario de la Real Academia Española un videojuego es un “dispositivo electrónico que permite, mediante mandos apropiados, simular juegos en las pantallas de un televisor o de un ordenador”.

Los distintos medios que tenemos para jugar videojuegos van desde los celulares, pasando por los tablets y llegando hasta las poderosas consolas de mesa. Los videojuegos podemos clasificarlos en las siguientes categorías:

  1. Core Games, que corresponde a aquellos juegos cuyos valores de producción son los mayores de la industria. Los tiempos de desarrollo varían según el tipo de juego, pero la mayoría de este tipo de juegos se caracterizan por poseer música, efectos visuales y una narrativa que van de acorde con las últimas herramientas tecnológicas del momento. La características más importante de este tipo de juegos, es un profundo e intenso gameplay (forma en que el usuario interactúa con el jugador), haciendo que el jugador necesite de concentración y un continuo seguimiento de lo que está ocurriendo en el juego. Algunos títulos que se pueden nombrar: Call of Duty, Gears of War, Unreal Tournament, Half-Life, Counter-Strike, entre muchos otros.

  1. Casual Games, dirigido principalmente a jugadores casuales. Se caracterizan por poseer un gameplay sencillo de entender, de modo que capte la atención de usuarios que no frecuentan videojuegos. Ejemplos serían la mayoría de los juegos de explorador, como los que hay en Facebook. El Nintendo Wii y la mayoría de los juegos de ésta consola, se caracterizan por la creación de este tipo de juegos.

  1. Serious Games, juegos con alguna finalidad que va más allá de sólo entretener, pudiendo ser la de educar, tocar temas de medicina o hasta entrenamiento militar. Ejemplo de este tipo de juegos podrían ser la serie de Flight Simulator donde la idea es emular las acciones de un piloto de avión, o el juego online que simula compras y subastas de la bolsa Virtual Stock Exchange.


De las consolas y las formas en que el mercado juega videojuegos podemos hablar del eje principal de juegos de consolas: el Xbox 360 de Microsoft, el Play Station 3 de Sony, el Wii de Nintendo y las PC. Del mercado de videojuegos móviles y que entran en la clasificación ‘Core’ tenemos el Nintendo DS, el Play Station Portable (PSP), y últimamente el mercado de las tablets, entre las cuales se nombra el poderoso hardware del Ipad.

De los “engines” o “motores” para la creación de videojuegos.

De Wikipedia “un motor de videojuego es un término que hace referencia a una serie de rutinas de programación que permiten el diseño, la creación y la representación de un videojuego”.

Los engines son representados primeramente por aplicaciones o editores visuales que nos permiten interactuar con dicho software y así crear videojuegos. Para el desarrollo de videojuegos es más sencillo trabajar desde un engine, debido a que tiene ciertos procedimientos pre-elaborados y que de otra forma sólo nos quitarían más tiempo llegar a desarrollarlos.


¿Qué es Unity?

Unity es una aplicación utilizada principalmente para la creación de videojuegos, enfocado en el diseño y manejo de objetos en tercera dimensión. Es un engine, cuyo concepto es mencionado anteriormente. Es multi-plataforma y el resultado puede funcionar tanto en computadores personales como consolas de última generación (Xbox 360, Play Station 3, Nintendo Wii), así como en los productos Ipad y Ipod de la Mac, y hasta en web browsers a través de la extensión “Unity Web Player”.


Características de Unity.

  1. IDE fácil de manejar, en donde están los principales elementos de la aplicación.

  2. Funciona en múltiples plataformas.

  3. Assets compatibles con otras aplicaciones de modelado 3D, cómo la serie de Autodesk, Maya y 3ds Max.

  4. Soporta shaders que pueden ser programados o importados, así como el uso de texturas.

  5. Soporta el engine de movimientos físicos de Nvidia, PhysX.

  6. Creación de juegos multiplayer a través de LAN.

  7. Programación de scripts a través de UnityScript (muy similar a JavaScript), C# y Boo.


Assets en Unity

Los assets digitales son cualquier archivo gráfico, bidimensional o tridimensional, algún tipo de sonido o música, o la combinación de todos éstos que está ya prefabricado. También comprende código y cualquier otro elemento que es utilizable en el desarrollador.

El concepto de assets se extiende hasta el punto de prefabs. Los prefabs son elementos mayormente descargados realizados por otros usuarios, pero que se utilizan en un proyecto de Unity.

  1. De las licencias.

Actualmente existe una versión gratuita de Unity con las principales características y lo necesario para el desarrollo de aplicaciones utilizando la herramienta. Lo único es que al publicar juegos a través de servidores webs, se incluirá una “marca de agua digital”. En las aplicaciones de escritorio es un “splash screen”.

Unity Pro viendo a ser una versión paga del engine, que contiene todo el contenido de la aplicación, incluyendo “prefabs” y acceso a estas librerías web. Además, existen versiones Pro y gratuitas de contenido para desarrollo de aplicaciones para IOS y Android. Más información acerca de los precios y las características las pueden ver en: http://unity3d.com/unity/licenses.


PASOS A SEGUIR

La idea principal de esta yuca, es la de familiarizarnos con el IDE y los distintos elementos del Unity, así como de obtener la capacidad de crear proyectos y manejar la creación de objetos dentro de una “escena”. Así que para comenzar, abrimos el Unity.

  1. Interfaz del Unity:

Vemos que tenemos 5 regiones principales:

  1. Scene view: La que utilizaremos para el diseño de una escena en especial; el lugar donde manejaremos el posicionamiento de los objetos.

  2. Game view: Nos mostrará como se ve el juego cuando lo damos al botón de “play”. Esta región depende de un objeto “cámara” que manejaremos más adelante.

  3. Inspector: Que nos mostrará las propiedades de algún objeto que seleccionemos dentro del “scene view”.

  4. Project view: nos mostrará todos los “assets” que tenemos a nuestra disposición.

  5. Hierachy view: que nos da una lista de todos los objetos que se encuentran dentro de la “escena”.

Los assets son cualquier data gráfica (imágenes, modelos 3D) que está ya “pre-fabricada” y que puede “instanciarse”, en el caso de Unity, en la creación de una escena. La comparación más cerca posible, es cuando por ejemplo en Visual Studio.NET tenemos una paleta de “objetos” (botones, listbox, gridview) y los arrastramos a un formulario para luego escribir códigos en sus funciones. Dígamos que las “escenas” son los formularios y los “assets” los objetos. Los assets, si tenemos los derechos de autor necesarios, son modificables, o podemos crear algunos nuevos.

Creamos un proyecto nuevo en Unity; le damos a “File” – “New Project”:

Luego nos saldrá una lista de paquetes que queramos utilizar. Por ahora es solo importante el de “Character Controller.unityPackage” para efectos de la práctica. Luego, sólo elijan la ubicación donde quieran guardar el proyecto en el cuadro de diálogo. Para el nombre del proyecto utilizaremos “Tutorial 00”:

Le damos a “Create”, y empezaremos a crear nuestra primera escena. Le damos “File” – “New Scene”. Y debería verse así ahora nuestro Unity:

  1. Creación y manipulación de objetos.

Incluiremos algunos objetos para ver cómo es la forma en que los incluiremos en nuestro juego. De primero crearemos un plano que nos servirá como superficie para nuestro primer juego. Nos dirigimos al panel de arriba a donde dice “GameObject – Create Other – Plane”. Inmediatamente veremos el plano ubicado en la escena que estamos utilizando. Vemos que el plano contiene unos ejes que salen del centro hacia 3 distintos sentidos que corresponden a los 3 ejes de un sistema cartesiano: siendo la flecha roja para el eje de las ‘x’, la verde para el eje de las ‘y’, y la azul para el eje de las ‘z’. Para el movimiento del plano, y de todos los objetos en Unity, podemos utilizar esas flechas para ubicar los objetos en la escena, sirviendo ‘x’ para movimientos laterales, ‘y’ para movimientos verticales y ‘z’ para profundidad.

En caso de que no puedan mover el objeto en la escena, o lo que es igual, no ver las flechas, le dan click a cualquier parte de la escena y luego la tecla ‘W’. De esta forma aparecerán las flechas y podemos mover el objeto:

Aquí tenemos 4 opciones que están relacionadas con el posicionamiento de los objetos y la vista que tenemos en la escena. Iremos de izquierda a derecha:

  1. En el primer ícono

  2. Para

Muevan o roten el plano utilizando los botones, y verán cómo cambian los datos en el “Inspector”. Desde el Inspector podemos manejar la posición, la rotación y el tamaño del objeto seleccionado. Si se pierden en el plano y no encuentran los objetos, pueden hacer doble click al objeto que quieran encontrar en la “hierarchy view”.

Seguimos con la creación de objetos entonces, y para efectos del ejercicio presente, agregaremos los siguientes objetos:

  1. “GameObject - Create Other – Cube”: Esto es un objeto génerico en forma cúbica.

  2. “GameObject - Create Other – Point of Light”: De este objeto hablaremos en el siguiente tema.

  1. Objetos “Cámara” y “Point of Light”.

Para cuando tengan todos los objetos ya creados, ubíquenlos cercas colocando el plano por debajo de todo y el cubo por encima del plano, de modo que se vea algo así:

Además del cubo y el plano, tenemos ahora dos otros objetos que tienen ciertas propiedades especiales. En el caso del “Point of Light”, muévanlo a través del plano y verán que este objeto funciona como un foco de luz, y que dependiendo de dónde esté ubicado, emite luz y sombra en las superficies.

El caso de la “Main Camara”, al seleccionarlo vemos que se abre una pequeña vista como la siguiente:

El objeto cámara es uno de los más importantes. El que nos determina desde que ángulo se va a ver el juego, es decir, desde donde el usuario podrá observar el juego. Así como cualquier otro objeto, podemos moverlo y rotarlo, sólo que éste afectara en la vista del juego. La idea sería posicionarlo desde donde nosotros queramos que el usuario vea el juego, y más adelante podemos hacer que la cámara siga un patrón o un objeto que el usuario mueva, como puede ser el asset de un personaje bien modelado.

  1. Utilizando assets prefabricados.

Ahora estamos en los pasos finales para crear nuestro primer juego (poco) interactivo. Utilizaremos un asset que ya tiene preconfigurado los controles básicos para un juego en primera persona (FPS). Veamos el “Project View” y expandamos las carpetas “Standard Assets”, luego “Character Controller”. Veremos que hay 2 assets, elegimos el “First Person Controller” y lo “arrastramos” hasta nuestra escena. Tendremos ahora un nuevo objeto con una cámara incorporada, así que procedemos a eliminar a “Main Camara” porque no nos hará falta. Coloquemos el nuevo objeto de “First Person Controller” por encima del plano, de modo que el personaje pueda moverse al comenzar el juego. Debería quedar así:

Un pequeño paréntesis para explicar

Ahora si “pausamos” el juego con el siguiente botón, nos saldremos del “game view” para entrar a la “scene view” y ver los cambios que han originado la disposición de nuestros elementos en la escena hasta el momento en que pausamos el juego. El siguiente botón nos permite ir cuadro por cuadro a través del juego.

Una vez que le den “Play”, utilicen los siguientes botones para que vean sus funcionalidades.

Ahora sólo falta un punto que abordar en este tutorial básico de Unity.

  1. Un poco de física.

Ahora agregaremos una nueva “esfera”: GameObject – Create other – Sphere. La posición de esta esfera será un tanto singular: la colocaremos encima del cubo pero ligeramente dirigida hacia uno de los lados. De esta forma más o menos vista desde arriba:

Y vista desde el eje de las ‘x’:

La idea es que cuando la esfera caiga, caída en uno de los bordes del cubo para que lo colisione y siga rodando hacia otro lado con ese mismo impulso.

Ahora seleccionamos el cubo, luego le damos a “Component – Physics – Rigidbody”. Con esto y dado la altura que tiene la esfera con respecto al plano y al cubo, la esfera caerá en caída libre hasta conseguirse con un objeto que tenga activado el componente “collider”, en este caso, el plano y el cubo.

Ahora si le damos “Play”, deberíamos poder ver el movimiento en caída libre de la esfera y observar como rebota con el cubo y sigue rodando en el plano.

  1. Y así termina nuestro primer videojuego…

Sencillo, ¿no? Y de esta forma y a pesar de que parezca un juego muy simple, vimos cómo se utiliza la interfaz gráfica de Unity y cómo podemos empezar a elaborar proyectos utilizando el engine de Unity.


RESULTADOS ESPERADOS

  1. Manejo del concepto de engine, más que todo del Unity como desarrollador de videojuegos.

  2. Manejo básico de la GUI de Unity.

  3. Creación de proyectos y escenas nuevas en Unity.

  4. Maneo de la incorporación de objetos y assets a las escenas.

  5. Utilización de funciones de los objetos.


IDEAS A FUTURO

Para realizar proyectos en Unity (y en cualquier engine) debe haber una división entre la creación de los modelos a utilizar, es decir, los assets y la creación de las reglas ó forma en que los objetos interactúan en el juego. Para lo segundo es imprescindible el uso del UnityScript qué es muy similar a JavaScript, o algún otro tipo de lenguaje interpretado que permita el Unity entre los cuales están C# y Boo.


Para la creación de modelos en 3D, se pueden exportar archivos desde editores como 3ds Max, Maya, Blender (que es open source), ZBrush, entre algunos otros. Cualquier conocimiento proveniente de ahí, puede ser utilizado para futuros proyectos de creación de videojuegos.


La siguiente yuca que desarrollaré será con respecto al uso básico del UnityScript en Unity. ¡Vamos yuqueros! Explotemos este mundo.


REFERENCIAS

  1. Página web del producto Unity: http://unity3d.com/

  2. Para la descarga del Unity: http://unity3d.com/unity/download/

  3. Documentación y tutoriales básicos de Unity

  4. http://unity3d.com/support/documentation/

  5. “Unity (game engine)” en Wikipedia: http://en.wikipedia.org/wiki/Unity_%28game_engine%29

  6. “Engine” en Wikipedia: http://es.wikipedia.org/wiki/Engine

  7. “Videojuegos” en Wikipedia: http://es.wikipedia.org/wiki/Videojuego

  8. Documental “Historia de los Videojuegos” hecho por Discovery Channel, publicado en Youtube:

      1. La Historia de los Videojuegos (1/5):
        http://www.youtube.com/watch?v=5srw05S5d1w&feature=related

      2. La Historia de los Videojuegos (2/5): http://www.youtube.com/watch?v=pgavcsdZDL0&feature=related

      3. La Historia de los Videojuegos (3/5): http://www.youtube.com/watch?v=OLxfZt6nAFs&feature=related

      4. La Historia de los Videojuegos (4/5): http://www.youtube.com/watch?v=5GrMOjKywzU&feature=related

      5. La Historia de los Videojuegos (5/5): http://www.youtube.com/watch?v=8UmqVfLT5dU&feature=related

  1. Ejemplos del Unity utilizando el Unity Player (altamente recomendado): http://unity3d.com/gallery/live-demos/index.html#bedroom



Elaborado por:

Andrés E. Brizuela.

email, twitter

1 comentario:

  1. Hola como que versión es el unity que se esta utilizando para el ejercicio por que el que tengo instalado no tienen muchas funciones y la interfaz es también diferente saludos!!

    ResponderEliminar