villagra-abp / Iki

[ABP16] Juego de puzzles y sigilo que hace uso de la perspectiva.
GNU General Public License v3.0
0 stars 1 forks source link

Entrega Hito 3: V1 - Ikigai #44

Open Juansanalme opened 7 years ago

Juansanalme commented 7 years ago

Información general:

Entrega del hito 3 para la asignatura de videojuegos 1.

Todos los entregables se prueban en el mismo archivo ejecutable, por lo tanto el mismo archivo de proyecto. En caso de que algún entregable tenga una variación para la ejecución, se indicará en la descripción del mismo y se adjuntará el ejecutable y el proyecto con dicha variación.

Para el caso concreto de los item V1.10 (Sistema de búsqueda de caminos y control) e item V1.23 (Sistema de Waypoints para pathfinding continuo), se ha desarrollado un único sistema, por lo que el vídeo explicativo y el código fuente adjuntos para estos entregables serán lo mismo. Sin embargo, se detalla la diferencia entre ambos, con una descripción para cada uno en la parte de entregables de este issue.

Aunque todo el código fuente se encuentra en la carpeta "Proyecto", en cada entregable se adjuntará el código fuente que le corresponde, si es posible.

Entrega general Aquí un enlace al archivo comprimido que contiene, por un lado, el proyecto para compilar; y, por otro, el ejecutable ya compilado para probar.

Controles del Juego

Entregables:

Dividimos los entregables en dos grupos principales:

Entregables pertenecientes a anteriores hitos:

Item V1.01 - Documento de diseño de mecánicas de los NPCs

Enlace al .pdf ubicado en google drive

Item V1.02 - Documento de diseño de sistemas de toma de decisión

Enlace al .pdf ubicado en google drive

Item V1.03 - Documento de diseño técnico de la arquitectura de la IA

Enlace al .pdf ubicado en google drive

Item V1.04 - Diseño de requerimientos y funciones de red

No realizado

Item V1.05 - Diseño técnico de funcionamiento del motor de red

No realizado

Item V1.06 - Gestión de estados de la IA con Máquinas de Estados

Conceptos previos Cada instancia de la clase Enemigo contiene un puntero a una máquina de estados, que controla el estado de dicha entidad. Cuando un estado termina, controla el cambio de estado a través de la máquina.

Un estado puede terminar si su duración es finita (una secuencia de acciones específica), o si su duración es infinita, que termina cuando otro agente solicita el cambio de estado.

Enlace al comprimido .zip subido a drive Contiene el código fuente del entregable y un vídeo explicativo.

Item V1.08 - Sistema de toma de decisión con Lógica Difusa

No realizado

Item V1.10 - Sistema de búsqueda de caminos y control (Pathplanning/following)

Descripción: El usuario que solicita el camino puede ser un Enemigo o el Jugador. Lo pide a la clase Pathplanning la cual recibe la posición de destino y una lista de PathEdges. En el path utilizamos ejes, en lugar de nodos, lo que sería útil si, por ejemplo, hay que cruzar un rio y el eje que une los nodos de cada lado se le puede asociar un comportamiento para que el protagonista camine diferente.

La clase Pathplanning calcula los nodos más cercanos a la posición de partida y a la de destino. Se controla que se use solo cuando el vector de dirección desde el origen hasta el destino está obstruido por paredes, lo que hace que solo use el camino cuando no puede ir en línea recta sin chocarte.

Utilizamos un grafo y un algoritmo para crear un path, y a ese path se le añade un smooth para que elimine el mayor número posible de waypoints y conseguir una mayor sensación de realidad. Si en un futuro se considerase necesario, será posible crear una matriz con los costes precalculados de ir de un nodo a otro.

Enlace al comprimido .zip subido a drive Contiene el código fuente del entregable y un vídeo explicativo.

Item V1.17 - Sistema de gestión de eventos (Trigger System/Event Manager)

Descripción: El sistema es el siguiente: al inicializar la escena se lee un fichero .tmx en formato xml de tiled. Este tiene una capa de objetos en la que se crean los triggers que queremos en el mapa, y se les asigna un tipo.

Para la lectura se utiliza una clase TriggerFactory, no usa el patrón de fábrica abstracta pero es una interpretación similar. Para cada objeto que la clase TriggerSystem lee en el .tmx dentro de la capa de triggers, se hace una llamada a TriggerFactory, que se encarga de crear el trigger según el tipo que corresponde y lo devuelve a TriggerSystem para que lo registre. De esta manera, si queremos añadir más tipos de triggers al juego solo hay que añadirlo en el fichero .tmx y ampliar la clase TriggerFactory consecuentemente.

Durante el bucle del juego, la clase TriggerSystem comprueba las regiones de cada trigger activo con cada entidad del juego, las cuales recibe de la clase EntityManager.

Enlace al comprimido .zip subido a drive Contiene el código fuente del entregable y un vídeo explicativo.

Item V1.18 - Sistema de percepción sensorial (vista, oído, olfato, canales…)

Descripción: No tenemos un sistema como tal. Calculamos con un trigger si los enemigos están en la zona de ruido y te oyen, si te estas moviendo rápido. Por otro lado cuando nos acercamos a un enemigo, si entramos en su campo de visión que se calcula con vectores y ángulos podemos deducir si nos está viendo o no, y que nos siga con la mirada.

Item V1.22 - Pathfinding estratégico/táctico

No realizado

Item V1.23 - Sistema de Waypoints para pathfinding continuo

Descripción: El sistema es el siguiente: al inicializar la escena se lee un fichero .tmx en formato xml de tiled. En la lectura de este fichero tenemos los waypoints, elegidos arbitrariamente y creados en una capa de objetos; creamos los nodos y a su vez se crean los ejes, con el coste igual a la distancia entre ambos, para los nodos que conectan entre si. Hecho esto se añaden al grafo, en la clase SparseGraph.

La clase SparseGraph comprueba que los nodos y ejes que añadimos son correctos, y contiene un vector de nodos y otro vector de ejes de cada nodo, los cuales se recorren con iteradores. Además, en la clase Algoritmo se utiliza el A* para determinar la ruta más corta entre dos posiciones.

Como se ha especificado en la información general, la entrega de este ítem se adjunta al ítem V1.10.

Entregables pertenecientes al hito 3:

Item V1.16 - Comunicación simulada básica entre NPCs (Blackboard)

No realizado

Item V1.19 - Sistema de memoria de estado y reacción para NPCs

No realizado