AI is critical for immersion in games. It creates the feeling of being there. It creates the context for the game experience. This places special demands on the AI to behave consistently human-like, without sacrificing performance.
Apex Utility AI
Apex Utility AI is an advanced hierarchical scoring-based artificial intelligence (AI) framework for computer games. The AI is capable of advanced abstract reasoning using simple scoring functions to evaluate complex situations. Unlike other technologies such as Behavior Trees and Finite State Machines, the AI allows for much simpler design, easier debugging, and better handling of unforeseen scenarios. The principles of the AI have been used in some of the best AIs in games, including titles such as Killzone and F.E.A.R.
Apex Utility AI ships as a high performance, load balanced, zero GC alloc AI foundation, that can be used directly inside the Unity editor and can be extended with templates for many game genres.
Extendable using C#
Apex Utility AI is extendable using C#, with industry-standard documentation, scripting guides, API and extension points.
Saving countless hours for AI developers
Apex Utility AI is supported by game AI frameworks from Apex, saving countless hours for AI developers and allow focus on making great AI.
Built-in Editor that is simple
The Apex Utility AI has a built-in Editor that is simple, powerful, and intuitive, and allows for in-scene runtime visual debugging.
Apex Utility AI offers a lightweight framework
that is very flexible, optimized for high performance,
and most important it is easy to use.
How does it work?
The Apex Utility AI works by making several decisions possible to the agent, and then scoring each potential decision. The Utility AI then selects the high scoring decision and has the AI perform the action associated with this decision.
An example of how the Apex Utility AI works could be to evaluate whether the agent should attack, take cover or load his weapon. In a simple scenario, this might be solved by an if-then statement, such as if the enemy is visible then shoot. However, what happens when there are multiple conditions to take into account such as whether the weapon is loaded, how many enemies there are, and whether we are hurt, and need to take cover? In these complex scenarios, the number of conditions and the potential interactions between them might become so complex that we cannot plan for all scenarios. Furthermore, as the game development processes, we need to be able to extend our AI design, without having to redesign it every time.
In the Apex Utility AI you simply assign a score or a scoring curve to each action and the Apex Utility AI selects the best option. Simple, powerful, smart.
Example of utility curves
In the Utility AI you assign a scoring curve or just a simple score, to each option. The highest score wins, and that’s the action the AI will execute.
Example of a decision to fire
If you need to add an additional dimension, such as the desire to flee based on the relative strength between allies and enemies, you simple add an additional curve. If you want to have different personalities, for the brave and the not-so-brave, you simply shift the curve from left to right. You can change the curves, you can add many underlying factors into one score, etc. to simulate very complex decision-making processes.
Apex Utility AI – Editor
The Apex Utility AI comes with an advanced editor that works inside the Unity editor. The editor provides one interface to handle all Utility AIs and is loaded with advanced features. The editors allows you to visually connect different utility decision points in a hierarchy, and make advanced decision sequences and decision trees.
This can be used for both simple and complex AIs, and is packed with features including different selection algorithms, connecting to other AIs, and visual runtime debugging, with support for breakpoints.
Multiple AIs can be run in parallel to have characters in the game execute multiple tasks, and all AIs can be executed via components (Monobehaviors) or as regular C# objects. By default, all AIs are executed using the Apex Loadbalancer to ensure that AI workload is distributed across frames.
Apex Utility AI Editor
key features include
The ability to handle very complex AIs in one screen
Breakpoints and Conditional Breakpoints
What makes the Apex Utility AI so powerful?
The Apex Utility AI is able to reduce very complex decision making problems to very simple AIs that are easy to design, debug and extend.
The Apex Utility AI is capable of prioritization. Consider for example a decision to attack. The next question is who to attack? Suddenly, every available target needs to be evaluated and prioritized, in order to select the best target. This is easily done with the Apex Utility AI with a simple loop using the same scoring functions on all targets, such as whether the target is in range, whether it is in cover, whether it is target etc. The target with the highest score is then selected.
In a situation where there are multiple conditions to consider such as enemy line of sight, covers, and teammates, the Apex Utility AI can make the best decision under all circumstances. Based on a sample of potential destinations within the Apex Utility AI’s planning horizon, each destination is assigned a score based on whether the position is in cover, whether enemies have line of sight, etc., returning the highest scoring position as the destination.
Coordination and Group Behavior
Group coordination is very easy to implement using the Apex Utility AI. Group members can evaluate destination and movement based on distance to other group members, good cover positions and other factors to simulate real combat movement such as spreading out, while still making intelligent choices and maintaining the best combat formations under different circumstances.
Instead of the standard scripted dialogues, the Apex Utility AI can support meaningful conversations created dynamically based on the game context. NPCs (Non-Player Characters) can evaluate what to say on the basis of their current situation, and select from sentences given the utility functions. Parts of the sentences can be replaced by words that express their state of mind, reaction, or specific offers based on the options available and the underlying utility scoring.
The utility-based reasoning can be extended to more abstract actions such as choosing what goal to pursue given several possible goals. Each goal can be given a utility curve and the AI can thus select the goal with the highest utility as the current goal to pursue at the given moment.
The Apex Utility AI is very easy to test and you know exactly what you get. While being capable of advanced emergent behaviour, all desired behaviour can be tested as the AI is 100% predictable given the same input. This means that standard tests can be automated, even when the AIs and the underlying code have been modified. However, if unpredictable behaviour is required, evaluation functions with randomness, learning, or feedback can be implemented and run within the existing framework of the Apex Utility AI.
The Apex Utility AI It can work with incomplete information. The Apex Utility AI is so robust that it always picks the best solution given the available input. It does not need to have complete information about all enemy positions to find a good tactical position, it does not need to evaluate all positions on the map to find a decent destination for its next move.
One Framework, Multiple Uses
The Apex Utility AI uses the same framework for very simple and very advanced AIs. The Apex Utility AI can be used to create very simple AIs for grunts in an RTS game and very advanced AIs for agents in an FPS game. It’s a robust, highly controllable, yet easy to use and high performance framework for AI.
Can be extended as new features are required. The Apex Utility AI is easy to extend where it matters. New AI modules and new evaluation functions can be added to the code and added to existing AI configurations without breaking other parts of the AI.
Can work with many different AI tasks. The Apex Utility AI is a multipurpose AI. You can evaluate whether to move, kill, flip a server switch, collect an upgrade, pick flowers, or whether to make coffee or not. It is extremely versatile, and thus can fit any game genre with very powerful and easy-to-understand AI. There are no arcana algorithms, unmanageable trees, or unintuitive concepts. All parts are visible to the game designer and have sensible names that do what they describe.
Can compare apples and pears. How do you make an agent select whether to kill or pick flowers? Or to cut wood or dream about going to the beach? No problem. The Apex Utility AI reduces all decisions to one score for each option that can be evaluated, and the best score is always the decision the Apex Utility AI takes. The magic here lies in the evaluation function framework.
Apex continually ships genre-specific AI modules working on the Apex Utility AI foundation. These modules incorporate best-practices and state-of-the-art solutions for specific genres, and thus provide professional class AI and save significant cost and time for game developers.
Planned releases are:
- First-person shooter AI framework
- Real-time strategy framework
- Role-playing game framework
In addition to the genre-specific frameworks, specific add-ons are planned, including:
- Dynamic dialogue module
- Dynamic missions module
- Personality module
- Tactical reasoning
Apex Utility AI Main features
Advanced multipurpose utility AI
Parallel and hierarchical configurations
Capable of creating very simple behaviour fast and very advanced behaviour when needed
Low memory footprint
Zero garbage collection
C# programming language
Modularized and high reusability of configurations
Can easily be extended by developers
Easy to debug
Easy to test
Powerful Mecanim-style editor
Custom inspector editors
Serialization for save / load for persistence
Seamless integration with Apex AI products
Supported by future Apex game-specific AI releases