Kokomaru Development

Mapache Journey

Pathfinding y mas


Tipo de proyecto: Practica personal

Descripcion del proyecto:

Es un juego sencillo, donde el jugador controla a un mapache que esta buscando alimentos paara llevar a su pequenio nido donde tiene a su esposa e hijos, para esto, tiene que explorar sus alrededores, en el parque nacional donde vive, para robarle la comida a los campistas o visitantes que encuentre, esto mientras se esconde y evade a los guardabosques y policias que patrullan la zona.

Fotos del proyecto:

-Deteccion del terreno solido
-Mapa generado aleatoriamente
-Esconderse en la fauna
-Inventario

Proceso de desarrollo:

En un comienzo era un juego que planeaba terminar en las vacaciones de verano del anio 2020, tenia a 2 artistas que fueron los que tuvieron la idea de hacer un juego para ganar mas experiencia con lo hecho, por lo que decidieron acercarse a mi para discutir el proyecto y ver que podiamos poner como metas finales.

Al ser el unico programador del juego, hice una mini meta semanal que tenia que tener lista para el juego, empezando conlas mecanicas bases del jeugo que eran moverse y esconderse. Estas eran bastante sencillas y no me tomaron mucho tiempo en hacerlas, lo que si me tomo tiempo trabajar fue el sistema de mensajes para el juego, ya seea cuando te agarren, rtecojas un item o cualquieir mensaje adiciional que sea temporal y se tenga que mostrar en la pantalla por un breve tiempo.
La manera en que funciona este sistema es que utilizo estas funciones que estan en mi propia libreria, que luego importo al game manager para solamente preocuparme por mandarle los parametros, esto resulto bastante bien, ya que es muy dinamico y permite crear una cantidad infinita de textos usando una misma funcion y que aparte de eso, tiene la versatilidad de perzonalizarse.
-Metodos en la clase de utilidades
Con esto puesto dentro del game manager ya resolvi todo lo relacionado con la generacion de texto, por lo que despues de terminar eso, pase a trabajar en el sistema de inventario del personaje.
Para el inventario utilice una generacion dinamica que pudiera permitir el juego expandirse si es que llegasse a ser necesario, por lo que generaba en el canvas un objeto que se encargaba de redimensionar el espacio de la UI para el inventario, esto ya sea al generarse el mapa o al ganar un upgrade de slots del inventario.
Para almacenar la informacion del obnjeto que se recogiera simplemente obtuve una referencia del mismo obejto que se recogia y agarraba su imagen y la colocaba en la UI. Al soltar los objetos, simplemente se reposicionaba el objeto tomado en el punto del jugador y se eliminaba la referencia del inventario. Si se llevaban los objetos a la base del jugador, se eliiiminaban y se generaban uno nuevo en el mapa.
-Gamemanager
-Generacion del FOV
En cuanto al FOV de los enemigos, utilice una forma diferente que vi hace tiempo, en donde el FOV se desarrolla creando los meshes de los triangulos, la razon por la que hicec esto, es porque queria probar si era mas eficiente hacerlo de esta manera que hacerlo de la manera mas sencilla que es tener un raycast siempre en el jugador y que solo se active si el jugador se detecta en rango.

Debo decir que es una manera graciosa de manejar el POV, puesto que tienes un control enorme en que tan precioso es el FOV de tu enemigo, ya entre mayor sea el rayCount, mas preciso sera el FOV, debido a que tiene mas triangulos para ver. En resumen, el codigo solo crea el primer triangulo y crea sus vertices y repite ese proceso, siempre avanzando en la siguiente posicion del siguiente triangulo. Quiero creer que este es un proceso mas pesado que lo habitual, pero es mas versatil dependiendo de a que escla se use.
El pathfinding fue creado utilizando una libreria gratuita que permite escanear un layer entero para crear el grid que estaran utilizando los agentes para moverse, este escaneo exluye cualquier obnjeto de otro layer que encuentre y en basee a los parametros del tamano que se coloquen, determinara el espacio en el cual NO puede caminar. Este escaneo se ejecuta antes de inicar el juego, por lo que despues que se crea el mapa, se realiza el escaneo.
Para finalizar, otra de las cosas importantes fue el desarrollo del mundo, para estee utilice diferentes espacios de terreno que una vezpuestos en escena, generan la fauna / items sobre ellos para despues colocar a los enemigos y para finalizar hacer el mapping del terreno para que los enemigos sedpan por donde pueden pasar y donde no.

De ahi en mas no hay nada mas relevante que haya sido nuevo para mi para hacer, hubo una que tora cosa como el esconderse y recolectar los objetos que son cosas que realmente fueron muy sencillas por lo que no veo necesario detallar aqui. Por desgracia los artistas no pudieron seguir trabajando y este proyecto se quedo pausado indefinidamente, pero espero poder retomarlo y terminarlo en el futuro con todo el arte completo.

Volver a arriba