domingo, 14 de diciembre de 2014

Aprendiendo a hacer juegos con la historia de las consolas: Atari - Preparando Unity

Unity generalmente se abre con un proyecto anterior o uno de ejemplo, a partir de aquí hay que crear un proyecto nuevo usando el menú File/New Project…


Se abre una ventana donde debemos elegir una carpeta para nuestro nuevo proyecto y luego en el desplegable marcar la opción 2D, ya que nuestro juego va a ser 2D y nos vamos a beneficiar del nuevo sistema de Unity para este tipo de proyectos.


La zona donde aparecen checkboxes para importar packages no nos interesa ya que no usaremos ninguno de los packages que trae Unity y vamos a hacer todo nosotros

Si quisiéramos abrir un proyecto en vez de crear uno nuevo nos iríamos, en la misma ventana llamada Project Wizard, a la pestaña de Open Project, donde elegiríamos uno de los proyectos anteriormente abiertos o pulsaríamos sobre el botón Open Other, para buscar entre nuestras carpetas un proyecto que no aparezca en la lista por no haber sido cargado en otra ocasión.


Configuraremos ahora el tamaño de pantalla eligiendo, en el menú que hay justo debajo de la pestaña Game, el icono del “+” que nos permite añadir una resolución personalizada. Pondremos aquí 190x160 que es el tamaño que buscamos (Aunque se verá muy pequeño y tendremos que verlo ampliado o a pantalla completa para nuestras partidas). En Label escribimos lo que queramos para identificar nuestra resolución personalizada (por ejemplo yo he puesto Atari2600) y pulsamos OK para elegirla como resolución del proyecto actual.


Llega el momento de insertar los recursos necesarios para nuestro juego. Desde nuestro navegador del sistema operativo arrastramos los archivos a la ventana Project de Unity. Aquí, para tenerlos ordenados crearemos carpetas. Por ejemplo una para las animaciones, otra para los Scripts en C#, otra para los Sprites, otra para las escenas, etc. Para hacer esto pulsamos con el botón derecho del ratón en la ventana de Project y elegimos Create/Folder.



Como vemos este también será el método habitual de crear nuevos recursos en Unity, ya que en este desplegable encontramos la posibilidad de crear Scripts en los diferentes lenguajes, Shaders, Prefabs (Que veremos en su momento lo que son), Materiales y un largo etc.

Una vez insertados todos los Sprites que vamos a usar tenemos que configurarlos. Para empezar, debemos saber que Unity normalmente detecta automáticamente el tipo de de recurso que hemos introducido en el entorno, pero no es infalible, así que deberíamos revisarlo. En este caso elegiremos el tipo Sprite(2D\uGUI) en Texture Type. Después, como son Sprites simples y no mapas de Sprites (Que manejaremos en otra ocasión), elegiremos Simple en vez de Multiple; nos fijaremos en que el Filter Mode sea Point, para que no nos suavice los bordes de nuestro amado arte creado en Pixel Art y usaremos el tipo Compressed (porque no necesitamos muchos colores).




Hay una parte que hay que explicar más para este caso y es Max Size. En esta parte elegimos el tamaño máximo de la textura, como por ejemplo 1024. Unity se maneja mucho mejor con texturas cuadradas, pero para este caso estamos usando Sprites y lo vamos a pasar un poco por alto, pero además, nuestros gráficos son muy pequeños. Cuando Unity los guarde no necesitamos que genere una textura de 1024x1024 de un Sprite que mide 20x20, por lo que elegiremos un tamaño máximo que se adapte a nuestro tamaño, que en este caso sería el mínimo de 32x32. Con esto, nuestro querido motor generará texturas de ese tamaño como máximo para nuestro arte y estaremos ahorrando recursos. Al terminar pulsamos Apply para aplicar los cambios al gráfico elegido. Debemos saber que no tenemos que ir uno por uno, si no que podemos seleccionar todos los que queramos en la ventana Project y aplicar los cambios juntos. Pero eso sí, hay que tener en cuenta que el tamaño de textura puede necesitar variación, porque habrá Sprites entre los que hemos creado que serán mayores de 32 de ancho o de alto, por lo que tendremos que elegir un Max Size más adecuado como 64, 128 o el que sea ligeramente más grande, es decir, por poner un ejemplo: Si el campo de juego mide 190x160, el tamaño de textura de 128x128 se le queda pequeño, por lo que elegiremos 256 que es el siguiente.


