Software should suit you. Grail does. You can change it, mix it, and it will continue doing its job.
Grail’s AI is developed with care by brilliant researchers who bring the quality of academic knowledge to give you proven results.
You shouldn’t have to get a PhD to use software. Grail gives you a clear GUI and extensive documentation for all your needs.
The AI in Tactical Troops is running on Grail thoroughly.
Tactical Troops is a squad-based tactical game with turn-based gameplay and continuous movement
without a grid. It fits the frame of an ideal showcase of Artificial Intelligence. Bots need to
tackle many challenges in real-time, e.g. choose their current objectives, reason in a dynamic
select the right weapon or gadget for the job, attack, take cover, support, etc.
Grail has allowed us to develop AI in Tactical Troops in a modular fashion using two of its three main algorithms. On the top-most level, there is a strategic AI operated by Grail's Utility System. The strategic component sets orders for units e.g. where to go, who to cover or attack. The orders are passed to the tactical AI, which is implemented using Grail's simulation-based methods. The tactical AI plans each turn within certain constraints set by the strategic layer. Both strategic and tactical components operate with their own set of behaviors. They interact with the environment as well as with each other using the blackboard architecture. Publication 2021-04-15 by QED Games.
First prototypes of Grail's algorithms were used in Ancestors Legacy, a real-time strategy game
by Destructive Creations. For this project, we developed a bot for online multiplayer games,
capable of controlling up to five players at once. The approach used in Ancestors was based on a
multi-agent system, using utility-based AI to perform various tasks, such as attack target
selection on strategic and tactical levels or determining the right build order. The ideas and
experiences gathered during our collaboration served as a cornerstone for the techniques used in
the final version of the framework.
Yes. It can be achieved either by substituting reasoners for more/less detailed ones or it is possible to change data on entity's blackboard to make it consider more/less relevant data.
Yes. You can do it in two directions.
1. Executing behavior trees from within Grail: Wrap the behavior tree execution in Grail Behavior. Then, it can be provided to reasoners or manually assigned by the user. Idea: the behavior trees may represent complex actions or scripts, and Grail decides when to execute them.
2. Executing Grail behaviors from within behavior trees: Put Grail reasoning mechanisms in leaf nodes of your Behavior Trees. Here, you can control which aspects Grail should focus on by narrowing its space of choices with the use of behavior trees. Idea: the behavior tree leaf-node may represent an attack behavior. Then, Grail will decide how exactly such an attack behavior should be performed.
Yes, all that needs to be done is to make animation system accessible from given Grail AI Entity (i.e. push it on entity's blackboard). Then behavior can interact with animation system in all its methods. For example behavior can be prolonged for animation duration, or when behavior is starting it's execution it can cause animation to be played. If animation is more complication and consisting of few phases behaviors can be connected into a sequence, where each one of them will manage one phase of animation.
When constructing AI Manager user can provide number of worker threads which will iterate over registered entities, updating them simultaneously. If user chooses not to do so, all operations on this manager will be done synchronously.
Depends on how complicated you need it to be. Simple AI reasoners will not need much memory, but advanced game simulations will cerainly need more.
However, Grail allows you to create a Utility AI agent, for which the equivalent behavior tree would need to be more memory intensive.
Yes. All you need to do is to tweak their reasoners.
It is, you just need to take mobile limitations into consideration while designing Grail reasoners.
Yes, grail behaviors are terminated mainly in 3 situations: 1. behavior sucessfully finished 2. behavior is no longer legal and there is no way to continue its execution 3. behavior is overriden with another one, either manually or because reasoner thought that another behavior is more suitable to current situation.
We provide plugins for Unity and Unreal Engine 4, which means that in those engines Grail should work out of the box. Hovewer Grail should work with most of the available game engines as long as they can be scripted in either C++ or C# and can include external libraries.
C++ and C#.