ELABORACIÓN DEL JUEGO COINS

Esta “DOCUMENTACIÓN PASO A PASO ELABORACIÓN DEL JUEGO COINS” explica como se hizo el juego coins resultado de la asignatura de RV RA RM 2020 UCentral por Daniel C.G.

MATERIAL PREVIO

En esta sección se habla de como instalar la herramienta del motor de desarrollo de juegos Unity  y la importación de los assets necesarios que se usan en la construcción del juego.

INSTALACIÓN UNITY

Para la instalación de unity es necesario ahora instalar una herramienta llamada UnityHub, esta nos ayudara a gestionar nuestro proyecto de unity, nuestras versiones de unity (si se da el caso podemos cambiar la versión de nuestros proyectos a una mas antigua), también podemos ver ejemplos gratis de unity, entre otras cosas.

Después de instalar unityhub instalaremos la versión más actual de unity.
Para hacer el proceso de instalación nos dirigimos a https://unity.com/es

Nos vamos a la sección de comenzamos y nos paramos en la opción de uso personal

Unity también ofrece licencias de uso para estudiantes los cuales se deberán verificar y unir al pack de desarrollo de estudiantes.

Cuando le damos en “comencemos” iremos a la pagina donde nos pedirán comenzar el proceso de validación para descarga, al dar clic nos pedirán aceptar los términos y condiciones de uso y empezaremos con la descarga.

Cuando hallamos terminado la instalación de nuestro unityhub ya podremos hacer uso de todos sus beneficios.

En la sección de “Project” estarán alojados todas nuestras carpetas de proyectos, en la sección de “Learn” podremos ver los ejemplos y tutoriales que unity nos ofrece para explorar los posibles productos que se pueden elaborar con esta poderosa herramienta, en la sección de “community” veremos varios foros sobre temas muy interesantes relacionados con unity, por ultimo en la sección de “intall” podremos instalar las versiones de unity que queramos con los complementos que necesitemos y deseemos usar , ya sea uso de plataformas ISO, Android, para exportar nuestros juegos a internet, entre otras. También para temas de verificación estaremos logeados automáticamente al abrir la aplicación de unityhub esto lo podremos corroborar ya que en la parte superior derecha estarán las iniciales de nuestro nombre.

También instalaremos visual Studio Code, al momento de importar lo necesario en nuestro proyecto, debemos poner esta opción para después poder editar el código de nuestro juego.

IMPORTAR ASSETS

Los assets involucrados en este proyecto los podremos obtener importándolos desde la Asset Store.

¡Todos los assets usados en el desarrollo del juego son gratuitos NO es necesario pagar!

Cuando encontremos los assets les daremos en descargar y después nos permitirá dar la opción de importar y automáticamente los tendremos disponibles en la carpeta assets

Estos son los assets involucrados en el desarrollo del videojuego

  1. Standard Assets (for Unity 2018.4)
  • Terrain Tools Sample Asset Pack
  • Floor materials pack v.1

DESARROLLO DEL ENTORNO

CONCEPTO Y DISEÑO

El juego se pensó con el concepto de que debe haber dos islas (2 partes) donde el jugador debe encontrar objetos.

El juego se pensó con un laberinto de traslación de la primera a la segunda parte para agregarle una sección donde el jugador tenga que poner a prueba sus habilidades de memoria y estrategia.

TEXTURIZADO Y MOLDEADO

El terreno del juego se elaboro usando herramientas de texturizado y relieve de terrenos.

Para hacer uso de las herramientas de modelado y texturizar terrenos debemos importar un paquete llamado Terrain Tools.

Para poder importarlo nos dirigimos a la pestana de nuestro ordenador llamada “Window” después seguimos a la sección de “Package Manager” y buscamos “Terrain” después le damos en el botón de importar y listo (la imagen usada para esta explicación no tiene el botón de importar por que ya lo había importado tiene las opciones que se pueden usar después es decir para remover este paquete o actualizarlo)

Teniendo en cuenta la siguiente imagen , el recuadro naranja representa la zona Terrain esta zona es la cual podremos modelar y esculpir con relieve según notros los deseemos, el recuadro verde son las opciones para pintar o modelar según nosotros lo deseemos, para cambiar entre las opciones de esculpido y texturizado lo podeos hacer con la barra de 5 símbolos encerrada en el cuadro rosado, se recomienda primero esculpir la capa terrain antes de texturizarla ya que por lógica geográfica algunos pisos térmicos pueden plasmarse, como montañas nevadas o playas soleadas las cuales están definidas por la geografía en diferentes niveles de terreno.

Cabe aclarar que cuando agregamos nuestra capa de terreno automáticamente esta trae un collider es decir además de lucir como un terreno o suelo hace la funcionalidad dentro del juego como tal, no hace falta agregarle nada para el tema de funcionalidad dentro de nuestro juego.

