Gif of Final Graphics Project

Overview

Advanced AI involved exploring concepts and implementation that could elevate how believable an agent is. This project contained three major sections Chess AI, Squad Behaviour and Goal Oriented Action Planning. This project demonstrated that AI is less of a fixed solution and can be highly depending on the goal.

Grade: First

Rules of the Game

Chess AI involved a lot of research, identify areas that could be improved upon or scored to make the AI more intelligent. This involve Scoring the board position for each piece, the number of moves the piece could make, number of attacks the piece can make and the global score of whenever a piece is taken. This accompanied with the minmax algorithm, and playbooks the AI opponent is able to look for the best move considering the future possible moves.



(I am very bad at chess)

Working Together

Squad Behaviour was about creating a seemingly interconnected agents that would response to different events. using MARPO (Movement, Avoidance, Routing, Planning and Orders) I created two stacks an idle stack that contained the behaviour for the wandering state, mimicking hunting for the player, and the reactive stack which would always be checked first. The reactive stack will be empty until a behaviour is added for this example there is a ‘spotter’ zombie and three ‘hunter’ zombies, the spotter can see the player from further away and ‘scream’ to alert the other zombies to the last known location of the player, the other way is the zombie sees the player themselves.

Future Planning

GOAP involved creating plans that the agent could execute if the requirements are met. This could be building a house but if the agent doesn’t currently have any wood, then the next step of the plan is looked at which obtains the wood needed. It’s important to note that the plan looks at the final task first and works backwards until a task can be completed. However, this approach can be quite ridged and each and every plan must be considered. This is where I used A Directed Acyclic Graph or DAG, which is a tree with no cycles between nodes, to expand the useability but also to reuse tasks that might be needed for multiple goals.