Una vez configurado todo nuestro arte lo colocamos en la escena. Para hacer esto o arrastramos el Sprite a la ventana Scene donde podremos moverlo con el ratón, o lo arrastramos a la ventana Hierarchy, donde aparecerá escrito su nombre. Cualquiera de las dos formas es válida y generará tanto el nombre en Hierarchy, como el objeto en Scene.


Si pulsamos en la ventana Hierarchy la tecla F2 mientras tenemos seleccionado un objeto podemos cambiar su nombre. Por ejemplo prefiero tener las cosas en inglés y con la primera letra en mayúscula para recordarme a mí mismo que es un GameObject, es decir, un objeto del juego. Por eso he cambiado campo por Field.


Ahora tenemos que aprender alguna cosilla más, el uso del Inspector. En esta ventana aparecen las propiedades del objeto seleccionado, tanto si lo está en la ventana Hierarchy como si lo está en el Project Window. Cada objeto tendrá determinados componentes y podremos añadirle más para que tenga nuevas funcionalidades usando el botón Add Component o desde el menú Component de la parte superior de la interfaz. En el caso del campo, vemos que como es un Sprite2D, tiene el Sprite Renderer, que se encargará de dibujar el gráfico en pantalla (Ya explicaremos más de este componente si es necesario). El otro que podemos ver es el componente Transform, que tienen todos los objetos en Unity, incluidos los objetos vacíos, y es que este se encarga de definir su posición en el espacio, su rotación y su escala a partir de su X, su Y, y su Z. Podemos así variar numéricamente esta componente del objeto seleccionando e introduciendo números en estas casillas y sabiendo que, la escala normal de un objeto es (1,1,1) su rotación “en reposo” es (0,0,0) y, teniendo el punto de pivote en el centro, la posición central en la pantalla se define con (0,0,0).


Y nos vamos a ir despidiendo por ahora con lo poquito que hemos aprendido, prometiendo mucho más (como se puede ver en las imágenes yo llevo el proyecto mucho más avanzado, jajaja - ejem, no vale reírse -), pero antes veamos una cosa importante, la cámara. Si seleccionamos la cámara en el Hierarchy pulsando sobre Main Camera que ya aparece automáticamente en la escena, vemos que tiene algunos componentes ya añadidos. El componente Camera es importante porque en él definimos como va a mostrarse la escena. Como he dicho en muchas ocasiones para juegos 2D nos interesa una cámara Ortográfica, por lo que elegimos Orthographic en Projection y definimos un tamaño que nos enfoque todo nuestro campo de futbol. En mi caso ha funcionado un Size o tamaño de 0.8. Respecto a los Clipping Planes indica los planos de recorte o distancias a los que la cámara dejará de pintar los objetos cercanos (Near) o lejanos (Far).


Como veis son demasiadas cosas las que hay que tratar para entender cómo funciona todo y el espacio aquí es limitado, por lo que si hay dudas lo mejor será investigar un poco por la red o preguntarme (Si tenéis suerte conoceré la respuesta, porque tampoco es que sea un experto). Ahora, eso sí, antes de irme debería deciros como guardar una escena, algo diferente al proyecto, que contiene los recursos que incluisteis en la carpeta de proyecto a través de la ventana Project y por lo tanto ya está guardado. Las escenas son como los niveles de juego, es decir, donde vamos a colocar los objetos. Para guardarlas elegimos en el menú superior File/Save Scene y a continuación navegaremos a la carpeta deseada dentro de nuestro proyecto (generalmente Scenes) escribiremos el nombre deseado (En mi caso GameScene) y guardamos. Al abrir de nuevo el proyecto en un futuro, si queremos recuperar esa escena solo tendremos que usar Open Scene para cargarla o hacer doble click en su nombre en la ventana Project.



Si estáis pensando que soy una mala persona por no colgar el proyecto en algún sitio para descargarlo y tener todos los recursos necesarios, debéis saber que lo hago por vuestro bien y porque quiero que practiquéis y curioseéis todo lo posible, además de que ya expliqué en el post anterior, los Sprites que necesitaremos y como crearlos. ¡Así que a trabajar sin excusas!

No hay comentarios:

Publicar un comentario