AI Skill – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
m (Some wiki formatting)
 
(52 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:AI]]
{{Feature|informative|Some information on this page were not confirmed by {{Name|bi}}!}}


[[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 {{Link|#Sub-Skills|sub-skills}}.
The [[skillFinal|final AI skill]] is unfluenced by {{Link|#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]]
[[File:A3_AISkill_EdenEditor.jpg|thumb|Skill setting in [[Eden Editor]]]]
* 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'''.
==Overview==
** Skill: Influences multiple sub-skills related to the AIs "intelligence". If the value is set too low, the AI will be dumb.
This page contains all information about Arma 3`s artificial intelligence, short AI.
** Precision: Influences sub-skills 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.
{{Feature|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 [[:Category:Eden Editor|Eden Editor]]]]
* A scenario designer has four ways to influence the AI skill:
** 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.
** 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.


==AI Skill==
=== Modders ===


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:
* A modder can influence the AI skill by overwriting {{Link|#CfgAISkill}}.
* Inherited from the value set via [[setSkill]]
**{{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|{{arma3}} Server Profile]] for more information.
 
 
== Sub-Skills ==


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


{| class="wikitable sortable"
{| class="wikitable sortable"
! Sub-Skill
! Effect
! Influence
|-
|-
! Sub-Skill !! Effect !! Influence
| aimingAccuracy
|-
|
| aimingAccuracy ||  
* Affects how well the AI can lead a target
* Affects how well the AI can lead a target  
* Affects how accurately the AI estimate range and calculates bullet drop
* Affects how accurately the AI estimate range and calculates bullet drop
* Affects how well the AI compensates for weapon dispersion
* Affects how well the AI compensates for weapon dispersion
* Affects how much the AI will know to compensate for recoil
* 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  
* 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 lead a target better
* Higher value means the Ai can estimate range and calculate bullet drop more precicely
* Higher value means the Ai can estimate range and calculate bullet drop more precicely
Line 39: Line 62:
* Higher value means the AI needs to now less to open up fire
* Higher value means the AI needs to now less to open up fire
|-
|-
| aimingSpeed  
| aimingSpeed
||  
|
* Affects how quickly the AI can rotate and stabilize its aim
* Affects how quickly the AI can rotate and stabilize its aim
||  
|
* Higher value means the AI can rotate and stabilize its aim faster
* Higher value means the AI can rotate and stabilize its aim faster
|-
|-
| commanding  
| commanding
||  
|
* Affects how quickly recognized targets are shared with the group
* Affects how quickly recognized targets are shared with the group
||  
|
* Higher value means the AI can report targets faster
* Higher value means the AI can report targets faster
|-
|-
| 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
|-
|-
| endurance  
| endurance
||  
|
*''Disabled in Arma3''  
* ''Disabled in {{arma3}}''
||  
|
* ''Disabled''
* ''Disabled''
|-
|-
| general  
| general
||  
|
* Raw "Skill", value is distributed to sub-skills unless defined otherwise. Affects the AI's decision making.  
* Raw "Skill", value is distributed to sub-skills unless defined otherwise. Affects the AI's decision making.
||  
|
* ?
* ?
|-
|-
| reloadSpeed  
| reloadSpeed
||  
|
* Affects the delay between switching or reloading a weapon
* Affects the delay between switching or reloading a weapon
||  
|
* Higher value means the AI can switch or reload weapons faster
* Higher value means the AI can switch or reload weapons faster
|-
|-
| 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 is 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
* Higher value means the AI will collect information about targets more precisely
* Higher value means the AI will collect information about targets more precisely
|-
|-
| spotTime  
| spotTime
||
|
* Affects how quick the AI react to death, damage or observing an enemy
* 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
* Higher value means the AI will react faster to death, damage or enemies
|-
|-
| 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
|}
|}


==CfgAISkill==
 
CfgAISkill is a set of arrays, related to [[AI Sub-skills]], defining the interpolation curve of each of the sub-skill. They can be changed by a mod for example.
== CfgAISkill ==
===Example===
 
CfgAISkill is a set of arrays, related to {{Link|#Sub-Skills}}, defining the interpolation curve of each of the sub-skill.
They can be changed by a mod for example.
 
=== Example ===
 
[[File:CfgAISkill.jpg|thumb|Interpolation with vanilla A3 CfgAISkill]]
[[File:CfgAISkill.jpg|thumb|Interpolation with vanilla A3 CfgAISkill]]
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''};''
* <code>spotDistance[] = { '''0''', {{Color|purple|0.2}}, '''1''', {{Color|purple|0.4}} };</code>
**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 {{Color|purple|0.2-0.4}}.
*''setSkill ["spotDistance", 0.5]''
* <sqf inline>_unit setSkill ["spotDistance", 0.5];</sqf>
**Results in ''skill "spotDistance"'' returning ''0.3''
** Results in <sqf inline>_unit skill "spotDistance"</sqf> returning ''0.3''


===Notes===
{{Feature|informative|
More than 2 pairs of defining values can be used (minimum is 2 pairs).
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.
}}


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.
=== {{arma3}} Defaults ===


===Defaults for Arma 3===
==== Table ====
====Table====
{| 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
|-
|-
| aimingShake || 0 || 0 || 1 || 1
| aimingShake
| 0
| 0
| 1
| 1
|-
|-
| aimingSpeed || 0 || 0.5 || 1 || 1
| aimingSpeed
| 0
| 0.5
| 1
| 1
|-
|-
| commanding|| 0 || 0 || 1 || 1
| commanding
| 0
| 0
| 1
| 1
|-
|-
| courage || 0 || 0 || 1 || 1
| courage
| 0
| 0
| 1
| 1
|-
|-
| endurance || 0 || 0 || 1 || 1
| endurance
| 0
| 0
| 1
| 1
|-
|-
| general || 0 || 0 || 1 || 1
| general
| 0
| 0
| 1
| 1
|-
|-
| reloadSpeed || 0 || 0 || 1 || 1
| reloadSpeed
| 0
| 0
| 1
| 1
|-
|-
| spotDistance || 0 || 0 || 1 || 1
| spotDistance
| 0
| 0
| 1
| 1
|-
|-
| spotTime || 0 || 0 || 1 || 1
| spotTime
| 0
| 0
| 1
| 1
|}
|}
*w: Original minimal value set by [[setSkill]] or [[Eden Editor]]
*x: Minimal allowed value, if w is lower. It will be clamped to this value
*y: Original maximal value set by [[setSkill]] or [[Eden Editor]]
*z: Maximal allowed value, if w is lower. It will be clamped to this value


====Config====
==== Config ====
<spoiler>
<spoiler>
aimingAccuracy[] = {0, 0, 1, 1};
<syntaxhighlight lang="cpp">
aimingShake[] = {0, 0, 1, 1};
aimingAccuracy[] = { 0, 0, 1, 1 };
aimingSpeed[] = {0, 0.5, 1, 1};
aimingShake[] = { 0, 0, 1, 1 };
commanding[] = {0, 0, 1, 1};
aimingSpeed[] = { 0, 0.5, 1, 1 };
courage[] = {0, 0, 1, 1};
commanding[] = { 0, 0, 1, 1 };
endurance[] = {0, 0, 1, 1}; '''Has been disabled in {{arma3}}'''
courage[] = { 0, 0, 1, 1 };
general[] = {0, 0, 1, 1};
endurance[] = { 0, 0, 1, 1 }; // disabled in Arma 3
reloadSpeed[] = {0, 0, 1, 1};
general[] = { 0, 0, 1, 1 };
spotDistance[] = {0, 0, 1, 1};
reloadSpeed[] = { 0, 0, 1, 1 };
spotTime[] = {0, 0, 1, 1};
spotDistance[] = { 0, 0, 1, 1 };
spotTime[] = { 0, 0, 1, 1 };
</syntaxhighlight>
</spoiler>
</spoiler>


== Related Commands ==
== Related Commands ==
*[[skill]]
 
*[[setSkill]]
* [[skill]]
*[[skillFinal]]
* [[setSkill]]
* [[skillFinal]]
* [[allowFleeing]]
 
 
== External Links ==
 
*{{Link|link= https://forums.bohemia.net/forums/topic/219929-the-mystical-skillfinal-formula-reverse-engineering-it/|text= BIS Forums AI Skill}}
*{{Link|link= https://forums.bohemia.net/forums/topic/223493-ai-facts-myths-compilation-list/|text= AI Facts & Myths Compilation List}}
 
 
[[Category:AI]]

Latest revision as of 09:54, 6 May 2024

Some information on this page were not confirmed by Bohemia Interactive!
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-skills 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 Arma 3
  • 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 is 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.
  • _unit setSkill ["spotDistance", 0.5];
    • Results in _unit 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.

Arma 3 Defaults

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 }; // 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