AI Skill – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
m (removed wip)
(36 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{wip}}
{{Informative|Some information on this page were not confirmed by BIS!}}
[[Category:AI]]
[[Category:AI]]


[[File:AI_skill_and_level.png|thumb|AI skill/level/final skill]]
[[File:AI_skill_and_level.png|thumb|AI skill/level/final skill]]
==AI Skill==
The AI is characterized by a set of [[Arma 3 AI Skill#Sub-Skills|sub-skills]]. The [[skillFinal|final AI skill]] is unfluenced by [[Arma 3 AI Skill#Changing AI Skill|several factors]]. Additionally each sub-skill is then interpolated with the values set in CfgAISkill.
== Changing AI Skill ==
=== Players ===
[[File:A3_AISkill_Options.jpg|thumb|Difficulty Menu]]
[[File:A3_AISkill_Options.jpg|thumb|Difficulty Menu]]
* As player one can only influence AI skill by changing the global skill settings '''Skill''' and '''Precision'''. One has also the option to choose one of the default '''AI Levels'''.
**Skill: Influences multiple sub-skills related to the AIs "intelligence". If the value is set too low, the AI will be dumb.
**Precision: Influences sub-skilles related to AIs precision. If the value is set too high, the AI will have a super human precision. Lower values result mostly in interesting fire fights.
{{Informative|Changing the AI difficulty settings during a scenario will have no effect until the scenario is restarted.}}
=== Scenario Designers ===
[[File:A3_AISkill_EdenEditor.jpg|thumb|Skill setting in [[Eden Editor]]]]
[[File:A3_AISkill_EdenEditor.jpg|thumb|Skill setting in [[Eden Editor]]]]
==Overview==
*A scenario designer has four ways to influence the AI skill.
This page contains all information about Arma 3`s artificial intelligence, short AI.
**By changing the skill slider in [[Eden Editor: Object#Attributes|Eden Editor]] for each individual unit.
 
**By using functions like [[BIS_fnc_EXP_camp_setSkill]] or [[BIS_fnc_EXP_camp_dynamicAISkill]] to set the skill of multiple AI entities at once.  
==AI Skill==
**By using commands like [[setSkill]].
**By using the '''Set Skill''' module which allows to change the skill of AI entities for example when a trigger was activated.


The AI is characterized by a set of [[Arma 3 AI Skill#Sub-Skills|sub-skills]]. Each sub-skill is influence by one of the following:
=== Modders ===
* Inherited from the value set via [[setSkill]]
* A modder can influence the AI skill by overwriting [[Arma 3 AI Skill#CfgAISkill|CfgAISkill]].
**{{Inline code|_unit [[setSkill]] 0.8;}}
* Skill set in [[Eden Editor]]
* Exact value set by the [[setSkill]] command
**{{Inline code|_unit [[setSkill]] ["reloadSpeed", 0.8];}}
* AI skill is also influenced by the global setting in the difficulty menu.


Each sub-skill is then interpolated with the values set in CfgAISkill.
=== Server Admins ===
* Server admins can change the AI skill by changing the '''aiLevelPreset''' config parameter found in server config. See [[server.armaprofile#Arma_3|Arma 3 Server Profile]] for more information.


==Sub-Skills==
==Sub-Skills==
Line 54: Line 63:
| courage  
| courage  
||  
||  
* Affects unit's subordinates' morale (Higher value = more courage)
* Affects unit's subordinates' morale  
||  
||  
* Higher value means the AI has got more courage
* Higher value means the AI has got more courage
Line 78: Line 87:
| spotDistance  
| spotDistance  
||  
||  
* Affects the AI ability to spot targets within it's visual or audible range (Higher value = more likely to spot)
* Affects the AI ability to spot targets within it's visual or audible range
* Affects the accuracy of the information (Higher value = more accurate information)
* Affects the accuracy of the information
||
||
* Higher value means the AI is better at spotting targets
* Higher value means the AI is better at spotting targets
Line 92: Line 101:
| aimingShake  
| aimingShake  
||  
||  
* Affects how steadily the AI can hold a weapon (Higher value = less weapon sway)
* Affects how steadily the AI can hold a weapon
||  
||  
* Higher value means the AI will be more precise
* Higher value means the AI will be more precise
Line 103: Line 112:
In {w, x, y, z} value from (w,y) gets interpolated into (x,z)
In {w, x, y, z} value from (w,y) gets interpolated into (x,z)


*''spotDistance[] = {'''0''', ''0.2'', '''1''', ''0.4''};''  
*''spotDistance[] = {'''0''', <span style="color: purple;">0.2</span>, '''1''', <span style="color: purple;">0.4</span>};''  
**Value in a range '''0-1''' will change into value in a range ''0.2-0.4''.
**Value in a range '''0-1''' will change into value in a range <span style="color: purple;">0.2-0.4</span>.
*''setSkill ["spotDistance", 0.5]''  
*''setSkill ["spotDistance", 0.5]''  
**Results in ''skill "spotDistance"'' returning ''0.3''
**Results in ''skill "spotDistance"'' returning ''0.3''


===Notes===
{{Informative|More than 2 pairs of defining values can be used (minimum is 2 pairs). The values are used to interpolate on run-time, so even after setting sub-skill by script command it will be interpolated and bound by this array.}}
More than 2 pairs of defining values can be used (minimum is 2 pairs).
 
The values are used to interpolate on run-time, so even after setting sub-skill by script command it will be interpolated and bound by this array.


===Defaults for Arma 3===
===Defaults for Arma 3===
Line 117: Line 123:
{| class="wikitable"
{| class="wikitable"
|-
|-
! Sub-Skill !! w !! x !! y !! z
! Sub-Skill !! minInputSkillLimit (w) !! resultingSubSkillLowerBoundary (x) !! maxInputSkillLimit (y) !! resultingSubSkillLowerBoundary (z)
|-
|-
| aimingAccuracy || 0 || 0 || 1 || 1
| aimingAccuracy || 0 || 0 || 1 || 1
Line 158: Line 164:
*[[setSkill]]
*[[setSkill]]
*[[skillFinal]]
*[[skillFinal]]
== External Links ==
*[https://forums.bohemia.net/forums/topic/219929-the-mystical-skillfinal-formula-reverse-engineering-it/ BIS Forums AI Skill]
*[https://forums.bohemia.net/forums/topic/223493-ai-facts-myths-compilation-list/ AI Facts & Myths Compilation List]

Revision as of 12:23, 9 January 2020

Some information on this page were not confirmed by BIS!
AI skill/level/final skill

AI Skill

The AI is characterized by a set of sub-skills. The final AI skill is unfluenced by several factors. Additionally each sub-skill is then interpolated with the values set in CfgAISkill.

Changing AI Skill

Players

Difficulty Menu
  • As player one can only influence AI skill by changing the global skill settings Skill and Precision. One has also the option to choose one of the default AI Levels.
    • Skill: Influences multiple sub-skills related to the AIs "intelligence". If the value is set too low, the AI will be dumb.
    • Precision: Influences sub-skilles related to AIs precision. If the value is set too high, the AI will have a super human precision. Lower values result mostly in interesting fire fights.
Changing the AI difficulty settings during a scenario will have no effect until the scenario is restarted.

Scenario Designers

Skill setting in Eden Editor
  • A scenario designer has four ways to influence the AI skill.

Modders

  • A modder can influence the AI skill by overwriting CfgAISkill.

Server Admins

  • Server admins can change the AI skill by changing the aiLevelPreset config parameter found in server config. See Arma 3 Server Profile for more information.

Sub-Skills

Sub-skills are a set of parameters ultimately defining the individual AI unit performance in the game.

Sub-Skill Effect Influence
aimingAccuracy
  • Affects how well the AI can lead a target
  • Affects how accurately the AI estimate range and calculates bullet drop
  • Affects how well the AI compensates for weapon dispersion
  • Affects how much the AI will know to compensate for recoil
  • Affects how certain the AI must be about its aim on target before opening fire
  • Higher value means the AI can lead a target better
  • Higher value means the Ai can estimate range and calculate bullet drop more precicely
  • Higher value means the AI can compensate weapon dispersion better
  • Higher value means the AI can control the recoil better
  • Higher value means the AI needs to now less to open up fire
aimingSpeed
  • Affects how quickly the AI can rotate and stabilize its aim
  • Higher value means the AI can rotate and stabilize its aim faster
commanding
  • Affects how quickly recognized targets are shared with the group
  • Higher value means the AI can report targets faster
courage
  • Affects unit's subordinates' morale
  • Higher value means the AI has got more courage
endurance
  • Disabled in Arma3
  • Disabled
general
  • Raw "Skill", value is distributed to sub-skills unless defined otherwise. Affects the AI's decision making.
  • ?
reloadSpeed
  • Affects the delay between switching or reloading a weapon
  • Higher value means the AI can switch or reload weapons faster
spotDistance
  • Affects the AI ability to spot targets within it's visual or audible range
  • Affects the accuracy of the information
  • Higher value means the AI is better at spotting targets
  • Higher value means the AI will collect information about targets more precisely
spotTime
  • Affects how quick the AI react to death, damage or observing an enemy
  • Higher value means the AI will react faster to death, damage or enemies
aimingShake
  • Affects how steadily the AI can hold a weapon
  • Higher value means the AI will be more precise

CfgAISkill

CfgAISkill is a set of arrays, related to Sub-Skills, defining the interpolation curve of each of the sub-skill. They can be changed by a mod for example.

Example

Interpolation with vanilla A3 CfgAISkill

In {w, x, y, z} value from (w,y) gets interpolated into (x,z)

  • spotDistance[] = {0, 0.2, 1, 0.4};
    • Value in a range 0-1 will change into value in a range 0.2-0.4.
  • setSkill ["spotDistance", 0.5]
    • Results in skill "spotDistance" returning 0.3
More than 2 pairs of defining values can be used (minimum is 2 pairs). The values are used to interpolate on run-time, so even after setting sub-skill by script command it will be interpolated and bound by this array.

Defaults for Arma 3

Table

Sub-Skill minInputSkillLimit (w) resultingSubSkillLowerBoundary (x) maxInputSkillLimit (y) resultingSubSkillLowerBoundary (z)
aimingAccuracy 0 0 1 1
aimingShake 0 0 1 1
aimingSpeed 0 0.5 1 1
commanding 0 0 1 1
courage 0 0 1 1
endurance 0 0 1 1
general 0 0 1 1
reloadSpeed 0 0 1 1
spotDistance 0 0 1 1
spotTime 0 0 1 1

Config

aimingAccuracy[] = {0, 0, 1, 1};
aimingShake[] = {0, 0, 1, 1};
aimingSpeed[] = {0, 0.5, 1, 1};
commanding[] = {0, 0, 1, 1};
courage[] = {0, 0, 1, 1};
endurance[] = {0, 0, 1, 1}; Has been disabled in Arma 3
general[] = {0, 0, 1, 1};
reloadSpeed[] = {0, 0, 1, 1};
spotDistance[] = {0, 0, 1, 1};
spotTime[] = {0, 0, 1, 1};

Related Commands

External Links