El tema de aplicar texturas al terreno es de una manera libre y artística se puede  pintar de barias formas con una variedad de estilos en brochas creando terrenos visuales llamativos y muy realistas, también cabe resaltar que aquí las secciones del terreno se pueden pintar al gusto y voluntad del diseñador o artista del videojuego.

Como material de apoyo se incluye un video de apoyo sobre el tema de modelado y textura de un terreno: Video modelado y textura de terrenos.

CONSTRUCCIÓN DE LAS ZONAS

Inicialmente se empezaron a agregar los arboles y se les modifico la altura y anchura para alterar la apariencia de estos y que se vieran diferentes

Según la anterior imagen , se señala en que carpeta de los assets de los que importamos llamados “Standar Assets” con líneas rojas en la parte inferior izquierda.

También se resalta con círculos rojos los modelos de los arboles usados , estos se agregan con solo mantener el clic sobre ellos y arrastrarlos a nuestro juego.

Por último podemos ver que los recuadros verdes nos señalan la herramienta con la cual podemos modificar la contextura de los arboles, haciendo uso de los ejes de colores verde, rojo y azul que aparecen sobre nuestro asset seleccionado.

después de esto se empezaron a agregar algunos objetos (obstáculos) los cuales son dinámicos, es decir se pueden mover o romper, en el  juego se pusieron de manera estática. Este estado solido de los objetos se consigue prohibiendo que los objetos sean desplazados o rotados, para darles esta propiedad seleccionamos el objeto obstáculo y vamos a la sección que dice Rigidbody de cada parte que compone el objeto y chuleamos las constantes de Freeze Position y Freeze Rotation en los tres ejes x, y, z.

En la imagen anterior se resalta con verde la ubicación de estos assets y se enmarcan en cuadrados verdes, además también se hace una guía de color rosa haciendo el análisis de el objeto que se ve en el juego esta en la lista de objetos de “Hierarchy” (jerarquía) y donde se señalan las casillas que se deben bloquear en el Rigidboy de el objeto. (cabe aclarar que en el ejemplo de la imagen anterior se están bloqueando la posición y rotación de un solo ladrillo que compone la pared)

Para poder hacer el cambio de todos los bloques deberemos seleccionarlos todos en la jerarquía, (“Ventana Hierarchy”) al momento de estarlos seleccionando veremos que nuestra pared dentro de nuestro juego se le resalta cada bloque con un contorno naranja, lo cual nos confirma que están seleccionados, teniendo seleccionados todos los cubos chuleamos las casillas de “Freeze Position” y “Freeze Rotation” para poner todos los objetos que componen nuestra pared estáticos.

Para hacer la zona del laberinto se agregaron varios rectángulos y se posicionaron de tal manera que hubiera suficiente espacio para que el personaje pudiera pasar, también la dificultad del laberinto se pensó en hacerla en un nivel fácil , sin obstáculos , con paredes grandes y largas, para poner mas dificultad se podrían poner paredes mas delgadas y con mas cantidad de patrones en los caminos para que sean mas parecidos.

En la imagen anterior se muestra que estos muros fueron creados de manera manual creando objetos 3D como lo son cubos, estos se modificaron manualmente para darles el aspecto rectangular.

Para hacer la textura de los muros, primero se creo un objeto de tipo material, esto se crea haciendo clic derecho en nuestra carpeta donde queremos armar nuestro material, estos pasos son resaltados de color verde en la imagen anterior, también se señala que cuando vamos a editar nuestro material en la venta inspector nos saldrá toda la información respectiva a este.

Después le agregamos la textura a nuestro material , las luces, y la profundidad, para agregarle estas propiedades a nuestro material nos vamos a la carpeta “2” de los assets con el nombre “Floor materials pack” aquí encontraremos 3 imágenes , cada imagen sirve para darle a nuestro material una propiedad diferente.

Para saber donde agregar estas imágenes en la imagen anterior se resalta con rosado los lugares en los cuales se debe ubicar cada imagen. Otra propiedad de nuestro material es el color para modificar esta propiedad podemos elegir cualquier color de la paleta de colores que unity provee, esta opción esta resaltada con color amarillo en la imagen anterior.

También para poder ajustar el patrón a nuestros objetos y que tenga un tamaño apropiado hacemos uso de las casillas de “X” y “Y” en la opción “Tiling” de nuestro material en la ventana inspector, esto esta resaltado con el color azul celeste en la imagen anterior.

Por último para poder ver cualquier cambio de nuestro material podemos verlo en la zona inferior de inspector la cual esta resaltada de color rojo en la imagen anterior.

Cuando nuestro material ya este credo solo resta arrastrarlo sobre el objeto al cual se lo queremos aplicar.

