Puzzle. Introducción.

Sin valoraciones

Puzzle. Introducción.

El desarrollo de videojuegos ha estado ligado durante muchos años a grandes empresas con centenares de personas trabajando en un mismo desarrollo, ya que generalmente eran las únicas que podían permitirse pagar las costosas licencias de las herramientas para el desarrollo. Además, la mayoría de estas herramientas no son fáciles de aprender a utilizar ya que requieren de conocimientos muy avanzados, no sólo de programación, en la creación del videojuego intervienen muchos campos como la implementación de la jugabilidad (» gameplay”), inteligencia artificial, físicas, gráficos, arte, gamificación, etc. Por suerte, han ido surgiendo herramientas comerciales que facilitan a estudios más humildes la implementación de un videojuego.

Unity3d.

Una de estas herramientas es Unity3d [Unity3d, 2015] [Kyaw y otros, 2013] que es un motor gráfico creado por Unity3d Technologies, y tiene el honor de ser una de las principales herramientas que propició el auge de los estudios “indies” o independientes, que son aquellos estudios compuestos por un grupo reducido de personas y en el que generalmente los desarrollos se financian de manera autónoma. Unity3d surgió como respuesta a las necesidades de dichos estudios que no podían crear su propio motor gráfico ni adquirir caras licencias, enfocándose al desarrollo de videojuegos en 3D y siendo multiplataforma. A día de hoy es posible exportar el videojuego implementado a prácticamente cualquier plataforma actual: PC (Windows, Linux y Mac), videoconsolas y smartphones. Unity3d tiene soporte para DirectXll [DirectX 11, 2015], OpenGL [OpenGL, 2015] e interfaces propietarias de las videoconsolas.

MonoDevelop.

Unity3d nació a partir de MonoDevelop [Monodevelop, 2015], un entorno de desarrollo integrado libre y gratuito que proporciona el scripting tan característico de Unity3d. Desde la versión 3.0, Unity3d incluye una versión personalizada de MonoDevelop para la depuración de scripts y permite la programación en lenguajes tan dispares como C# [Jesse Liberty, 2002] y Javascript [Shelley Powers, 2008]. Aun así, es posible integrar Microsoft Visual Studio como IDE por defecto de Unity3d. Otra característica muy interesante es el Asset Store [Asset Store, 2015], la tienda oficial de Unity3d con recursos gratuitos y de pago. Muchos diseñadores y desarrolladores, en vez de utilizar Unity3d para implementar videojuegos, se dedican a publicar recursos o herramientas no nativas para otros desarrolladores. En cuanto al tema de licencias, Unity3d dispone de una licencia de pago ($1500 o $75 al mes) y de una gratuita cuyas limitaciones no son determinantes para implementar un videojuego, sino herramientas de soporte y ayuda.

Con el auge de estos estudios independientes y de plataformas con facilidad para publicar videojuegos para los smartphones, se ha vuelto a recuperar los videojuegos en dos dimensiones. En Unity3d, pese a estar enfocado al desarrollo de videojuegos en tres dimensiones, los desarrolladores lograban crear contenido en 2D a base de manipulaciones como la cámara y de utilizar herramientas no nativas. Afortunadamente, desde la versión 4.3 (finales del 2013), Unity3d integra herramientas nativas que facilitan a los desarrolladores la implementación en 2D.

Otras alternativas.

Existen otras alternativas a Unity3d que también son muy utilizadas por los estudios “indies”, como por ejemplo Cocos2d-X[Cocos2d-X, 2015] y LibGDX [LibGDX, 2015] que también son multiplataforma. Sin embargo no proporcionan tantas herramientas, además de estar más enfocados al desarrollo en 2D por lo que son más bien considerados “frameworks” en vez de motores gráficos. La alternativa que más se acerca a nivel técnico es el recién lanzado Unreal Engine 4 [Unreal Engine 4, 2015] que permite un mayor despliegue visual, sin embargo Unity3d sigue siendo un referente gracias a su política de licencias y a las numerosas características que ha ido incluyendo a lo largo de sus versiones.

Existen muchos tutoriales de Unity3d pero la mayoría están enfocados a la implementación de videojuegos en 3D y hay pocos enfocados al 2D y menos aún como ejemplo práctico, es por ello que el proyecto que vamos a realizar consiste en la creación de un tutorial práctico haciendo uso de las herramientas nativas de Unity3d para 2D. El ejemplo práctico consistirá en la implementación de un videojuego del género puzles en dos dimensiones y enfocado a plataformas móviles. La implementación de un videojuego desde cero es una tarea muy complicada y extensa, es por ello que en el tutorial se va a tratar la fase de diseño de un videojuego enfocado a plataformas móviles y a nivel de implementación centrarse en dichas herramientas para el 2D, mostrando al final una versión jugable del videojuego implementado. Por otra parte, al ser numerosas las herramientas y al ser el videojuego a implementar de un único estilo, es imposible tratar cada una de las herramientas aunque se intentará abarcar lo máximo posible y mencionar las que no se incluyan dentro de la implementación del videojuego. En la fase de programación nos centraremos en la inteligencia artificial de los enemigos que determinará el comportamiento de éstos. Por último, se incluirá enlaces de interés con recursos gratuitos para utilizar en proyectos independientes. El resultado generado de este proyecto puede constituir una referencia para otras personas interesadas en aprender cómo usar Unity3d para programar videojuegos en 2D, lo cual les allanará seguramente el camino y les suavizará la curva de aprendizaje.

1.1 Introducción a Unity3d.

