AI Skill – Arma 3
Jump to navigation
Jump to search
m (→AI Skill) |
m (removed wip) |
||
(44 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{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]]]] | ||
*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 === | ||
* A modder can influence the AI skill by overwriting [[Arma 3 AI Skill#CfgAISkill|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 53: | Line 63: | ||
| courage | | courage | ||
|| | || | ||
* Affects unit's subordinates' morale | * Affects unit's subordinates' morale | ||
|| | || | ||
* Higher value means the AI has got more courage | * Higher value means the AI has got more courage | ||
Line 77: | Line 87: | ||
| spotDistance | | spotDistance | ||
|| | || | ||
* Affects the AI ability to spot targets within it's visual or audible range | * Affects the AI ability to spot targets within it's visual or audible range | ||
* Affects the accuracy of the 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 91: | Line 101: | ||
| aimingShake | | aimingShake | ||
|| | || | ||
* Affects how steadily the AI can hold a weapon | * 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 97: | Line 107: | ||
==CfgAISkill== | ==CfgAISkill== | ||
CfgAISkill is a set of arrays, related to [[AI Sub- | CfgAISkill is a set of arrays, related to [[Arma 3 AI Skill#Sub-Skills|Sub-Skills]], defining the interpolation curve of each of the sub-skill. They can be changed by a mod for example. | ||
===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) | ||
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. | *''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 <span style="color: purple;">0.2-0.4</span>. | |||
*''setSkill ["spotDistance", 0.5]'' | |||
**Results in ''skill "spotDistance"'' returning ''0.3'' | |||
{{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.}} | |||
===Defaults for Arma 3=== | ===Defaults for Arma 3=== | ||
====Table==== | |||
{| class="wikitable" | |||
|- | |||
! 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==== | |||
<spoiler> | |||
aimingAccuracy[] = {0, 0, 1, 1}; | aimingAccuracy[] = {0, 0, 1, 1}; | ||
aimingShake[] = {0, 0, 1, 1}; | aimingShake[] = {0, 0, 1, 1}; | ||
Line 119: | Line 158: | ||
spotDistance[] = {0, 0, 1, 1}; | spotDistance[] = {0, 0, 1, 1}; | ||
spotTime[] = {0, 0, 1, 1}; | spotTime[] = {0, 0, 1, 1}; | ||
</spoiler> | |||
== Related Commands == | == Related Commands == | ||
Line 124: | 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
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
- 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.
Scenario Designers
- A scenario designer has four ways to influence the AI skill.
- By changing the skill slider in 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.
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 |
|
|
aimingSpeed |
|
|
commanding |
|
|
courage |
|
|
endurance |
|
|
general |
|
|
reloadSpeed |
|
|
spotDistance |
|
|
spotTime |
|
|
aimingShake |
|
|
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
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
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};