Our products are used to:
_reduce the uncertainty of Machine Learning models,
_prioritize enterprise data efforts,
_support experts in the ML loop,
_improve the quality of ML models, especially in multi-class settings with complex ontologies,
_reduce data footprint and compactify ML models so as to be used by the Internet of Things applications,
_improve gaming experience via more challenging and realistic AI in games,
_create intelligent advisory systems from pre-compiled building blocks.
Tactical Troops: Anthracite Shift is a top-down, turn-based game that mixes tactical skills and the excitement of 80’s sci-fi movies. Created by QED Games Team of QED Software, it features many mechanics posing a great challenge for AI controlled characters, such as gridless movement and the topic of this article – teleportation. Link to Steam.
Opponent AI in Tactical Troops has been implemented using Grail. Grail is a multi-platform, modular, universal framework, allowing for implementation of advanced AI in video games. Using methods such as Utility AI, Monte Carlo Tree Search or Planners in connection with advanced knowledge representation using blackboards , Grail is able to improve the behavior of machine-controlled players’ and make game experience more challenging. Below you can read how our AI handled teleportation in Tactical Troops: Anthracite Shift.
Humanoid opponents in Tactical Troops are implemented by combining Utility AI with Monte Carlo Tree search. First, Utility AI is used to establish high level strategic goals like eliminating a unit or securing an important position.
After assigning such goals to each AI unit, a simplified game representation is generated, consisting of all possible actions that the units can perform. This representation serves as a simulator for Monte Carlo Tree Search, a very clever game tree search algorithm implemented in Grail framework. The inner workings of MCTS are beyond the scope of this article, but if you’re interested, have a look at this Wikipedia page.
For the purposes of this text, you just have to know that we need to somehow produce a set of current and future (but with a limited time horizon) possible actions, based on the current game world state. Below is the explanation of how we generate actions related to one of the most important mechanics in Tactical Troops – teleportation.
The explanation of our solution to this problem consists of 3 main parts:
For the purposes of AI agent navigation, the terrain is first represented as a regular grid with various movement penalties (e. g. like penalties for obstacle mass concentration). However, to make the use of teleporters possible, regions around them are first "carved out" of the grid, then such modified grid gets converted to directed graph representation and finally we add custom graph nodes (with their positions in centers of teleporters) that are connected to rims of the carved regions and to corresponding paired teleporters. To understand how this "carving out" and connecting is realized, see the picture below.
The details of creating these connections are as follows:
To let our AI simulate its possible actions we rely on a pretty elaborate algorithm for continuous space discretization, based on pathfinding to important spots on the map. Describing it in detail would take way too much time (BTW, we're doing just that in an upcoming paper). Suffice to say that each AI unit is aware of possible paths leading towards their enemies and other important targets through teleporters, so it is able to generate move-and-shot actions by performing all necessary lines of fire checks from points on these paths.
To generate direct shots through teleporters, we also rely on space sampling by pathfinding, described in the previous section. From each point on a unit's so-called tactical path (think: a path from the moving unit to an important position, like a control point or an enemy. The points of this path will be called tactical points) the following procedure is carried out:
Everything described above also applies to throwing grenades, albeit with some additional complications, like taking into account the explosion radius and other parameters.