Para este proyecto utilizaremos la versión personal que es gratuita. Recientemente se ha lanzado una nueva versión de Unity3d, concretamente la versión 5 en marzo del 2015 y con la cual cambia toda la política de licencias. Hasta esta versión, las diferencias de la versión Professional con respecto a la Personal se limitaban a la pantalla de “splash” personalizable, algunos efectos de imagen y texturas como HDR y varias opciones más que solo eran amortizables en proyectos grandes, por lo que la versión Personal era perfectamente usable para el desarrollo de proyectos “indies”. Gracias a la competencia, con la versión 5 la versión Personal incluye todas las características de la versión Professional con la única restricción de que la pantalla de ‘ splash” sigue sin ser personalizable. Por otra parte la versión Professional incluye de forma adicional varias herramientas de soporte como por ejemplo backup en la nube, una herramienta para reportar los bugs u otra herramienta para gestionar el acceso a betas.

Aunque este proyecto trata de introducir las nuevas herramientas enfocadas para el desarrollo en 2D introducidas en la versión 4.3, utilizaremos la última versión disponible (5.0) pero el proyecto y tutorial puede ser exportado sin problemas a la versión 4.3 o superior.

1.2 Crear un nuevo proyecto.

Antes de profundizar con la herramienta Unity3d, lo primero es instalarla y configurarla junto con otras herramientas que nos facilitarán el desarrollo de un videojuego. Dichas tareas están explicadas con detalle en el Anexo técnico. Una vez que tenemos todas las herramientas instaladas y configuradas, ejecutamos Unity3d. Si anteriormente hemos estado trabajando en algún proyecto, nos abrirá automáticamente dicho proyecto, en caso contrario, nos aparecerá una pequeña ventana como se muestra en la Figura 1.2 para crear un nuevo proyecto o abrir alguno de los que tenemos en el disco duro.

Puzzle. Introducción.

Figura 1.2. Ventana de nuevo proyecto o abrir un proyecto existente.

En esta ventana elegiremos el directorio donde se guardará el proyecto y los diferentes paquetes a importar, al igual que en anteriores versiones de Unity3d. La diferencia radica en un pequeño desplegable con las opciones “2D” y “3D”, y que sirve para que Unity3d se configure por defecto con la elección escogida. En nuestro caso, dado que se trata de un videojuego en 2D, elegimos la opción “2D”. En un principio no seleccionamos ningún paquete aunque más adelante necesitaremos algunos de ellos lo añadiremos a posteriori. Pulsamos el botón “Create” para crear un nuevo proyecto y nos configure la ventana principal de trabajo de Unity3d.

Puzzle. Introducción.

Figura 1.3. Ventana principal de trabajo de Unity3d.

Como se puede apreciar en la Figura 1.3, la ventana principal de trabajo del editor está compuesta por varias vistas que se pueden personalizar arrastrándolas a la ubicación deseada. En este tutorial se da por hecho que el lector tiene unos conocimientos mínimos de Unity3d y ha trabajado con dicha herramienta, por lo que nos centraremos en las peculiaridades del 2D.

Puzzle. Introducción.

Figura 1.4. Configuración por defecto de la cámara para el 2D.

En las propiedades de la cámara, la propiedad “Projection” indica la capacidad de la cámara para renderizar objetos con o sin perspectiva. Con el 2D esta propiedad se auto configura en “Orthographic”, es decir, la cámara renderizará los objetos de forma uniforme y sin perspectiva por lo que pierde completamente la profundidad. Aun así, el eje Z se sigue manteniendo aunque no lo apreciemos. La otra opción es “Perspective” que es la que añade la perspectiva a la cámara para el renderizado de objetos. Al tener configurada esta propiedad con “Orthographic”, se habilita la propiedad “Size” que indica el tamaño de la vista gráfica de la cámara. A más tamaño, más lejos se situará la cámara, y viceversa.

Puzzle. Introducción.

Figura 1.5. Diferencias entre la vista en 2D y 3D

Al perder la profundidad, posicionar los objetos en un determinado orden puede ser una tarea complicada según vaya aumentando el número de objetos en la escena. Para facilitarnos esta tarea, tenemos la propiedad “Sorting Layer” para asignarle una determinada capa a un objeto y un orden en esa capa con respecto a los demás objetos de esa capa. También podemos crear nuevas capas y ordenarlas como se muestra en la Figura 1.6.

Puzzle. Introducción.

Figura 1.6. Propiedad Sorting Layer y creación de nuevas capas en el «Inspector «.

Antes de seguir con el proyecto y profundizar más con Unity3d, en el siguiente capítulo vamos a definir un pequeño documento de diseño del videojuego a implementar y que servirá para presentar las nuevas herramientas para el 2D.

1.3 ¿Qué es el documento de diseño de un videojuego?

Un documento de diseño del videojuego, o también llamado “Game design document» (GDD) es una parte muy importante en cualquier desarrollo serio, al igual que ocurre en otros tipos de proyectos software en los que se define el documento de Especificación de Requisitos Software (ERS). En este caso es un documento más laxo y orientado al mundo de los videojuegos ya que algunos conceptos como las mecánicas de un videojuego son difíciles de definir en un documento ERS. En él se detallan todas las características del videojuego: género del videojuego, mecánicas, personajes, historia, estilo gráfico, etc. y será usado por todos los integrantes del equipo como guía de trabajo.

La extensión de este documento depende del tamaño del proyecto aunque tampoco hay que confundir tamaño con calidad. En este caso, al no ser un videojuego de gran tamaño y tampoco es el principal objetivo de este TFG, describiremos de forma resumida los diferentes apartados del documento de diseño de nuestro videojuego en el Anexo 4.

Compártelo en tus redes

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest

Valore este curso

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumimos que estás de acuerdo. VER