Relaxing Flying VR

Este es un proyecto que tengo en la cabeza hace un rato, como dice el titulo sera un proyecto dedicado a utilizar el accesorio que muchos desprecian pero que yo creo puede tener una gran uso, los lentes Cardboard. Donde la mecánica consistirá en sobrevolar un mundo VR con el fin de tener una sesión relajante.

Si se que se escucha tipo: "ah, que divertido -Sarcasmo". Pero lo hago con el fin de explorar las opciones del giroscopio y acelero-metro de los smartphone, esperando entregar una pequeña experiencia que permita al jugador relajarse un poco.
 

De momento esa es la primicia y conforme vaya realizando avances podrán seguirlo en este post.

He estado trabando en el proyecto unos tres dias (o mas bien horas porque le dedico de dos a tres horas) y ha sido todo un caso, aqui la historia:

Dia 1: Daniel estaba muy feliz, ya habia enviado el asset a revisión, es asi que decide comenzar con el proyecto que dice el titulo. Primer paso instalar lo necesario, como sera un juego movil para Android (iOS no, porque como diria Lois, ¿Te parece que somos ricos?) se necesitan los modulos para ello, asi que instalo (en mi caso solo actualizar) el Android Build Support de Unity.

Comienzo a montar el proyecto con una escena demo para que sirva como testing, todo bien empiezo a compilar el apk...Unity dice: Hijole, yo creo que no se va a poder. Error porque segun Unity no tenia el OpenJDK, voy a verificar y efectivamente no se instalo, bueno luego de intentar como cuatro veces instalarlo, darle permisos de escritura y otras curiosidades, al parecer hay un bug con la version 2019.4.4f, entonces investigando al parecer tengo que realizar la instalación de forma manual.

Bueno monto el apk y digo bueno hasta aqui por hoy.
Dia 2:  Se viene lo bueno, o eso era lo que yo pensaba. Entonces comenze la busqueda de información de como utilizar la realidad virtual con el movil, encontre un tutorial pero ¡Oh que es esto! la version que utilizaban en este era una version anterior por ende no funcionaria y pues lo busco, lo busco y no lo busco. Entonces comenze a leerme la documentación de "Google Cardboard XR Plugin for Unity" que fue la opción seleccionada. Todo bien cargue el plugin y ¡Otro error! Pues al parecer los scripts del plugin estan diseñados para ambas plataformas Android/iOS y pues esta vez por fortuna solo bastaba con instalar iOS Build Support para que funcionara, cargue la escena demo que ofrece el plugin y este fue el resultado.
Google Cardboard XR Plugin for Unity Escene Demo

Dia 3: Ya podia a comenzar con mis experimentos y fue realmente interesante ver el funcionamiento de la VR con lentes para movil y como tienes que hacer el armado de los objetos para que se comporte de la forma que  quieres, ver como se visualizaran los menus del juego ya que no es igual ocupar el Render Mode de World Space y Screen Space, comenze a realizar la adecución del control de movimiento y hasta el momento tengo lo basico, que es la vision 360 y el vuelo automatico. ¿Que sigue? antes de dar el siguiente paso quiero seguir jugando con la escena para ver que mas se puede hacer con el plugin, ademas quiero encontrar una forma de reducir el tiempo de las pruebas, ya que el plugin no funciona con el Play Mode de Unity, entonces tengo que estar compilando cada vez que quiero probar el juego.

El devlog que tenia pensado en video no llego a buen puerto, ya que apuradamente tengo tiempo para realizar el desarrollo y seguir mi trabajo fijo, asi que de momento seguimos en escrito todo el proceso, y al finalizar realizare un video de como fue el desarrollo y que es a lo que le di prioridad asi como el GDD que segui.

Continuando donde nos habiamos quedado, no pude realizar lo planeado con Unity Remote por lo cual decidi seguir de momento compilando en cada testeo, ya que queria dejar el plugin intacto. Continue trabajando en el cuarto de testeo y comence a darle movimiento a la camara, pero cual fue mi sorpresa que esto no funcionaba por alguna razón que no segui explorando no se le podia dar moviento hacia enfrente o cualquier lado de forma directa, asi que opte por crear un padre para la camara VR y a este darle los movientos necesarios.

Hasta aqui todo trabajaba de maravilla, la camara seguia de frente y a la vez al mover la cabeza esta giraba en el punto que se tenia que mover.

En la imagen de abajo es el cuarto de pruebas, pero esta vez con cada una de las funciones mencionadas en el parrafo.

Captura Cuarto de pruebas

Momento de pasar a la escena principal del juego, en este punto ya contaba con lo principal que seria el movimiento de la camara VR, entonces tocaba turno de empezar a realizar el armado de la escena, esta consistira en lo siguiente:

  • Islas
  • Vegetación
  • Rocas
  • Luces
  • Elementos Decorativos
  • Barcos
  • Otros


Comencé con lo mas facil que seria realizar las islas base y luego de comenzar de poco a realizar todo lo relacionado a la ambientación. A continuación dejo algunas de las capturas de como se ven los modelos de la isla ya montado en el Unity.

Como no planeo hacer un sandbox tenia que crear el limite del juego, ademas queria mantenerlo como una experiencia corta debido a esto opte por solo tener tres islas y delimtar el espacio de exploracion, haciendo que si pasas del limite un contador salte avisando que regreses.

Luego procedi a realizar el modelado de los objetos, por practicidad hice los modelos en low poly y colores planos, ya que la creacion de texturas a mano no es mi fuerte, quedando los siguientes modelos que se muestran a continuación. Ademas ocupe unos arboles y piedras descargados de la Store de unity

Entonces procedi a montar los elementos modelados en cada isla, asi me di cuenta que cada una de estas deberia tener su propio entorno aunque siguiendo las leyes de la vida real, teniendo una isla tipo bosque, una isla llena de arena y una isla con elementos mixtos, a continuación unas imagenes.

Todo muy bonito yeeey!, si claro pero ahora el mar se ve vacio y sin vida, entonces procedi a agregar elementos visuales para que cuando se este jugando se aprecien varios elementos y no solo un mar vacio, asi que agregue las nubes, barcos y lava dentro del volcan para un poco mas de realismo.

¡Hagamos un menu!

Por el amor al universo, sin duda esto me costo mas de lo que deberia y fue la parte que mas me estreso de todo, llegando al punto que estaba pensando ¡no poner un menu!, pero bueno todo con calma y poco a poco, que es lo que paso: debido a que es un juego VR los menus deberian aparecer siempre al frente de la vista y ya que no tenemos controles, la vista debe ser el puntero.

  1. Crear un objeto que sera el menu, en el mundo. Esto fue facil.
  2. Hacer que el menu siempre estuviera mirando hacia la vista del jugador, esto me costo mucho trabajo ya que al ser un mundo 360, el jugador podia estar viendo hacia cualquier lugar, pero luego de ponerme a estudiar un poco de matematicas (benditas matematicas) logre solucionar el problema.
  3. Crear un puntero para el menu que interactue con las opciones de este, me base en el circulito de stamina de zelda y por fortuna encontre alguien que hizo algo parecido y la implementacion fue relativamente facil

 

Asi quedo el menu principal y el menu del game over