Como material de apoyo se incluye un video de apoyo sobre el tema de como crear texturas : Video de como crear texturas

DESARROLLO DEL PERSONAJE

Al momento de crear el movimiento del player se decide que la vista del player será en primera persona, el desplazamiento será mediante teclas, la acción de salto por teclas y la visión será manipulada por el ratón.

Cuando hablamos de que la vista del player será primera persona, se hace referencia a que la vista de nuestro juego o la experiencia de este se vive a través del personaje (como si el player fuera el personaje dentro del juego) y la experiencia se vive en primera persona.

Para ser un poco mas claro podemos tomar el ejemplo de comparación de un juego en tercera persona, esta visión ve a personaje hacer las acciones, como si alguien mas estuviera observando al player.

Cuando se habla de desplazamiento por teclas, se hace referencia a poder mover nuestro player por el espacio de nuestro juego haciendo uso de las teclas clásicas del teclado para movimiento, ya sean las flechas (¬,­,®,¯) o la clásica configuración de teclas (A, W, D, S).

Cuando se habla de rotación mediante el ratón se hace referencia a que el ratón nos ayudará a mirar, observar, rotar la visión hacia la dirección que nosotros deseemos .

Para construir nuestro personaje , creamos un collider de capsula y a esta le agregamos la cámara principal (main cámara), también le ponemos un rectángulo para simular los visores.

COMANDOS DE MOVIMIENTO

En el anterior código se especifican las líneas de código necesarias para hacer el movimiento de nuestro personaje. Puntualmente las líneas que nos interesan son las primeras 4 líneas del método update, estas líneas nos ayudan a obtener la información ingresada por teclado y a asociarla con los combos de teclas que ya vienen definidos en unity con las etiquetas “Horizontal” y “Vertical”

COMO SALTAR

Respecto a como hacer saltar nuestro personaje es la 5 línea de código del método update, que hace uso de la etiqueta “Jump” que nos hace referencia a la tecla espacio también por que ya esta definida en unity.

Por temas de desplazamiento y de gravedad también hacemos uso de unas líneas de código las cuales están en el método “fixedUpdate” esto para hacer que nuestro personaje caiga a una velocidad mas natural.

Un punto muy importante es que la acción de saltar inicialmente se podía repetir tantas veces se quiera y no debería ser así , para poder controlar los saltos infinitos hacemos uso de unos condicionales con una función ya definida en unity llamada “IsGrounded” esta función nos ayuda a controlar que si nuestro personaje esta en contacto con el suelo pueda saltar y si no es decir “esta saltando”, no pueda hacerlo de nuevo hasta llegar al suelo.

COMO MIRAR

Respecto al tema de como controlar la vista de nuestro personaje con el ratón, en el método “fixedUpdate” en las ultimas 4 líneas de código hacemos la configuración de obtener la información obtenida por el ratón y aplicarla a la cámara que tenemos en nuestro personaje, también en estas líneas se delimitan los grados hasta donde puede ver nuestro personaje tanto arriba como abajo.

Como material de apoyo se incluye un video de apoyo sobre el tema de como crear un controlador de personaje en primera persona: Video de como crear controlador primera persona

DESARROLLO LOS OBJETOS INTERACTIVOS

COMO VOLVER LA EXISTENCIA DE UN OBJETO DINÁMICA

Para hacer que los objetos que vamos a recoger en nuestro juego sean dinámicos es muy fácil

En el anterior script se define un inventario el cual llevara nuestro personaje , este inventario se incrementará cada vez que nuestro personaje agarre un objeto.

Pero ¿como sabemos cuando nuestro personaje agarra los objetos que hemos definido?, bueno en el anterior script primero obtenemos el inventario del objeto con la etiqueta “player” es decir el inventario de nuestro jugador, después hacemos un método OnTrigger que este nos ayudara a saber cuando el objeto con la etiqueta “Player” halla tenido contacto con el objeto a recoger, además incrementa el inventario en mas 1.

En la imagen anterior vemos subrayado donde se agrego la etiqueta player teniendo seleccionado nuestro player previamente creado.

Como material de apoyo se incluye un video de apoyo sobre el tema de como crear objetos para recolectar: Video de como crear objetos para recolectar

En la anterior imagen se muestra el script de coinInteractive en el cual se definen las variables de  un campo para agregar un objeto de juego el cual será el sonido de la moneda al ser recogida.

(cabe aclarar que el audio usado en el juego se tomo de una biblioteca de audios de YouTube la cual tiene audios sin copyright)

Como material de apoyo se deja la biblioteca de la cual se obtuvo el audio: biblioteca de audios de YouTube sin copyright

El sonido para usar se agrega dentro de un gameObject y este después se agrega a la moneda en el campo donde se debe ejecutar el sonido al recoger este objeto.

