reported by Ondřej Kužel on March 28, 2014

UNIT: Ondřej Kužel, QA Specialist, QA Dept.
TO: Arma 3 Dev-Branch Users
OPSUM: Taking on the whale: tweaking AI configuration options


To fight and move, command, flank and take cover; to aim and fire upon an enemy zigzagging across a fast-changing battlefield; to ultimately - on any terrain, without any predetermined paths or scripting - make independent decisions, the AI must take into account an immense number of variables. To achieve this, the AI has grown into an indeterministic beast living a life of its own. Semper AI. However, to strike that illusive (and subjective) balance between not being too lethal yet not too lenient also requires some measure of control. A well-defined set of default behaviours and access to ways of exacting influence upon these behaviours is, therefore, important for players and mission designers alike.

Taking both perspectives into account, we set out to improve the way we deal with these needs. So far, we've made some progress in terms of documenting and refining the basic values that affect our AI and in terms of giving players more meaningful control over setting up their game, making some tweaks and updates to the difficulty options. While our work isn't over yet, we wanted to share an update on the actions we've taken so far. We want to ensure we're on the right track, keep our community up to date with the latest changes, and gather any feedback that can help improve things further!


Our first step was updating documentation; Krzysztof Bielawski stripped the AI down to their parts and described how they work together with greater care. On an individual level, each AI unit is defined by its set of sub-skills. From a mission-making perspective - unless, of course, the designer didn't really care and the unit received a flat set of default values - explaining a little more accurately how these skills determine the ability of soldiers should enable a greater degree of control over them. It ain't much yet, but it ain't over either: you're always welcome to ask and learn more in our forums' dedicated AI configuration thread!

In fact, these 'raw' sub-skill values do not themselves alone drive AI behaviour. Rather, the value of each sub-skill is adjusted on mission start by another value - one that comes from the difficulty settings - a 'global' AI Level (see how here, to check it in-game use skillFinal). This so called 'AI Skill Level' (or just 'AI Level') previously enabled adjustments from 0 to 1 on any difficulty preset; it was configurable separately for enemy and friendly, with three predefined but modifiable values (and ranges as well) in each difficulty preset. From a player's point of view, this appeared to be more of a subject of research than a clear 'option'.


A quick poll about difficulty settings used among the players revealed - or, rather, confirmed - some issues in our difficulty configuration, including one top-level question: why do we have presets if each of them is customisable? Overall, we came to the conclusion that this state offered players a big, blunt weapon and, worse yet, didn't really tell players how to wield it, most often resulting in unpredictable and often unintended results. Now, together with Lord of UI, Vladimír Hynek, three fixed AI Levels have been implemented: Low, Normal and High (disclaimer: no, it doesn't help in MP yet). 'Normal' is the standard we work with and we tweak the AI to. Low and High are intended for reduced or increased challenge - turning e.g. a veteran AI into a trainee or a tier-1 operator. We have set the Low, Normal and High AI Levels to specific values (more details here). These may not be final. Internally, we have nothing to ensure such values are suitable for the majority of players; let's try to make it so together.

For your convenience, (and because you've asked for it and have always been a great help to us), we've added a 'Custom' AI level. This will allow you to freely adjust the Precision and Skill values. Several values (skillFriendly; skillEnemy; precisionFriendly; precisionEnemy) in the Arma3Profile have been made obsolete; in their place, skillAI & precisionAI are used instead. Remember, they are taken into account only if the selected AI Level is "Custom". aiLevelPreset is used to define selected AI Level in current difficulty preset (0 - Low, 1 - Normal, 2 - High, 3 - Custom). But here goes another disclaimer: by using custom settings, while you may see that some values may give better results than any of the 3 fixed levels (don't forget to tell us!), you can also completely break the AI. Your AI, your call.


The work we're doing now isn't about making radical or 'headline' changes, but creating a better foundation. We listen to you carefully (even if the results can be far from immediate!). Looking to the horizon, we have some additional, modest-scope work to further improve basic things like configuring difficulties - giving us a more solid base to build on further. One idea is to take a similar 'fixed presets' (plus one custom) approach to the general difficulty settings. Would that help in MP, so next time you go to a 'Recruit' server you know what to expect or you throw yourself into deep unknown Custom? Should we take a look into how is it possible to adjust individual AI units? Make presets instead of one unmarked 0.2-1 slider in the Create Unit window? Or, even, touch the very AI sub-skills themselves?

Trying to get inside the AI's mind has never been an exact science. It is the indeterministic nature of any issue regarding the AI that makes it a challenge to isolate, identify, debug, fix and then test properly. You don't want to know whether AI with y skill kills x enemies in a given t and y+0.216 skilled AI kills x+1 enemies. Rather, listen to you heart. Were you expecting a conscript freshman and have you just been sniped by someone with skills no less than Jason Bourne's? What's wrong? Can we cast out the mission design or the AI use? Is it the AI superhuman or superbad? Are the difficulty settings too high even if they are set to Low or vice versa? Have you found some better values? Tell us! Please let us know on FT or discuss it across on our official forums (here if it relates to the AI behaviour or here if it's more about the configuration and levels).