This article relates to work performed within lectures and lab sessions of an AI module as part of the Games Technology undergraduate course at Coventry University (2016/2017).
In this week, there will be a look at the tools available for creating AI as well as their ability to interface with the world. To take a look at the functions of middleware AI tools, I will be assessing the uses of Kythera, implemented in the large scale upcoming space-sim Star Citizen
Kythera is a next generation AI middleware software package that is highly customisable, ready for implementation into CryEngine and Unreal Engine 4. The three main features it boasts is Game Integration, including the integration of the middleware with custom engines (though the codebase will need to be changed to fit requirements), Feature Development and Behaviour Development. It is software that is easily able to do more than one element of a game’s AI behaviour, as evidenced in Star Citizen; a space-sim with first person shooter mechanics when out of your ships.
To create it’s AI systems, Kythera preferably uses Behaviour Tree integration, made up as a combination of:
-
Signal and Exception handling
State machines
Re-usable blocks
However, it is possible to integrate FSMs and selection trees instead, or as well, to fit the needs of the game at hand. It can also make use of frame-by-frame diagnostic replay for in-depth assessment of the effectiveness of the AI.
World Interfacing
World Interfacing with the AI is how the AI reacts to elements it can see within the environment. It has two important techniques behind it, polling and event passing. Polling is the action of obtaining information from individual elements, such as player position or if the AI will collide with a wall and determining the correct solution to get around this issue. This gets information rapidly but depending on the amount of checks it needs to constantly check, this can quickly become a slow and intensive process at runtime. It is best used on small to mid scale operations. As a way of combatting this issue, the use of a polling station takes the information and caches it until it the information changes and returns the information back to that entity.
Event passing is an alternative method to polling, based around a central checking system, where changes are passed to the central system instead of locally. It is possible to make only specific ‘listeners’ for each event or data ‘hear’ the event occur, lightening performance load. A way to control this method of interfacing can be held in the form of an event manager. This will control all the events that can be performed at any time and use it to convey only relevant information to the right entities. They are generally better at making large scale games obtain relevant information more efficiently than with polling, due to the number of entities requesting, usually, larger amounts of data (therefore great for RPG games) however, the process does not take up any significantly larger amounts of time to compute the events.
A set of relevant links on this topic, straight from developers, can be found below.
Wikipedia List of some middleware (not extensive but a good start)
Why so wary of AI GDC Talk
Three ways of using Behaviour Trees for Game AI GDC Talk
AI Architecutre GDC Talk