Primer Proyecto Inteligencia Artificial
Primer proyecto de la asignatura Inteligencia Artificial en el cual teníamos que hacer uso de varias técnicas de la Inteligencia Artificial:
- Movimiento de NPCs mediante waypoints
- Toma de decisiones de los NPCs: estado patrulla, estado búsqueda y estado persecución
- Pathfinding: A estrella o A *
- Steering Behaviours
Pathfinding:
Queremos encontrar el mejor camino entre dos puntos. Para ello utilicé un Grid en el escenario, el cual es una serie de nodos con información en cada uno de ellos. Esta información es:
- Movimiento de NPCs mediante waypoints
- Toma de decisiones de los NPCs: estado patrulla, estado búsqueda y estado persecución
- Pathfinding: A estrella o A *
- Steering Behaviours
Pathfinding:
Queremos encontrar el mejor camino entre dos puntos. Para ello utilicé un Grid en el escenario, el cual es una serie de nodos con información en cada uno de ellos. Esta información es:
- G Cost = Distancia desde ese nodo al nodo de partida
- H Cost (Heuristica) = Distancia desde ese nodo al nodo final
- F Cost = La suma entre G Cost y H Cost
Este método también hace uso de una lista de nodos abiertos y una lista de nodos cerrados. Los nodos abierto son el conjunto de nodos que tienen que ser evaluados y los nodos cerrados son el conjunto de nodos que ya han sido evaluados.
Implementación del Pathfinding:
- Class Grid: Esta clase crea un grid de nodos (es decir, una matriz de nodos). Estos nodos tienen cada uno de ellos una lista de todos sus vecinos (como un grafo).
Además de esto, identifica lo que son las zonas "unwalkables" para evitar que el personaje atraviese paredes y/o obstáculos. Esto lo tendrá en cuenta a la hora de calcular el camino más óptimo. - Class Node: Los nodos tienen dos estados, "walkables" y "unwalkables"que se marcan mediante un booleano. Además, estos tienen H Cost, G Cost, F Cost y se guardan a su padre, para poder recorrer el camino inverso que será el resultado del camino más óptimo.
- Class Pathfinding: Tiene el nodo inicial, el nodo final, la lista de nodos abiertos (la cual inicialmente tendrá solo el nodo inicial ya que esta siendo aún evaluado) y la lista de nodos cerrados (la cual estará inicialmente vacía)
Algoritmo (en pseudocódigo):
El videojuego en sí consistía en escapar de la prisión sin que te detecten los policías. Este tipo de juego nos permitió implementar steering behaviours y otros elementos propios de la inteligencia artificial.
Comentarios
Publicar un comentario