@ fisj
Yes – the Utility AI concept was not invented by Apex, we are just making a good implementation of it for the indie game developers, using Unity. So, sticking to our core mission.
The Apex Utility AI is inspired by many sources. Dave Mark have made some really nice introductions to Utility AI (the example below is inspired by him), so we recommend checking him out for a simple explanation of the utility AI principles. We can also recommend checking out Guerrilla Games presentation of the Killzone tactical AI, which is a very nice example of utility-based tactical movement (we will include sample code in the Apex Utility AI for this type of reasoning).
Utility-based theory has been around for decades, and have been used to great effect in many economic theories for example. Utility-based systems has been used in everything from classifying mental diseases in psychiatry to locate where to dig for diamonds. It has been used to great effect in games such as Sims, Civilization, and the Killzone series. It is also closely linked to fuzzy logic, but perhaps more intuitively understood, since its based on scores rather than intersecting “zones”.
Fundamentally, it is a design-based AI. Meaning that you design the AI, as opposed to e.g. learning-based, search-based or evolutionary algorithms. Hence, it’s in the same class as finite state machines and behavior trees. However, the Utility AI can handle more complex decision-making, and can make decisions in areas were behavior trees and finite state machines just don’t cut it. For example is areas such as prioritization, spatial reasoning, incomplete information, or making choices based on multiple, dissimilar inputs.
The following is a classic decision-problems in e.g. an FPS game, and is often used to explain how Utility AIs work:
Deciding on the right action, can be based on scoring each action. However, the problems is that basis for decision-making can be very different for each action. Taking cover can e.g. be depending on the health of the AI and the distance to nearest cover. Firing can be based on the proximity and number of enemies, or e.g. good firing opportunities. And whether the load the weapon be based on the current ammunition count in the weapon etc. All very different inputs that need to be compared.
The Utility AI solves such as problem very elegantly, either with curves (such as the above) or with point scoring systems (see e.g. below). The latter is sometimes easier to understand, design and implement, so we end up using the paradigm a lot in the implementations we have done in the process of making the AI. We will have several examples with the Apex Utility AI, where we apply these principles to many complex problems of AI. Earlier in the thread you can see some of the areas we will publish tutorials and concrete AI implementations for in the coming weeks / months.
The above example is very simple, in many of the games we have working on, you need more complex decision-trees and decision-matrices to make really good AI. Hence, the Apex Utility AI comes with several tools to making complex and good AI simple. Including advanced editing, parallel execution, out-of-the-box behaviors, best-practices, visual debugging etc.
You can example of an AI here:
Interestingly, we also found in our research prior to making the utility AI product that the games with the best reviews for AI, and at the same time the games where the AI programmers were most satisfied with their AI, happened to be based on Utility AI systems.
So, in many ways utility AI is a hidden gem, which is why we wanted to bring it to the indie developers.
So stay tuned, and let us know if there are concrete problems you are dealing with in your game, that you want the AI to solve. It’s our hope the Utility AI will enable a whole new generation of games with great AI.
/The Apex Team