So, my final semester at the University of Plymouth is here. I have two modules running this semester: AINT355 Industry Engagement and PRCO304 Computing Project (Honours Project).
For my honours project, I am working on a Dynamic AI NPC Combat System, which will enable me to create realistic and engaging behaviour for a 3D game. The agents created will have sensor-based information gathering, limited distance communication, grouping and a world-controlled task system. Though I had not initially researched in depth at the start of the project I have since come across a variety of resources and books that offer important information to my project. Such as a YouTube channel called AI and Games which is produced by Dr Tommy Thompson, a game AI lecturer/researcher – and “Artificial Intelligence For Games” by Ian Millington and John Funge.
Currently, I am working on the prototype navigation, communication and sensor systems that will mean I can build on the behaviour systems when the more complete versions are working; such as attacking, retreating, avoiding engagement, flanking etc. I am also working on a behaviour tree, thinking about the behaviours that I want the NPCs to have, the tasks required and then broken down to the specific actions needed to complete the tasks. I plan for the tasks to be controlled by priority (similar to how my research informs me) so that the individual agent requires minimal processing and instead follows the list of objectives/actions. I also plan to assign agents to groups, with a leader that gets the task from the game controller and then distributes orders to its nearby units that are in the same group. Similar to the way Halo or Horizon Zero Dawn collate units to follow commands, perform those commands and then move on to the next task. If the leader is killed (and by extension the task giver) then individual behaviour should take over, depending on their courage stat, health and a few other factors. However, if there is another agent in the group with a high enough leadership stat then they could assume control of the group and then give orders.
In order for the agents to seem realistic and somewhat predictable – with an aspect of randomness to create unique gameplay – the only information received by the agents will be based upon sensor gathering such as visual, audio and communication. I want to avoid information being sent from the game manager as it would seem unrealistic for an agent to have knowledge beyond its sensors. To do so, and in collaboration with the group/task system, the leader will have a ‘blackboard’ which holds information obtained by the group. This information may include; enemy Position, group task, navigation position and the state of the group. This should mean that each agent can access the required information without constant and potentially expensive calculations on each frame. Instead, they can communicate with their leader and get the knowledge required.
I am currently uncertain how to begin most of these features in a way that is computationally efficient whilst implementing a higher level of coding practice. I hope to include design patterns like observers and events, interfaces for agent creation, classes for data storage as well as the behavioural coding. However, I will continue to research and develop, following my plan on my project management system.
Lastly, I am still writing my brief research paper about AI In Games but hopefully, this will allow me to progress with the project with informed decisions and using more in-depth research.