State of the Game #43 : AI System Overhaul [Release version 0.3.12]

StateofTheGameHeader_JAM

Hello everyone and welcome to this weeks state of the game!

First things, go grab the latest build from your User page.

So what is new this week you might ask? Quite a bit! The entire AI system got a complete overhaul which is very exciting news. While it has a basic implementation now, it really expands on what you can expect in the future.

More details on how the new AI works:

 

The old AI system was completely individual based. A bot would asses it’s surrounding, try and find a target, then start attacking it. Pretty simple stuff, but it works ok for simple game modes, like the Arena. Once it is in more complex game modes, it became apparent it was not enough.

So, the first thing I created was a Team AI Manager. This is a completely different AI system that is tasked with monitoring the overall game rules and state of the game world and acting on that. Now, the way the Team AI interacts with the game world is a bit unique, as it actually doesn’t do ANY of the work. It is strictly an observer that acts as an overseer. What is DOES do, is take the state of the game play, evaluates it, then picks what strategy it feels would be the best for winning the game.

Enter, the Strategy module. Strategy modules are plugins that the Team AI can utilize. They take the current game state, and use a very defined set of rules to try and turn that game state into a win. Now, because each AI bot represents a player, and I want them to still be individual (and develop a personality down the road) , the strategy module cannot just TELL someone to do something. It simply requests it. There are several different types of requests, from attack, defend, and guard requests, to actual M.A.V. loadout requests. By issuing these requests and tracking them, the strategy plugin can start to create a coordinated attack.

Which leaves the last link in the chain, the M.A.V. bot AI. This is actually sub divided into 4 separate modules, but they work together as a whole. The botAI is responsible for looking at the available order requests, evaluating its individual situation, and then accepting an order and working to complete that task. If it gets into trouble (say walks into an ambush on the way to attack) it can cancel its job, freeing it up for another AI to take over, while it deals with the situation at hand. Once things calm down, it will again seek to fulfill the requests of the strategy module.

This system was designed to be a flexible as possible, while also drastically reducing the development time for handling more complex situations. For example, because strategies are plugins, it is very trivial to create a new type. They also are not required to be super complex, as they are just a small part of the emergent strategy of the team. They are also swapped out on the fly if they are deemed to be not working. For example, with just 2 plugins (everyone attack, and everyone defend) it is possible to already get complex team based strategies. The modularity of the individual AI also allows from some great tweaking for persistent AI personalities (maybe you have ‘Alex’ on your team and they always go for the Attack orders).

Also, it is possible to extend this system into a gameplay system that would allow you to issue orders to your AI team mates as well.

For Next Week :

As voted on in the message board, I will be working on part balancing, level balancing and general polish / feedback features. I am looking forward to it! See you then!

Leave a Reply