En la imagen anterior se muestra el gameObject que tiene asignado el sonido formato WAV, también tiene asignado el script coinInteractive

En la imagen anterior se puede ver como se asigno este objeto en la parte donde se pasa este objeto de sonido para que se ejecute cuando la moneda sea tomada.

Como material de apoyo se incluye un video de apoyo sobre el tema de como crear objetos de sonido para recolectar: Video de como crear objetos de sonidos para recolectar

COMO ANIMAR LOS OBJETOS

Para poder animar nuestros objetos debemos seleccionarlo y nos vamos a la pestaña de animation, que esta al lado de la pestaña de consola, ponemos a grabar con el botón rojo de animación , y automáticamente todos los cambios de posición que le hagamos a nuestro objeto quedaran grabados, lo cual al darle ejecutar o play podremos ver la animación final y al ejecutar nuestro juego también podremos apreciarla. Los botones alrededor del play de animation nos ayudan analizar cada fotograma de la animacion.

COMO DARLE BRILLO O LUZ PROPIA

Para darle luz a uno de nuestros objetos solo necesitamos crearle un punto de luz dentro y este lo podremos modificar en intensidad, posición dentro del objeto, color luz de emisión, y tipos de sombras

En la imagen anterior podemos ver como se asocia el punto de luz con la ubicación dentro de la jerarquía , donde podemos apreciar que este punto de luz es un objeto hijo del objeto coin.

También en la parte del inspector tenemos subrayadas las propiedades del color de iluminación , la intensidad o fuerza con la que ilumina y el tipo de sombras que provocara alrededor de la zona que ilumine nuestro objeto.

COMO HACER CONTADOR DE OBJETOS

Para hacer el contador de nuestros objetos debemos crear un objeto de tipo texto, acomodarlo a nuestra vista de juego como queramos y para poder actualizarlo hacemos el mismo proceso que el del jugador poder coger el objeto pero esta vez actualizaremos el texto que hemos creado anteriormente.

En la imagen anterior se muestra como se crea el contador de objetos, se resalta con rojo dichos pasos, también se evidencia con verde unas propiedades de personalizado de nuestro contador.

Después acomodamos el contador en donde queremos que aparezca en la pantalla de ejecución de nuestro juego.

En la anterior imagen se señalan las líneas de código y la librería que son necesarias usar para poder actualizar nuestro contador.

Después de actualizar el script podremos agregar el texto que queremos actualizar, en la imagen anterior se muestra como y donde debemos poner el texto a actualizar.

También se agrega el objeto del sonido previamente importado en el campo del objeto de juego del sonido coger moneda.

(Cabe resaltar que este proceso se tiene que hacer moneda por moneda o si no con la fabricación de un prehab variable o dinámico no será necesario)

Como material de apoyo se incluye un video de apoyo sobre el tema de como crear un contador de objetos recolectados: Video de como crear un contador de objetos recolectados

DETALLES DE SCRIPTS

coinInteractive: Este script nos ayuda a volver una moneda un objeto para poder tomarlo con nuestro player.

lifeTimeCoinSound: Este script nos ayuda a ejecutar el sonido de las monedas cuando son recogidas.

playerControllerFP: Este script nos ayuda a darle las acciones a nuestro player, moverse, saltar, mirar.

playerInventory: Este script nos ayuda a dar el inventario de objetos recogidos en el juego.

(los scripts se agregan de manera externa a este documento para que su uso, ejecución o pruebas puedan llevarse a cabo con facilidad)

Autor: Daniel Felipe Castillo Gallo
Editor: Carlos Pinzón
Condigo: UCRV-8
Universidad: Universidad Central

FUENTES

Brackeys (23 junio 2019). How to make Terrain in Unity [Video]. YouTube. https://youtu.be/MWQv2Bagwgk

Kostas. (27 septiembre 2019). MATERIALES EN UNITY  [Video]. YouTube. https://youtu.be/gtxGe4I04qk

Dgonzalez Tutoriales Unity en Español. (25 mayo 2020). Controlador en primera persona en Unity desde cero! [Tutorial en español]  [Video]. YouTube. https://youtu.be/khT6TlYBdl0

DansterTv. (18 enero 2020) Como recoger Objetos/Items en Unity (OnTriggerEnter)|Fácil y Sencillo[Video]. YouTube. https://youtu.be/v6RUVH-Ehcc

Alicia Martinez. (22 febrero 2018) Unity 2d contador de puntos. [Video]. YouTube. https://youtu.be/Oyq2G7j9chg

YouTube. (2014). Coin Shuffling. [Otro]. YouTube. https://studio.youtube.com/channel/UCC57tGzGB_x0QzpeKt5SOBA/music

Deja una respuesta

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