AI Skill – Arma 3
Jump to navigation
Jump to search
m (→Example) |
Lou Montana (talk | contribs) m (Some wiki formatting) |
||
(23 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{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]] | ||
The AI is characterized by a set of | == 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]] | |||
* 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. | |||
{{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. | |||
=== Modders === | |||
* A modder can influence the AI skill by overwriting {{Link|#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 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 | |||
|- | |- | ||
| 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 31: | 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 | * 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 | * ''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 | * Affects the AI ability to spot targets within it is 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 | ||
* 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 | * 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 | == 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) | ||
* | * <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 | ** Value in a range '''0-1''' will change into value in a range {{Color|purple|0.2-0.4}}. | ||
* | * <sqf inline>_unit setSkill ["spotDistance", 0.5];</sqf> | ||
**Results in | ** Results in <sqf inline>_unit skill "spotDistance"</sqf> returning ''0.3'' | ||
{{ | {{Feature|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 | === {{arma3}} Defaults === | ||
====Table==== | |||
==== Table ==== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Sub-Skill | ! Sub-Skill | ||
! minInputSkillLimit (w) | |||
! resultingSubSkillLowerBoundary (x) | |||
! maxInputSkillLimit (y) | |||
! resultingSubSkillLowerBoundary (z) | |||
|- | |- | ||
| aimingAccuracy | | aimingAccuracy | ||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|- | |- | ||
| aimingShake | | aimingShake | ||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|- | |- | ||
| aimingSpeed | | aimingSpeed | ||
| 0 | |||
| 0.5 | |||
| 1 | |||
| 1 | |||
|- | |- | ||
| commanding | | commanding | ||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|- | |- | ||
| courage | | courage | ||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|- | |- | ||
| endurance | | endurance | ||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|- | |- | ||
| general | | general | ||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|- | |- | ||
| reloadSpeed | | reloadSpeed | ||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|- | |- | ||
| spotDistance | | spotDistance | ||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|- | |- | ||
| spotTime | | spotTime | ||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|} | |} | ||
====Config==== | ==== Config ==== | ||
<spoiler> | <spoiler> | ||
<syntaxhighlight lang="cpp"> | |||
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 }; | |||
</syntaxhighlight> | |||
</spoiler> | </spoiler> | ||
== Related Commands == | == Related Commands == | ||
* [[skill]] | |||
* [[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
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-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.
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.
- _unit setSkill ["spotDistance", 0.5];
- Results in _unit skill "spotDistance" returning 0.3
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