AI Config Reference – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "{{Feature | Informative | " to "{{Feature|informative|")
 
(33 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Stub}}
{{Wiki|stub}}
{{wip}}
{{Feature|informative|Note that this is the relevant page for {{arma3}} AI configuration. Implementations for older Arma titles differ somewhat, but are irrelevant for {{arma3}}.}}
{{Informative | Note that this is the relevant page for {{arma3}} AI configuration. Implementations for older Arma titles differ somewhat, but are irrelevant for {{arma3}}.}}


{{Cfg ref|start}}
{{ConfigPage|start}}


= [[Arma_3_CfgBrains_Config_Reference|CfgBrains Config Reference]] =
= [[Arma_3_CfgBrains_Config_Reference|CfgBrains Config Reference]] =
Line 12: Line 11:
Each of which contains a Components class. Only DefaultSoldierBrain includes any components by default.
Each of which contains a Components class. Only DefaultSoldierBrain includes any components by default.


{{AnswerMe|Source 2 states that you can create a custom soldier brain, but nowhere is it stated which brain a unit will use.}}  
Sources:
# {{Link|link= https://forums.bohemia.net/forums/topic/150499-ai-discussion-dev-branch/?do=findComment&comment=3367671|text= oukej, BI-Forums, AI Discussion}}
# {{Link|link= https://forums.bohemia.net/forums/topic/150499-ai-discussion-dev-branch/?page=168&tab=comments#comment-3075074|text= klamacz, BI-Forums, AI Discussion}}
# {{Link|link= https://forums.bohemia.net/forums/topic/217481-ai-must-have-better-autonomy/?do=findComment&comment=3300586|text= .kju, BI-Forums, AI must have better autonomy.}}


Sources:
{{Feature|important|Source 2 states that you can create a custom soldier brain, but nowhere is it stated which brain a unit will use.}}
# [https://forums.bohemia.net/forums/topic/150499-ai-discussion-dev-branch/?do=findComment&comment=3367671 oukej, BI-Forums, AI Discussion]
# [https://forums.bohemia.net/forums/topic/150499-ai-discussion-dev-branch/?page=168&tab=comments#comment-3075074 klamacz, BI-Forums, AI Discussion]
# [https://forums.bohemia.net/forums/topic/217481-ai-must-have-better-autonomy/?do=findComment&comment=3300586 .kju, BI-Forums, AI must have better autonomy.]


{{Cfg ref|abc}}
{{ConfigPage|abc}}


== AIBrainAimingErrorComponent ==
== AIBrainAimingErrorComponent ==
Line 26: Line 25:


==== best/worstDecreaseTime ====
==== best/worstDecreaseTime ====
;Description: How long (in seconds) it should take a 1 and 0 [[skill]]ed unit respectivelly to stabilize their aim completely
; Description: How long (in seconds) it should take a 1 and 0 [[skill]]ed unit respectivelly to stabilize their aim completely


===== bestDecreaseTime =====
===== bestDecreaseTime =====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.2
; Default: 0.2


===== worstDecreaseTime =====  
===== worstDecreaseTime =====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 2
; Default: 2


=== D ===
=== D ===


==== damageCoef ====
==== damageCoef ====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 10
; Default: 10
;Description: Importance of damage of entity, multiplier
; Description: Importance of damage of entity, multiplier


=== F ===
=== F ===


==== fatigueCoef ====  
==== fatigueCoef ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 10
; Default: 10
;Description: Importance of damage of entity, multiplier
; Description: Importance of damage of entity, multiplier


=== L ===
=== L ===


==== lostTargetCoef ====  
==== lostTargetCoef ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 3
; Default: 3
;Description: Importance of loosing target event, multiplier
; Description: Importance of loosing target event, multiplier


==== lostTargetTimeMax ====  
==== lostTargetTimeMax ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 3
; Default: 3
;Description: How long error is raising after loosing sight of target
; Description: How long error is raising after loosing sight of target


==== lostTargetTimeMin ====  
==== lostTargetTimeMin ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.5
; Default: 0.5
;Description: How soon after loosing sight of target, error starts to raise
; Description: How soon after loosing sight of target, error starts to raise


=== M ===
=== M ===


==== maxAngularError ====  
==== maxAngularError ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.1309
; Default: 0.1309
;Description: Half of the error cone in radians
; Description: Half of the error cone in radians


==== maxAngularErrorTurrets ====  
==== maxAngularErrorTurrets ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.0872
; Default: ? (''0.0872'', but sources do not all match)
;Description: Half of the error cone in radians, used for turrets
; Description: Half of the error cone in radians, used for turrets
{{AnswerMe|Differing default value between sources}}


==== movingInfluence ====  
==== movingInfluence ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 1
; Default: 1
;Description: Importance of moving in algorithm, multiplier
; Description: Importance of moving in algorithm, multiplier


=== S ===
=== S ===


==== shootingInfluence ====  
==== shootingInfluence ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.4
; Default: 0.4
;Description: Importance of shooting in algorithm, multiplier
; Description: Importance of shooting in algorithm, multiplier


==== suppressionCoef ====  
==== suppressionCoef ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.5
; Default: 0.5
;Description: Importance of suppression value, multiplier
; Description: Importance of suppression value, multiplier


=== T ===
=== T ===


==== turningInfluence ====  
==== turningInfluence ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 1
; Default: 1
;Description: Importance of turning in algorithm, multiplier
; Description: Importance of turning in algorithm, multiplier


== AIBrainCountermeasuresComponent ==
== AIBrainCountermeasuresComponent ==
Line 109: Line 107:


==== CMCheckDelay ====  
==== CMCheckDelay ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.8
; Default: 0.8


==== CMOnTargettedProbability ====  
==== CMOnTargettedProbability ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.1
; Default: 0.1


=== N ===
=== N ===


==== nonLeaderSmokeProbability ====  
==== nonLeaderSmokeProbability ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.1
; Default: 0.1


=== M ===
=== M ===
Line 126: Line 124:
==== minimalThrowDistance ====
==== minimalThrowDistance ====
{{Clarify}}
{{Clarify}}
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Default: 900
; Default: 900


==== minReactionTime ====  
==== minReactionTime ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.1
; Default: 0.1


==== maxReactionTime ====  
==== maxReactionTime ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 3
; Default: 3


=== R ===
=== R ===


==== randomReactionTimePercent ====  
==== randomReactionTimePercent ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.2
; Default: 0.2


=== S ===
=== S ===


==== suppressionThreshold ====  
==== suppressionThreshold ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.8
; Default: 0.8


==== suppressionTimerMax ====  
==== suppressionTimerMax ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 2
; Default: 2


=== U ===
=== U ===


==== useSmokeGrenadeDelay ====  
==== useSmokeGrenadeDelay ====  
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Default: 20
; Default: 20


== AIBrainSuppressionComponent ==
== AIBrainSuppressionComponent ==
Line 164: Line 162:


==== cause... ====  
==== cause... ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: How much impact different danger causes will have on suppression
; Description: How much impact different danger causes will have on suppression


===== causeBulletCloseWeight =====  
===== causeBulletCloseWeight =====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.5
; Default: 0.5
{{AnswerMe|Source 1 and 2 provides conflicting default values of 0.5 and 0.15}}
{{Feature|informative|Source 1 and 2 provides conflicting default values of 0.5 and 0.15}}


===== causeExplosionWeight =====  
===== causeExplosionWeight =====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.5
; Default: 0.5
{{AnswerMe|Source 1 and 2 provides conflicting default values of 0.5 and 0.15}}
{{Feature|informative|Source 1 and 2 provides conflicting default values of 0.5 and 0.15}}


===== causeFireWeight =====  
===== causeFireWeight =====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.5
; Default: 0.5


===== causeHitWeight =====  
===== causeHitWeight =====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.5
; Default: 0.5


=== D ===
=== D ===


==== ...DecreaseTime ====  
==== ...DecreaseTime ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: How long it will take for a unit to loose suppression
; Description: How long it will take for a unit to loose suppression


===== bestDecreaseTime =====  
===== bestDecreaseTime =====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 1
; Default: 1
;Description: How long it will take for a [[skill]] 1 unit to loose suppression{{cn}}
; Description: How long it will take for a [[skill]] 1 unit to loose suppression{{cn}}


===== worstDecreaseTime =====  
===== worstDecreaseTime =====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 10
; Default: 10
;Description: How long it will take for a [[skill]] 0 unit to loose suppression{{cn}}
; Description: How long it will take for a [[skill]] 0 unit to loose suppression{{cn}}


=== M ===
=== M ===


==== maxSuppression ====  
==== maxSuppression ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 1.0
; Default: 1.0
;Description: Maximum level of suppression
; Description: Maximum level of suppression


==== suppressionRange ====  
==== suppressionRange ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 20.0
; Default: 1.0 / 20.0 ?
;Description: Default suppression range, if not provided by ammo type
; Description: Default suppression range, if not provided by ammo type
{{AnswerMe|Source 1 and 2 provides conflicting default values of 1.0 and 20.0}}
{{Feature|informative|Source 1 and 2 provides conflicting default values of 1.0 and 20.0}}


==== suppressionThreshold ====  
==== suppressionThreshold ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Default: 0.7
; Default: 0.7
;Description: Threshold to change behavior (use smoke grenades for example)
; Description: Threshold to change behavior (use smoke grenades for example)


== AIBrainTargetSelectorComponent ==
== AIBrainTargetSelectorComponent ==
As of {{GVI|arma3|2.00}} this component appears to be unimplemented and empty.
As of {{GVI|arma3|2.00}} this component appears to be unimplemented and empty.


{{Cfg ref|end}}
{{ConfigPage|end}}


{{Cfg ref|start}}
{{ConfigPage|start}}


= [[Arma_3_AI_Skill|AI Skill Config Reference]] =
= [[Arma_3_AI_Skill|AI Skill Config Reference]] =


{{Cfg ref|abc}}
{{ConfigPage|abc}}


== CfgAILevelPresets ==
== CfgAILevelPresets ==
Line 240: Line 238:
=== D ===
=== D ===


==== displayName =====
==== displayName ====
 
; Type: [[TokenNameValueTypes|String]]
==== hiddenSelections[] ====
; Description: Text displayed in the dropdown menu
;Type: [[TokenNameValueTypes|String]]
<syntaxhighlight lang="cpp">
;Description: Text displayed in the dropdown menu
<syntaxhighlight lang="c">
displayName = "Custom"
displayName = "Custom"
</syntaxhighlight>
</syntaxhighlight>
Line 252: Line 248:


==== precisionAI ====
==== precisionAI ====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: Coefficient applied to all accuracy skills
; Description: Coefficient applied to all accuracy skills


=== S ===
=== S ===


==== skillAI =====
==== skillAI ====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: Coefficient applied to all utility skills
; Description: Coefficient applied to all utility skills


== [[Arma_3_AI_Skill#CfgAISkill|CfgAISkill]] ==
== [[Arma_3_AI_Skill#CfgAISkill|CfgAISkill]] ==
Line 266: Line 262:


==== aimingAccuracy ====
==== aimingAccuracy ====
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0,1,1}
; Default: {0,0,1,1}


==== aimingShake ====  
==== aimingShake ====  
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0,1,1}
; Default: {0,0,1,1}


==== aimingSpeed ====  
==== aimingSpeed ====  
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0.5,1,1}
; Default: {0,0.5,1,1}


=== C ===
=== C ===


==== commanding ====  
==== commanding ====  
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0,1,1}
; Default: {0,0,1,1}


==== courage ====  
==== courage ====  
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0,1,1}
; Default: {0,0,1,1}


=== E ===
=== E ===


==== endurance ====  
==== endurance ====  
{{arma3-obsolete}}
{{Feature|important|This tokenName is no longer available in {{arma3}}.}}
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0,1,1}
; Default: {0,0,1,1}


=== G ===
=== G ===


==== general ====  
==== general ====  
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0,1,1}
; Default: {0,0,1,1}


=== R ===
=== R ===


==== reloadSpeed ====  
==== reloadSpeed ====  
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0,1,1}
; Default: {0,0,1,1}


=== S ===
=== S ===


==== spotDistance ====  
==== spotDistance ====  
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0,1,1}
; Default: {0,0,1,1}


==== spotTime ====  
==== spotTime ====  
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Default: {0,0,1,1}
; Default: {0,0,1,1}


== [[Arma_3_Difficulty_Menu#Configuration|CfgDifficultyPresets]] ==
== [[Arma 3: Difficulty Settings#Configuration|CfgDifficultyPresets]] ==


=== L ===
=== L ===


==== levelAI ====  
==== levelAI ====  
;Type: [[TokenNameValueTypes|String]]
; Type: [[TokenNameValueTypes|String]]
;Description: Refers to [[#CfgAILevelPresets|CfgAILevelPresets]]
; Description: Refers to [[#CfgAILevelPresets|CfgAILevelPresets]]


{{Cfg ref|end}}
{{ConfigPage|end}}


{{Cfg ref|start}}
{{ConfigPage|start}}


= AI Steering Components =
= AI Steering Components =
Line 332: Line 328:
Subclasses of ''(configFile >> "CfgVehicles" >> _vehicle >> "components")'' class
Subclasses of ''(configFile >> "CfgVehicles" >> _vehicle >> "components")'' class


{{Cfg ref|abc}}
{{ConfigPage|abc}}


== [[Arma_3_AICarSteeringComponent|AICarSteeringComponent]] ==  
== [[Arma_3_AICarSteeringComponent|AICarSteeringComponent]] ==  
Line 341: Line 337:
==== allow... ====
==== allow... ====
[[TokenNameValueTypes|boolean]]
[[TokenNameValueTypes|boolean]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
allowOvertaking = true;         // overtaking is part of collision avoidance
allowOvertaking = true; // overtaking is part of collision avoidance
allowCollisionAvoidance = true;  
allowCollisionAvoidance = true;
allowDrifting = false;           // allow using movement vector as direction
allowDrifting = false; // allow using movement vector as direction
</syntaxhighlight>
</syntaxhighlight>


Line 353: Line 349:


[[TokenNameValueTypes|float]]
[[TokenNameValueTypes|float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
commandTurnFactor = 1.0;
commandTurnFactor = 1.0;
</syntaxhighlight>
</syntaxhighlight>
Line 360: Line 356:


[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
convoyPIDWeights[] = {1,0.01,0.01};
convoyPIDWeights[] = {1,0.01,0.01};
</syntaxhighlight>
</syntaxhighlight>
Line 368: Line 364:
==== differenceAngleCoef ====  
==== differenceAngleCoef ====  
[[TokenNameValueTypes|float]]
[[TokenNameValueTypes|float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
differenceAngleCoef = 1.0;
differenceAngleCoef = 1.0;
</syntaxhighlight>
</syntaxhighlight>
Line 376: Line 372:


[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes|Boolean]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
doPredictForward = true;
doPredictForward = true;
</syntaxhighlight>
</syntaxhighlight>


===== predictForwardRange[] =======  
===== predictForwardRange[] =====  
[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
predictForwardRange[] = { 1, 20 };
predictForwardRange[] = { 1, 20 };
</syntaxhighlight>
</syntaxhighlight>
Line 390: Line 386:


[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
steerAheadSaturation[] = { 0.01, 0.4 };
steerAheadSaturation[] = { 0.01, 0.4 };
</syntaxhighlight>
</syntaxhighlight>
Line 398: Line 394:


[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes|Boolean]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
doRemapSpeed = true;
doRemapSpeed = true;
</syntaxhighlight>
</syntaxhighlight>
Line 404: Line 400:
===== remapSpeedRange =====  
===== remapSpeedRange =====  
[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
remapSpeedRange[] = { 30.0, 70.0 };
remapSpeedRange[] = { 30.0, 70.0 };
</syntaxhighlight>
</syntaxhighlight>
Line 410: Line 406:
===== remapSpeedScalar =====  
===== remapSpeedScalar =====  
[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
remapSpeedScalar[] = { 1.0, 0.35 };
remapSpeedScalar[] = { 1.0, 0.35 };
</syntaxhighlight>
</syntaxhighlight>
Line 420: Line 416:


[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
speedPIDWeights[] = { 0.7, 0.2, 0.0 };
speedPIDWeights[] = { 0.7, 0.2, 0.0 };
</syntaxhighlight>
</syntaxhighlight>
Line 427: Line 423:
[[TokenNameValueTypes|Integer]]: Determines the manipulability of the class.
[[TokenNameValueTypes|Integer]]: Determines the manipulability of the class.


{| class="bikitable"
{| class="wikitable"
! Value !! Type
! Value !! Type
|-
|-
| <tt>0</tt> || Three angles method
| {{hl|0}} || Three angles method
|-
|-
| <tt>1</tt> || Wheel direction method
| {{hl|1}} || Wheel direction method
|-
|-
| <tt>2</tt> || Combined method
| {{hl|2}} || Combined method
|}
|}


Line 445: Line 441:


[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes|Float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
wheelAngleCoef = 0.7;
wheelAngleCoef = 0.7;
forwardAngleCoef = 0.7;
forwardAngleCoef = 0.7;
Line 456: Line 452:


[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes|Float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minSpeedToKeep = 0.1;
minSpeedToKeep = 0.1;
</syntaxhighlight>
</syntaxhighlight>
Line 464: Line 460:


[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes|Float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
maxWheelAngleDiff = 0.2616;
maxWheelAngleDiff = 0.2616;
</syntaxhighlight>
</syntaxhighlight>
Line 472: Line 468:


[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
steeringPIDWeights[] = { 1.2, 0.1, 0.2 };
steeringPIDWeights[] = { 1.2, 0.1, 0.2 };
</syntaxhighlight>
</syntaxhighlight>
Line 480: Line 476:


[[TokenNameValueTypes|float]]
[[TokenNameValueTypes|float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
stuckMaxTime = 3.0;
stuckMaxTime = 3.0;
</syntaxhighlight>
</syntaxhighlight>
Line 491: Line 487:
==== allow... ====
==== allow... ====
[[TokenNameValueTypes|boolean]]
[[TokenNameValueTypes|boolean]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
allowOvertaking = true;         // overtaking is part of collision avoidance
allowOvertaking = true; // overtaking is part of collision avoidance
allowCollisionAvoidance = true;  
allowCollisionAvoidance = true;
allowDrifting = false;           // allow using movement vector as direction
allowDrifting = false; // allow using movement vector as direction
allowTurnAroundInPoint = true;
allowTurnAroundInPoint = true;
</syntaxhighlight>
</syntaxhighlight>
Line 504: Line 500:


[[TokenNameValueTypes|float]]
[[TokenNameValueTypes|float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
commandTurnFactor = 1.0;
commandTurnFactor = 1.0;
</syntaxhighlight>
</syntaxhighlight>
Line 511: Line 507:


[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
convoyPIDWeights[] = {1,0,0};
convoyPIDWeights[] = {1,0,0};
</syntaxhighlight>
</syntaxhighlight>
Line 519: Line 515:
==== differenceAngleCoef ====  
==== differenceAngleCoef ====  
[[TokenNameValueTypes|float]]
[[TokenNameValueTypes|float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
differenceAngleCoef = 1.0;
differenceAngleCoef = 1.0;
</syntaxhighlight>
</syntaxhighlight>
Line 527: Line 523:


[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes|Boolean]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
doPredictForward = true;
doPredictForward = true;
</syntaxhighlight>
</syntaxhighlight>


===== predictForwardRange[] =======  
===== predictForwardRange[] =====  
[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
predictForwardRange[] = { 1, 20 };
predictForwardRange[] = { 1, 20 };
</syntaxhighlight>
</syntaxhighlight>
Line 541: Line 537:


[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
steerAheadSaturation[] = { 0.01, 0.4 };
steerAheadSaturation[] = { 0.01, 0.4 };
</syntaxhighlight>
</syntaxhighlight>
Line 549: Line 545:


[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes|Boolean]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
doRemapSpeed = false;
doRemapSpeed = false;
</syntaxhighlight>
</syntaxhighlight>
Line 555: Line 551:
===== remapSpeedRange =====  
===== remapSpeedRange =====  
[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
remapSpeedRange[] = { 30.0, 70.0 };
remapSpeedRange[] = { 30.0, 70.0 };
</syntaxhighlight>
</syntaxhighlight>
Line 561: Line 557:
===== remapSpeedScalar =====  
===== remapSpeedScalar =====  
[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
remapSpeedScalar[] = { 1.0, 0.35 };
remapSpeedScalar[] = { 1.0, 0.35 };
</syntaxhighlight>
</syntaxhighlight>
Line 571: Line 567:


[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes|Float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
maxWheelAngleDiff = 0.2616;
maxWheelAngleDiff = 0.2616;
</syntaxhighlight>
</syntaxhighlight>
Line 579: Line 575:


[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes|Float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minSpeedToKeep = 0.1;
minSpeedToKeep = 0.1;
</syntaxhighlight>
</syntaxhighlight>
Line 588: Line 584:


[[TokenNameValueTypes|Integer]]
[[TokenNameValueTypes|Integer]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minSpeedToKeep = 15;
minSpeedToKeep = 15;
</syntaxhighlight>
</syntaxhighlight>
Line 598: Line 594:


[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
speedPIDWeights[] = { 0.7, 0.2, 0.0 };
speedPIDWeights[] = { 0.7, 0.2, 0.0 };
</syntaxhighlight>
</syntaxhighlight>
Line 605: Line 601:
[[TokenNameValueTypes|Integer]]: Determines the manipulability of the class.
[[TokenNameValueTypes|Integer]]: Determines the manipulability of the class.


{| class="bikitable"
{| class="wikitable"
! Value !! Type
! Value !! Type
|-
|-
| <tt>0</tt> || Three angles method
| {{hl|0}} || Three angles method
|-
|-
| <tt>1</tt> || Wheel direction method
| {{hl|1}} || Wheel direction method
|-
|-
| <tt>2</tt> || Combined method
| {{hl|2}} || Combined method
|}
|}


<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
speedPredictionMethod = 3;
speedPredictionMethod = 3; // ?
</syntaxhighlight>
</syntaxhighlight>
{{AnswerMe|What does speedPredictionMethod 3 do?}}


===== ...AngleCoef =====  
===== ...AngleCoef =====  
Line 625: Line 619:


[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes|Float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
wheelAngleCoef = 0.7;
wheelAngleCoef = 0.7;
forwardAngleCoef = 0.7;
forwardAngleCoef = 0.7;
Line 636: Line 630:


[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes|Array]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
steeringPIDWeights[] = { 1.2, 0.1, 0.2 };
steeringPIDWeights[] = { 1.2, 0.1, 0.2 };
</syntaxhighlight>
</syntaxhighlight>
Line 644: Line 638:


[[TokenNameValueTypes|float]]
[[TokenNameValueTypes|float]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
stuckMaxTime = 3.0;
stuckMaxTime = 3.0;
</syntaxhighlight>
</syntaxhighlight>


{{Cfg ref|end}}
{{ConfigPage|end}}


{{Cfg ref|start}}
{{ConfigPage|start}}


= Other =
= Other =


{{Cfg ref|abc}}
{{ConfigPage|abc}}


== [[CfgAmmo_Config_Reference|CfgAmmo]] ==
== [[CfgAmmo_Config_Reference|CfgAmmo]] ==
Line 660: Line 654:
=== A ===
=== A ===


====aiAmmoUsageFlags====
==== aiAmmoUsageFlags ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Description: Tells the AI how to use this Ammo. NOTE: Feature still WIP, some functions may not work yet or be removed later. See: [http://forums.bistudio.com/showthread.php?159711-Development-Branch-Captain-s-AI-Log&p=2945231&viewfull=1#post2945231 AI Devbranch]
; Description: Tells the AI how to use this Ammo. NOTE: Feature still WIP, some functions may not work yet or be removed later. See: {{Link|link= http://forums.bistudio.com/showthread.php?159711-Development-Branch-Captain-s-AI-Log&p=2945231&viewfull=1#post2945231|text= AI Devbranch}}


{| class="bikitable"
{| class="wikitable"
! Value       !! Type !!! Description
! Value
! Type
! Description
|-
|-
| <tt>0</tt>  || None ||| ???
| {{hl|0}}
| None || ???
|-
|-
| <tt>1</tt>  || Light ||| used for illumination
| {{hl|1}}
| Light || used for illumination
|-
|-
| <tt>2</tt>  || Marking ||| ???
| {{hl|2}}
| Marking || ???
|-
|-
| <tt>4</tt>  || Concealment ||| used for smokes
| {{hl|4}}
| Concealment || used for smokes
|-
|-
| <tt>8</tt> || CounterMeasures ||| ???
| {{hl|8}} || CounterMeasures || ???
|-
|-
| <tt>16</tt> || Mine ||| ???
| {{hl|16}} || Mine || ???
|-
|-
| <tt>32</tt> || Underwater ||| used in underwater environment
| {{hl|32}} || Underwater || used in underwater environment
|-
|-
| <tt>64</tt> || OffensiveInf ||| against infantry
| {{hl|64}} || OffensiveInf || against infantry
|-
|-
| <tt>128</tt> || OffensiveVeh ||| against vehicles
| {{hl|128}} || OffensiveVeh || against vehicles
|-
|-
| <tt>256</tt> || OffensiveAir ||| against air
| {{hl|256}} || OffensiveAir || against air
|-
|-
| <tt>512</tt> ||OffensiveArmour ||| against armored vehicles
| {{hl|512}} ||OffensiveArmour || against armored vehicles
|}
|}


Multiple flags can be combined by adding the values together
Multiple flags can be combined by adding the values together


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
aiAmmoUsageFlags = 4; //for concealment only
aiAmmoUsageFlags = 4; //for concealment only
aiAmmoUsageFlags = "64 + 128"; //against infantry and light vehicles
aiAmmoUsageFlags = "64 + 128"; //against infantry and light vehicles
</syntaxhighlight>
</syntaxhighlight>


====airLock====
==== airLock ====
;Type: [[TokenNameValueTypes|Boolean]]
; Type: [[TokenNameValueTypes|Boolean]]
;Description: Declares if ammo can lock on air targets. Also makes ''AI'' to decide whether to engage air units with the particular ammo.
; Description: Declares if ammo can lock on air targets. Also makes ''AI'' to decide whether to engage air units with the particular ammo.


====allowAgainstInfantry====
==== allowAgainstInfantry ====
;Type: [[TokenNameValueTypes|Boolean]]
; Type: [[TokenNameValueTypes|Boolean]]
;Description: Default <tt>true</tt>. If <tt>false</tt>, the ''AI'' will not (deliberately) employ this weapon against infantry targets. Used to override ''[[#cost|cost]]'' behaviour.
; Description: Default {{hl|true}}. If {{hl|false}}, the ''AI'' will not (deliberately) employ this weapon against infantry targets. Used to override ''[[#cost|cost]]'' behaviour.


====audibleFire====
==== audibleFire ====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: How much can ''AI'' hear when given weapon is fired.
; Description: How much can ''AI'' hear when given weapon is fired.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
audibleFire = 5.0;
audibleFire = 5.0;
</syntaxhighlight>
</syntaxhighlight>
Line 715: Line 715:
=== C ===
=== C ===


====cost====
==== cost ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Description: ''Cost-gain'' evaluation is performed to choose an appropriate weapon.
; Description: ''Cost-gain'' evaluation is performed to choose an appropriate weapon.
:''Gain'' includes self-preservation.
:''Gain'' includes self-preservation.
:''Cost'' includes time required to complete the attack.
:''Cost'' includes time required to complete the attack.
As a result, weapons with ''high cost'' are unlikely to be used against common targets, esp. when ''low cost'' weapons are available. Still, there may be situation where ''AI'' may decide to use high cost weapon, esp. when it thinks it has little chance of survival and needs to attempt destroying enemy quickly.
As a result, weapons with ''high cost'' are unlikely to be used against common targets, esp. when ''low cost'' weapons are available. Still, there may be situation where ''AI'' may decide to use high cost weapon, esp. when it thinks it has little chance of survival and needs to attempt destroying enemy quickly.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
cost = 5000;
cost = 5000;
</syntaxhighlight>
</syntaxhighlight>
Line 729: Line 729:
=== D ===
=== D ===


====dangerRadiusBulletClose====
==== dangerRadiusBulletClose ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Description: Defines how far in meters the AI gets alerted by the bullet's pass. Default value -1 disables the detection. (works only for bullets, no other projectiles).
; Description: Defines how far in meters the AI gets alerted by the bullet's pass. Default value -1 disables the detection. (works only for bullets, no other projectiles).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
deflecting = -1;
deflecting = -1;
</syntaxhighlight>
</syntaxhighlight>


====dangerRadiusHit====
==== dangerRadiusHit ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Description: Defines how far in meters the AI gets alerted by the projectile's impact or explosion. Default value -1 makes this distance be automatically derived from the hit and indirectHit properties (hit * 0.5 + indirectHit * indirectHitRange * 0.5 - but there's also an energy factor).
; Description: Defines how far in meters the AI gets alerted by the projectile's impact or explosion. Default value -1 makes this distance be automatically derived from the hit and indirectHit properties (hit * 0.5 + indirectHit * indirectHitRange * 0.5 - but there's also an energy factor).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
deflecting = -1;
deflecting = -1;
</syntaxhighlight>
</syntaxhighlight>
Line 747: Line 747:
=== M ===
=== M ===


====min/mid/maxRange...====
==== min/mid/maxRange... ====
;Description: These tokens are present in {{Name|ofp|short}} only. They were badly classed in {{Name|ofp|short}}, causing all weapons using this specific ''bullet'' to exhibit this behaviour rather than the behaviour of the ''rifle''. As such they were transferred to Arma's ''cfgWeapons''{{Clarify}}.
; Description: These tokens are present in {{Name|ofp|short}} only. They were badly classed in {{Name|ofp|short}}, causing all weapons using this specific ''bullet'' to exhibit this behaviour rather than the behaviour of the ''rifle''. As such they were transferred to Arma's ''cfgWeapons''{{Clarify}}.


'''Above statement is not true'''; Even in {{Name|arma2|short}} and {{Name|oa|short}}, these values still exist and affect the ''AI'' '''and only the AI''' in the following ways:
'''Above statement is not true'''; Even in {{Name|arma2|short}} and {{Name|arma2oa|short}}, these values still exist and affect the ''AI'' '''and only the AI''' in the following ways:
:The tokens are found/put on each weapons "''firing modes''", or on the gun itself, if it has no separate firing modes{{Clarify}}.
:The tokens are found/put on each weapons "''firing modes''", or on the gun itself, if it has no separate firing modes{{Clarify}}.


=====minRange=====
===== minRange =====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: ''Minimum'' engagement range for the ''AI''.
; Description: ''Minimum'' engagement range for the ''AI''.


Below given values, the ''AI'' '''will not''' engage but just "''stare them down''", even if they get shot at, and (most likely) killed.
Below given values, the ''AI'' '''will not''' engage but just "''stare them down''", even if they get shot at, and (most likely) killed.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
Minrange = 5;
Minrange = 5;
</syntaxhighlight>
</syntaxhighlight>


=====minRangeProbab=====
===== minRangeProbab =====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: ''Probability'' declaring how '''''high''''' the chance is that the ''AI'' will engage a target at ''minRange'' using ''this (current)'' firing mode.
; Description: ''Probability'' declaring how '''''high''''' the chance is that the ''AI'' will engage a target at ''minRange'' using ''this (current)'' firing mode.


Values are <tt>0.0</tt> to <tt>1.0</tt> where <tt>1.0</tt> equates to a ''100% likelihood''.
Values are {{hl|0.0}} to {{hl|1.0}} where {{hl|1.0}} equates to a ''100% likelihood''.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minRangeProbab = 0.02;
minRangeProbab = 0.02;
</syntaxhighlight>
</syntaxhighlight>


=====midRange=====
===== midRange =====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: ''Mid-Range'' engagement range for ''AI'''s using ''this (current)'' firing mode.
; Description: ''Mid-Range'' engagement range for ''AI'''s using ''this (current)'' firing mode.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
midRange = 150;
midRange = 150;
</syntaxhighlight>
</syntaxhighlight>


=====midRangeProbab=====
===== midRangeProbab =====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: ''Probability'' declaring how '''''high''''' the chance is that the ''AI'' will engage a target at ''midRange''.
; Description: ''Probability'' declaring how '''''high''''' the chance is that the ''AI'' will engage a target at ''midRange''.


Values are <tt>0.0</tt> to <tt>1.0</tt> where <tt>1.0</tt> equates to a ''100% likelihood''.
Values are {{hl|0.0}} to {{hl|1.0}} where {{hl|1.0}} equates to a ''100% likelihood''.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
midRangeProbab = 0.7;
midRangeProbab = 0.7;
</syntaxhighlight>
</syntaxhighlight>


=====maxRange=====
===== maxRange =====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: ''Maximum'' range possible for the ''AI''.
; Description: ''Maximum'' range possible for the ''AI''.


Although ''AI's'' '''may''' engage targets slightly beyond ''maxRange'', this is how far the ''AI'' will try to shoot at targets. Targets definitely beyond ''maxRange'' are ignored.
Although ''AI's'' '''may''' engage targets slightly beyond ''maxRange'', this is how far the ''AI'' will try to shoot at targets. Targets definitely beyond ''maxRange'' are ignored.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
maxRange = 500;
maxRange = 500;
</syntaxhighlight>
</syntaxhighlight>


=====maxRangeProbab=====
===== maxRangeProbab =====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: ''Probability'' declaring how '''''high''''' the chance is that the ''AI'' will engage a target at ''maxRange'' (or slightly below).
; Description: ''Probability'' declaring how '''''high''''' the chance is that the ''AI'' will engage a target at ''maxRange'' (or slightly below).


Values are <tt>0.0</tt> to <tt>1.0</tt> where <tt>1.0</tt> equates to a ''100% likelihood''.
Values are {{hl|0.0}} to {{hl|1.0}} where {{hl|1.0}} equates to a ''100% likelihood''.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
maxRangeProbab = 0.51;
maxRangeProbab = 0.51;
</syntaxhighlight>
</syntaxhighlight>


====mineTrigger====
==== mineTrigger ====
;Type: [[TokenNameValueTypes|String]]
; Type: [[TokenNameValueTypes|String]]
;Description: is a in [[CfgMineTriggers_Config_Reference|CfgMineTriggers]] defined class
; Description: is a in [[CfgMineTriggers_Config_Reference|CfgMineTriggers]] defined class


=== S ===
=== S ===


====suppressionRadiusBulletClose====
==== suppressionRadiusBulletClose ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Description: Defines the max. distance in meters at which the AI becomes suppressed by the bullet's pass. Default value -1 disables the suppressive effect (works only for bullets, no other projectiles).
; Description: Defines the max. distance in meters at which the AI becomes suppressed by the bullet's pass. Default value -1 disables the suppressive effect (works only for bullets, no other projectiles).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
suppressionRadiusBulletClose = -1;
suppressionRadiusBulletClose = -1;
</syntaxhighlight>
</syntaxhighlight>


====suppressionRadiusHit====
==== suppressionRadiusHit ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Description: Defines the max. distance in meters at which the AI becomes suppressed by the projectile's impact or explosion. Default value -1 disables the suppressive effect.
; Description: Defines the max. distance in meters at which the AI becomes suppressed by the projectile's impact or explosion. Default value -1 disables the suppressive effect.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
suppressionRadiusHit = -1;
suppressionRadiusHit = -1;
</syntaxhighlight>
</syntaxhighlight>
Line 835: Line 835:
=== V ===
=== V ===


====visibleFire====
==== visibleFire ====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: How much does ''AI'' see a unit firing this weapon.
; Description: How much does ''AI'' see a unit firing this weapon.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
visibleFire = 18;
visibleFire = 18;
</syntaxhighlight>
</syntaxhighlight>


====visibleFireTime====
==== visibleFireTime ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Description: How long is one shot assumed to be noticeable by the ''AI''.
; Description: How long is one shot assumed to be noticeable by the ''AI''.


Values under <tt>5</tt> should be avoided, as ''AI'' can perform in cycles with 5s of no testing in between.
Values under {{hl|5}} should be avoided, as ''AI'' can perform in cycles with 5s of no testing in between.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
visibleFireTime = 18;
visibleFireTime = 18;
</syntaxhighlight>
</syntaxhighlight>
Line 858: Line 858:


==== [[CfgWeapons_Config_Reference#aiBurstTerminable.3Dfalse|aiBurstTerminable]] ====  
==== [[CfgWeapons_Config_Reference#aiBurstTerminable.3Dfalse|aiBurstTerminable]] ====  
;Class: ModeClass
; Class: ModeClass
;Type: [[TokenNameValueTypes|Boolean]]
; Type: [[TokenNameValueTypes|Boolean]]
;Description: AI firemode parameter, when true, AI will terminate burst when target is dead or out of sight  
; Description: AI firemode parameter, when true, AI will terminate burst when target is dead or out of sight  


==== [[CfgWeapons_Config_Reference#aiDispersionCoefX.3D1.0|aiDispersionCoefX]] ====  
==== [[CfgWeapons_Config_Reference#aiDispersionCoefX.3D1.0|aiDispersionCoefX]] ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: Dispersion multiplier for ''AI'' units (axis X - left to right).
; Description: Dispersion multiplier for ''AI'' units (axis X - left to right).


==== [[CfgWeapons_Config_Reference#aiDispersionCoefY.3D1.0|aiDispersionCoefY]] ====  
==== [[CfgWeapons_Config_Reference#aiDispersionCoefY.3D1.0|aiDispersionCoefY]] ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: Dispersion multiplier for ''AI'' units (axis Y - top-down).
; Description: Dispersion multiplier for ''AI'' units (axis Y - top-down).


==== [[CfgWeapons_Config_Reference#aiRateOfFire.3D5.0|aiRateOfFire]] ====  
==== [[CfgWeapons_Config_Reference#aiRateOfFire.3D5.0|aiRateOfFire]] ====  
;Class: ModeClass
; Class: ModeClass
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: Delay between shots at given ''aiRateOfFireDistance''.
; Description: Delay between shots at given ''aiRateOfFireDistance''.


==== [[CfgWeapons_Config_Reference#aiRateOfFireDistance.3D500|aiRateOfFireDistance]] ====  
==== [[CfgWeapons_Config_Reference#aiRateOfFireDistance.3D500|aiRateOfFireDistance]] ====  
;Class: ModeClass
; Class: ModeClass
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Description: At shorter distance delay (''aiRateOfFire'') goes linearly to zero.
; Description: At shorter distance delay (''aiRateOfFire'') goes linearly to zero.


==== [[CfgWeapons_Config_Reference#aiRateOfFireDispersion.3D1|aiRateOfFireDispersion]] ====  
==== [[CfgWeapons_Config_Reference#aiRateOfFireDispersion.3D1|aiRateOfFireDispersion]] ====  
;Class: ModeClass
; Class: ModeClass
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: Property that affects the randomness of delay between shots. Value sets the maximum of the range in which a random number influencing the delay between shots is generated. 0 means the delay between shots will be the same (with given actual distance). The bigger the value the longer delay can be generated.
; Description: Property that affects the randomness of delay between shots. Value sets the maximum of the range in which a random number influencing the delay between shots is generated. 0 means the delay between shots will be the same (with given actual distance). The bigger the value the longer delay can be generated.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
// randomized delay after shot
// randomized delay after shot
timeToShot = aiRateOfFire + aiRateOfFireDispersion * Random<0,1>
timeToShot = aiRateOfFire + aiRateOfFireDispersion * Random<0,1>
Line 891: Line 891:


==== [[autoFire.3Dfalse|autoFire]] ====
==== [[autoFire.3Dfalse|autoFire]] ====
;Class: ModeClass
; Class: ModeClass
;Type: [[TokenNameValueTypes|Boolean]]
; Type: [[TokenNameValueTypes|Boolean]]
;Description: If <tt>true</tt>, weapon will fire repeatedly all the while you hold the fire button down.
; Description: If {{hl|true}}, weapon will fire repeatedly all the while you hold the fire button down.


And if <tt>true</tt> the gunner can use the weapon on his own discretion (no ''commander'' fire order needed - like ''MG'' type).
And if {{hl|true}} the gunner can use the weapon on his own discretion (no ''commander'' fire order needed - like ''MG'' type).


=== M ===
=== M ===


==== [[CfgWeapons_Config_Reference#min.2Fmid.2FmaxRange...|min/mid/maxRange...]] ====  
==== [[CfgWeapons_Config_Reference#min.2Fmid.2FmaxRange...|min/mid/maxRange...]] ====  
;Class: ArmaModeClass
; Class: ArmaModeClass
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]
;Description: Together with ''range'' and ''rangeProbab'' values, defines probability to use this weapon for ''AI'' units at given distance.
; Description: Together with ''range'' and ''rangeProbab'' values, defines probability to use this weapon for ''AI'' units at given distance.


==== [[CfgWeapons_Config_Reference#minRange.3D1|minRange]] ====
==== [[CfgWeapons_Config_Reference#minRange.3D1|minRange]] ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]


==== [[CfgWeapons_Config_Reference#minRangeProbab.3D0.3|minRangeProbab]] ====
==== [[CfgWeapons_Config_Reference#minRangeProbab.3D0.3|minRangeProbab]] ====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]


==== [[CfgWeapons_Config_Reference#midRange.3D150|midRange]] ====
==== [[CfgWeapons_Config_Reference#midRange.3D150|midRange]] ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]


==== [[CfgWeapons_Config_Reference#midRangeProbab.3D_0.58|midRangeProbab]] ====
==== [[CfgWeapons_Config_Reference#midRangeProbab.3D_0.58|midRangeProbab]] ====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]


==== [[CfgWeapons_Config_Reference#maxRange.3D500|maxRange]] ====
==== [[CfgWeapons_Config_Reference#maxRange.3D500|maxRange]] ====
;Type: [[TokenNameValueTypes|Integer]]
; Type: [[TokenNameValueTypes|Integer]]


==== [[CfgWeapons_Config_Reference#maxRangeProbab.3D0.04|maxRangeProbab]] ====
==== [[CfgWeapons_Config_Reference#maxRangeProbab.3D0.04|maxRangeProbab]] ====
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
 
=== O ===
 
==== [[Arma_3:_ItemInfo_Config_Reference#opticType|opticType]] ====
; Class: ItemInfo
; Type: [[TokenNameValueTypes|Integer]]
; Description: Parameter which defines opticType of given optics. It is used together [[CfgWeapons_Config_Reference#requiredOpticType.3D-1|requiredOpticType]] to create additional fire modes with higher engagement ranges
 
<syntaxhighlight lang="cpp">
opticType = 0; // Typically used for optics without magnification (Default)
opticType = 1; // Typically used for optics with magnification level between 2.5 - 5x
opticType = 2; // Typically used for scopes with high magnification (>5x)
</syntaxhighlight>
 
=== R ===
 
==== [[CfgWeapons_Config_Reference#requiredOpticType.3D-1|requiredOpticType]] ====
; Class: ModeClass
; Type: [[TokenNameValueTypes|Integer]]
; Description: Required [[Arma_3_ItemInfo_Config_Reference#opticType|opticType]] for AI to be able to use this fire mode. It is mainly use to increase maximum engagement distance of AI depending on the optics it has mount on its rifle
 
<syntaxhighlight lang="cpp">
class single_close_optics1 : Single // This optic mode will be used if AI unit has optic mounted on this weapon with opticType >= 1. AI will engage between
{
requiredOpticType = 1;
showToPlayer = 0;
minRange = 2;
minRangeProbab = 0.05;
midRange = 300;
midRangeProbab = 0.8;
maxRange = 500;
maxRangeProbab = 0.01;
aiRateOfFire = 2;
aiRateOfFireDistance = 300;
};
class single_medium_optics1 : single_close_optics1 // Same as single_close_optics1 - requiredOpticType is inherited and therefore opticType >= 1 is required
{
minRange = 300;
minRangeProbab = 0.05;
midRange = 500;
midRangeProbab = 0.7;
maxRange = 700;
maxRangeProbab = 0.05;
aiRateOfFire = 2;
aiRateOfFireDistance = 500;
};
class single_far_optics1 : single_medium_optics1 // this optic mode will be only used if AI unit has optic with opticType = 2 mounted. With this fire mode AI will engage enemies up to 1km
{
requiredOpticType = 2;
minRange = 300;
minRangeProbab = 0.05;
midRange = 700;
midRangeProbab = 0.5;
maxRange = 1000;
maxRangeProbab = 0.05;
aiRateOfFire = 4;
aiRateOfFireDistance = 600;
};
</syntaxhighlight>


=== S ===
=== S ===


==== [[CfgWeapons_Config_Reference#showToPlayer.3Dtrue|showToPlayer]] ====  
==== [[CfgWeapons_Config_Reference#showToPlayer.3Dtrue|showToPlayer]] ====  
;Class: ModeClass
; Class: ModeClass
;Type: [[TokenNameValueTypes|Boolean]]
; Type: [[TokenNameValueTypes|Boolean]]
;Description: Some modes defined for ''AI'' usage (''e.g.'' burst modes for full auto weapons) can be hidden from player with this parameter.
; Description: Some modes defined for ''AI'' usage (''e.g.'' burst modes for full auto weapons) can be hidden from player with this parameter.


== [[CfgVehicles_Config_Reference|CfgVehicles]] ==
== [[CfgVehicles_Config_Reference|CfgVehicles]] ==
Line 943: Line 1,002:
'''A value of 1000 causes the underlying class to be identified instead.''' Eg bushy trees, pink trees and yellow trees, can all be 'identified' as "trees". The description "bushy trees" is then used solely when Editing. See [[#VehicleClass]]
'''A value of 1000 causes the underlying class to be identified instead.''' Eg bushy trees, pink trees and yellow trees, can all be 'identified' as "trees". The description "bushy trees" is then used solely when Editing. See [[#VehicleClass]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
accuracy = 0.2; // buildings
accuracy = 0.2; // buildings
accuracy = 0.5; // small vehicles
accuracy = 0.5; // small vehicles
Line 963: Line 1,022:
Used for 'vehicles' to repair other 'vehicles'. Thus a hospital has an attendant that can repair soldiers. Adds the action "Heal at XXX"
Used for 'vehicles' to repair other 'vehicles'. Thus a hospital has an attendant that can repair soldiers. Adds the action "Heal at XXX"


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
attendant = true;
attendant = true;
</syntaxhighlight>
</syntaxhighlight>


==== AttributeValues ====  
==== AttributeValues ====  
{{Feature Eden Editor|Editing the ''AttributeValues'' class of objects allows you to change the default values.}}  
{{Feature|edeneditor|Editing the ''AttributeValues'' class of objects allows you to change the default values.}}  


===== Skill =====
===== Skill =====
Line 975: Line 1,034:
Changes the default Skill slider value of the unit
Changes the default Skill slider value of the unit


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class AttributeValues  
class AttributeValues  
{
{
    Skill = 0.5;
Skill = 0.5;
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 987: Line 1,046:
Changes the default [[setUnitPos]] toolbox value of the unit
Changes the default [[setUnitPos]] toolbox value of the unit


{| class="bikitable"
{| class="wikitable"
! Numeric value !! [[unitPos]]
! Numeric value !! [[unitPos]]
|-
|-
Line 999: Line 1,058:
|}
|}


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class AttributeValues  
class AttributeValues  
{
{
    UnitPos = 0; // "AUTO"
UnitPos = 0; // "AUTO"
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 1,009: Line 1,068:
[[TokenNameValueTypes|float]]: Default Value 1
[[TokenNameValueTypes|float]]: Default Value 1


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
audible = .05; // man
audible = .05; // man
audible = 3; // motorcycle
audible = 3; // motorcycle
Line 1,026: Line 1,085:
Used to describe which sensory inputs are available to which crew members.  
Used to describe which sensory inputs are available to which crew members.  


{| class="bikitable"
{| class="wikitable"
! Numeric value !! CanSee.. define !! Description
! Numeric value !! CanSee.. define !! Description
|-
|-
Line 1,044: Line 1,103:
Multiple values can be added (or binary ored, giving the same result) together.
Multiple values can be added (or binary ored, giving the same result) together.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
commanderCanSee = 31; // default
commanderCanSee = 31; // default
gunnerCanSee = 4+8+16; // default
gunnerCanSee = 4+8+16; // default
Line 1,050: Line 1,109:
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
#define CanSeeRadar 1
#define CanSeeRadar 1
#define CanSeeEye 2
#define CanSeeEye 2
Line 1,061: Line 1,120:
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
commanderCanSee = CanSeeAll;
commanderCanSee = CanSeeAll;
gunnerCanSee = CanSeeOptics+CanSeeEar+CanSeeCompass;
gunnerCanSee = CanSeeOptics+CanSeeEar+CanSeeCompass;
Line 1,072: Line 1,131:
how difficult to spot. bigger = easier
how difficult to spot. bigger = easier


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
camouflage = 0.6; // snipers
camouflage = 0.6; // snipers
camouflage = 1; // man
camouflage = 1; // man
Line 1,093: Line 1,152:
part of the man class.
part of the man class.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
canDeactivateMines= true; // SoldierEngineer
canDeactivateMines= true; // SoldierEngineer
</syntaxhighlight>
</syntaxhighlight>
Line 1,100: Line 1,159:
[[TokenNameValueTypes|Float]]:
[[TokenNameValueTypes|Float]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
coefInside = 2; // cost for movement inside buildings
coefInside = 2; // cost for movement inside buildings
coefInsideHeur = 4.3; // estimation of cost based on in/out points
coefInsideHeur = 4.3; // estimation of cost based on in/out points
Line 1,108: Line 1,167:
Used by the static class for non moving objects such as buildings
Used by the static class for non moving objects such as buildings


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
coefInside = 1; // forest
coefInside = 1; // forest
coefInsideHeur = 0.25;
coefInsideHeur = 0.25;
Line 1,118: Line 1,177:
This value reflects the attractiveness of the target to the enemy AI. When ''all other considerations are equal''. A soldier eg is not interested in Air, despite it is highly attractive cost values. On the other hand, he is interested in a medic, since a medic (in normal configs) has a (while small) a higher cost, than others in the group, including the officer.
This value reflects the attractiveness of the target to the enemy AI. When ''all other considerations are equal''. A soldier eg is not interested in Air, despite it is highly attractive cost values. On the other hand, he is interested in a medic, since a medic (in normal configs) has a (while small) a higher cost, than others in the group, including the officer.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
cost = 10000000; // an air vehicle is typically this value
cost = 10000000; // an air vehicle is typically this value
cost = 8; // a medic;
cost = 8; // a medic;
Line 1,133: Line 1,192:
Determines if AI can decide to go through the object. This parameter skips regular mass checking if object can smashed through
Determines if AI can decide to go through the object. This parameter skips regular mass checking if object can smashed through


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
driveThroughEnabled = 1; // test parameter for AI knowing they can drive through the object
driveThroughEnabled = 1; // test parameter for AI knowing they can drive through the object
</syntaxhighlight>
</syntaxhighlight>
Line 1,140: Line 1,199:
[[TokenNameValueTypes|Float]]: If the damage value of the vehicle is higher than the ejectDamageLimit, AI will disembark the vehicle.
[[TokenNameValueTypes|Float]]: If the damage value of the vehicle is higher than the ejectDamageLimit, AI will disembark the vehicle.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
ejectDamageLimit = 0.75;
ejectDamageLimit = 0.75;
</syntaxhighlight>
</syntaxhighlight>
Line 1,149: Line 1,208:
[[TokenNameValueTypes|Boolean]]: Default true. Used by Helicopter class
[[TokenNameValueTypes|Boolean]]: Default true. Used by Helicopter class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
enableSweep = false; / /UH60MG
enableSweep = false; / /UH60MG
</syntaxhighlight>
</syntaxhighlight>
Line 1,160: Line 1,219:
[[TokenNameValueTypes|Integer]]:
[[TokenNameValueTypes|Integer]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
formationX = 10; // default meters
formationX = 10; // default meters
formationZ = 20; // default meters
formationZ = 20; // default meters
Line 1,176: Line 1,235:
* \a3\characters_f\scripts\formationCDanger.fsm
* \a3\characters_f\scripts\formationCDanger.fsm


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
fsmDanger = "-"; // CAManBase
fsmDanger = "-"; // CAManBase
fsmDanger = "A3\characters_f\scripts\formationCDanger.fsm"; // Civilian_F
fsmDanger = "A3\characters_f\scripts\formationCDanger.fsm"; // Civilian_F
Line 1,187: Line 1,246:
* A3\characters_f\scripts\formationCDanger.fsm
* A3\characters_f\scripts\formationCDanger.fsm


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
fsmFormation = "Formation"; // CAManBase, referring to (configFile >> "CfgFSMs" >> "Formation")
fsmFormation = "Formation"; // CAManBase, referring to (configFile >> "CfgFSMs" >> "Formation")
fsmDanger = "A3\characters_f\scripts\formationCDanger.fsm"; // Civilian_F
fsmDanger = "A3\characters_f\scripts\formationCDanger.fsm"; // Civilian_F
Line 1,197: Line 1,256:
[[TokenNameValueTypes|Integer]]:degrees
[[TokenNameValueTypes|Integer]]:degrees


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minGunElev = -60;
minGunElev = -60;
maxGunElev = 60;
maxGunElev = 60;
Line 1,211: Line 1,270:
[[TokenNameValueTypes|Integer]] Degrees  
[[TokenNameValueTypes|Integer]] Degrees  


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minHeadTurnAI = -70; // man class
minHeadTurnAI = -70; // man class
maxHeadTurnAI = 70;
maxHeadTurnAI = 70;
Line 1,223: Line 1,282:
Probaly used to stop ai looking down
Probaly used to stop ai looking down


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
irScanGround = false; // tanks
irScanGround = false; // tanks
</syntaxhighlight>
</syntaxhighlight>
Line 1,230: Line 1,289:
[[TokenNameValueTypes|Integer]]: Default 0
[[TokenNameValueTypes|Integer]]: Default 0


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
irScanRange = 4000; // outdated (since Resistance)
irScanRange = 4000; // outdated (since Resistance)
irScanRangeMin = 500; // tanks general
irScanRangeMin = 500; // tanks general
Line 1,243: Line 1,302:
[[TokenNameValueTypes|Integer]]: Default 1
[[TokenNameValueTypes|Integer]]: Default 1


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
irScanToEyeFactor = 2; // air
irScanToEyeFactor = 2; // air
irScanToEyeFactor = 5; // shilka
irScanToEyeFactor = 5; // shilka
Line 1,255: Line 1,314:
Disabling it will make the vehicle NOT to be engaged by infantry anti-tank gunners nor vehicle weapons. It will only be engaged by small arms, and only if its armor value is low enough for AI infantry to think it can damage it by shooting at it.  
Disabling it will make the vehicle NOT to be engaged by infantry anti-tank gunners nor vehicle weapons. It will only be engaged by small arms, and only if its armor value is low enough for AI infantry to think it can damage it by shooting at it.  


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
irTarget = false; // man
irTarget = false; // man
</syntaxhighlight>
</syntaxhighlight>
Line 1,264: Line 1,323:
[[TokenNameValueTypes|Integer]]: Default 20 seconds
[[TokenNameValueTypes|Integer]]: Default 20 seconds


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minFireTime = 20;
minFireTime = 20;
</syntaxhighlight>
</syntaxhighlight>
Line 1,277: Line 1,336:
Namesound is used by the AI audio to indicate verbally where to go, what 'vehicle' to attack. Thus the audio speech "move to 'rock' 3 o'clock' is derived from the ''nameSound''.
Namesound is used by the AI audio to indicate verbally where to go, what 'vehicle' to attack. Thus the audio speech "move to 'rock' 3 o'clock' is derived from the ''nameSound''.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
nameSound = "rock";
nameSound = "rock";
</syntaxhighlight>
</syntaxhighlight>
Line 1,283: Line 1,342:
Many different nameSounds can be selected. Here are just a few.
Many different nameSounds can be selected. Here are just a few.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
nameSound = crew;
nameSound = crew;
nameSound = target;  
nameSound = target;
nameSound = tank;
nameSound = tank;
nameSound = house;
nameSound = house;
Line 1,294: Line 1,353:
Typically, a collection of buildings (eg) will be configured as follows
Typically, a collection of buildings (eg) will be configured as follows


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class GenBuilding : NonStrategic {
class GenBuilding : NonStrategic {
scope=private; // internal use only
scope=private; // internal use only
Line 1,300: Line 1,359:
namesound="house";
namesound="house";
};
};
class YellowBuilding: GenBuilding {
class YellowBuilding : GenBuilding {
scope=public;
scope=public;
name="YellowBuilding";
name="YellowBuilding";
Line 1,315: Line 1,374:
[[TokenNameValueTypes|Boolean]]: Default false
[[TokenNameValueTypes|Boolean]]: Default false


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
preferRoads = true; // all vehicles
preferRoads = true; // all vehicles
</syntaxhighlight>
</syntaxhighlight>
Line 1,327: Line 1,386:
The bigger the value, the better the hearing.
The bigger the value, the better the hearing.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
sensitivityEar = 0.13; // man
sensitivityEar = 0.13; // man
</syntaxhighlight>
</syntaxhighlight>
Line 1,336: Line 1,395:
Setting maxSpeed for infantry units too low might cause problems when working with waypoints (units won't be able to fully complete them or won't move towards them).
Setting maxSpeed for infantry units too low might cause problems when working with waypoints (units won't be able to fully complete them or won't move towards them).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minSpeed = -0.5; // range 0->1
minSpeed = -0.5; // range 0->1
maxSpeed = 80; // default
maxSpeed = 80; // default
Line 1,354: Line 1,413:
The ai for this model selects targets of opportunity, based on these values.
The ai for this model selects targets of opportunity, based on these values.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
threat[] = {1, 0.0500000, 0.050000}; // soldier
threat[] = {1, 0.0500000, 0.050000}; // soldier
threat[] = {1, 0.900000, 0.100000}; // law soldier
threat[] = {1, 0.900000, 0.100000}; // law soldier
Line 1,369: Line 1,428:
In well written configs, the 3 possible values are declared as defines at top of file for legibility
In well written configs, the 3 possible values are declared as defines at top of file for legibility


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
#define VSoft 0
#define VSoft 0
#define VArmor 1
#define VArmor 1
Line 1,386: Line 1,445:
[[TokenNameValueTypes|Boolean]]: default true
[[TokenNameValueTypes|Boolean]]: default true


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
unloadInCombat = false;
unloadInCombat = false;
</syntaxhighlight>
</syntaxhighlight>
Line 1,397: Line 1,456:


==== [[CfgMoves_Config_Reference#variantsAI.5B.5D|variantsAI[]]] ====  
==== [[CfgMoves_Config_Reference#variantsAI.5B.5D|variantsAI[]]] ====  
;Type: [[TokenNameValueTypes|Array]]
; Type: [[TokenNameValueTypes|Array]]
;Description: Found in ''States'' when there are several variations on the same animation (usually idles) that can be played randomly.
; Description: Found in ''States'' when there are several variations on the same animation (usually idles) that can be played randomly.


It lists the animations to be randomly cycled. The numbers represent the probability of that animation being played, the higher the number, the more likely the animation will get to play.
It lists the animations to be randomly cycled. The numbers represent the probability of that animation being played, the higher the number, the more likely the animation will get to play.


The sum of these numbers is always <tt>1</tt>.
The sum of these numbers is always {{hl|1}}.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
//Default
//Default
variantsAI[] = {""};  
variantsAI[] = {""};
//AidlPercMstpSnonWnonDnon        
//AidlPercMstpSnonWnonDnon
variantsAI[] = {"AidlPercMstpSnonWnonDnon01", 0.01,
variantsAI[] = {"AidlPercMstpSnonWnonDnon01", 0.01,
    "AidlPercMstpSnonWnonDnon02", 0.01,
"AidlPercMstpSnonWnonDnon02", 0.01,
    "AidlPercMstpSnonWnonDnon03", 0.01,
"AidlPercMstpSnonWnonDnon03", 0.01,
    "AidlPercMstpSnonWnonDnon04", 0.01,
"AidlPercMstpSnonWnonDnon04", 0.01,
    "AidlPercMstpSnonWnonDnon05", 0.01,
"AidlPercMstpSnonWnonDnon05", 0.01,
    "AidlPercMstpSnonWnonDnon06", 0.01,
"AidlPercMstpSnonWnonDnon06", 0.01,
    "AidlPercMstpSnonWnonDnon07", 0.01,
"AidlPercMstpSnonWnonDnon07", 0.01,
    "AidlPercMstpSnonWnonDnon08", 0.01,
"AidlPercMstpSnonWnonDnon08", 0.01,
    "AidlPercMstpSnonWnonDnon_idleSteady04", 0.23,
"AidlPercMstpSnonWnonDnon_idleSteady04", 0.23,
    "AidlPercMstpSnonWnonDnon_idleSteady03", 0.23,
"AidlPercMstpSnonWnonDnon_idleSteady03", 0.23,
    "AidlPercMstpSnonWnonDnon_idleSteady02", 0.23,
"AidlPercMstpSnonWnonDnon_idleSteady02", 0.23,
    "AidlPercMstpSnonWnonDnon_idleSteady01", 0.23};
"AidlPercMstpSnonWnonDnon_idleSteady01", 0.23};
//ActsPsitMstpSnonWnonDnon_varSittingOnTheWall
//ActsPsitMstpSnonWnonDnon_varSittingOnTheWall
variantsAI[] = {"Mi17_Cargo02", 0.4, "Mi17_Cargo02_V1", 0.1, "Mi17_Cargo02_V2", 0.1, "Mi17_Cargo02_V3", 0.1,
variantsAI[] = {"Mi17_Cargo02", 0.4, "Mi17_Cargo02_V1", 0.1, "Mi17_Cargo02_V2", 0.1, "Mi17_Cargo02_V3", 0.1,
    "Mi17_Cargo02_V4", 0.1, "Mi17_Cargo02_V5", 0.1, "Mi17_Cargo02_V6", 0.1};
"Mi17_Cargo02_V4", 0.1, "Mi17_Cargo02_V5", 0.1, "Mi17_Cargo02_V6", 0.1};
//aidlpercmstpsraswlnrdnon_S
//aidlpercmstpsraswlnrdnon_S
variantsAI[] = {"aidlpercmstpsraswlnrdnon_1", 0.333, "aidlpercmstpsraswlnrdnon_2", 0.333, "aidlpercmstpsraswlnrdnon_3", 0.334};
variantsAI[] = {"aidlpercmstpsraswlnrdnon_1", 0.333, "aidlpercmstpsraswlnrdnon_2", 0.333, "aidlpercmstpsraswlnrdnon_3", 0.334};
Line 1,428: Line 1,487:


==== [[CfgMoves_Config_Reference#visibleSize|visibleSize]] ====  
==== [[CfgMoves_Config_Reference#visibleSize|visibleSize]] ====  
;Type: [[TokenNameValueTypes|Float]]
; Type: [[TokenNameValueTypes|Float]]
;Description: Found in ''States'', probably used for calculating how visible a character is for the ''AI'', based on his stance/animation.
; Description: Found in ''States'', probably used for calculating how visible a character is for the ''AI'', based on his stance/animation.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
visibleSize = 1.00012;       //SprintBaseDf                 when sprinting more visible than..
visibleSize = 1.00012; // SprintBaseDf when sprinting more visible than..
visibleSize = 0.700121;     //AmovPercMstpSrasWrflDnon     ..when stopped > visible than..
visibleSize = 0.700121; // AmovPercMstpSrasWrflDnon ..when stopped > visible than..
visibleSize = 0.300122;     //AmovPknlMstpSlowWrflDnon     ..when kneeling > visible than..
visibleSize = 0.300122; // AmovPknlMstpSlowWrflDnon ..when kneeling > visible than..
visibleSize = 0.100123;     //AmovPpneMstpSrasWrflDnon     ..when prone.
visibleSize = 0.100123; // AmovPpneMstpSrasWrflDnon ..when prone.
</syntaxhighlight>
</syntaxhighlight>


Line 1,445: Line 1,504:
[[TokenNameValueTypes|Integer]]: Allows restricting the AI from entering prone with two levels of emphasis
[[TokenNameValueTypes|Integer]]: Allows restricting the AI from entering prone with two levels of emphasis


{| class="bikitable"
{| class="wikitable"
! Value !! Description
! Value !! Description
|-
|-
| <tt>0</tt> || No change in behavior
| {{hl|0}} || No change in behavior
|-
|-
| <tt>1</tt> || Less preference for going prone - avoid prone (unless stealth or suppressed or *)
| {{hl|1}} || Less preference for going prone - avoid prone (unless stealth or suppressed or *)
|-
|-
| <tt>2</tt> || Almost never going prone - never prone (unless *)
| {{hl|2}} || Almost never going prone - never prone (unless *)
|}
|}


Line 1,461: Line 1,520:
==== [[Arma_3_CfgSurfaces_Config_Reference#grassCover|grassCover]] ====  
==== [[Arma_3_CfgSurfaces_Config_Reference#grassCover|grassCover]] ====  
[[TokenNameValueTypes|Float]]: Reduces visibleSize (taken from [[CfgMoves_Config_Reference#visibleSize|CfgMovesBasic]]) of unit for AI visibility movement computations (cannot make fully invisible) - it is NOT about visual drawing
[[TokenNameValueTypes|Float]]: Reduces visibleSize (taken from [[CfgMoves_Config_Reference#visibleSize|CfgMovesBasic]]) of unit for AI visibility movement computations (cannot make fully invisible) - it is NOT about visual drawing
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
grassCover = 0; // Used by GdtStratisConcrete, there will be no simulated grass cover at a distance
grassCover = 0; // Used by GdtStratisConcrete, there will be no simulated grass cover at a distance
grassCover = 0.05; // Used by GdtStratisGreenGrass, there will be some simulated grass cover at a distance
grassCover = 0.05; // Used by GdtStratisGreenGrass, there will be some simulated grass cover at a distance
Line 1,473: Line 1,532:


[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes|Boolean]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
blockAIVisibility = true;
blockAIVisibility = true;
</syntaxhighlight>
</syntaxhighlight>
Line 1,479: Line 1,538:
== [[2D_Editor:_Waypoints#Formation|CfgFormations]] ==
== [[2D_Editor:_Waypoints#Formation|CfgFormations]] ==
This class lists the formations for each side, each side containing nine classes:
This class lists the formations for each side, each side containing nine classes:
{| class="bikitable"
{| class="wikitable"
! CfgFormations class !! [[formation]]
! CfgFormations class !! [[formation]]
|-
|-
Line 1,506: Line 1,565:
===== FormationPositionInfoN[] =====
===== FormationPositionInfoN[] =====
[[TokenNameValueTypes|Array]]: Sets fixed position from formation center for position N {{cn}}
[[TokenNameValueTypes|Array]]: Sets fixed position from formation center for position N {{cn}}
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class Fixed // Taken from Wedge class
class Fixed // Taken from Wedge class
{
{
    FormationPositionInfo1[] = {-1,0,0,0};
FormationPositionInfo1[] = {-1,0,0,0};
    FormationPositionInfo2[] = {0,1,-1,0.785398};
FormationPositionInfo2[] = {0,1,-1,0.785398};
};
};
</syntaxhighlight>
</syntaxhighlight>


==== Pattern ====
==== Pattern ====
Subclass of above formation classes, contains pattern for when there aren't enough Fixed positions
Subclass of above formation classes, contains pattern for when there are not enough Fixed positions


===== FormationPositionInfoN[] =====
===== FormationPositionInfoN[] =====
[[TokenNameValueTypes|Array]]: Sets pattern position from previous fixed/pattern position N {{cn}}
[[TokenNameValueTypes|Array]]: Sets pattern position from previous fixed/pattern position N {{cn}}
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class Pattern // Taken from Wedge class
class Pattern // Taken from Wedge class
{
{
    FormationPositionInfo1[] = {-2,-1,-1,-0.785398};
FormationPositionInfo1[] = {-2,-1,-1,-0.785398};
    FormationPositionInfo2[] = {-1,1,-1,0.785398};
FormationPositionInfo2[] = {-1,1,-1,0.785398};
};
};
</syntaxhighlight>
</syntaxhighlight>


{{Cfg ref|end}}
{{ConfigPage|end}}


{{GameCategory|arma3|Editing}}
{{GameCategory|arma3|Reference Lists}}
[[Category:AI]]
[[Category:AI]]

Latest revision as of 22:42, 16 May 2024

Note that this is the relevant page for Arma 3 AI configuration. Implementations for older Arma titles differ somewhat, but are irrelevant for Arma 3.

CfgBrains Config Reference

As of Arma 3 logo black.png2.00 it contains three classes

  • DefaultAnimalBrain
  • DefaultCivilianBrain
  • DefaultSoldierBrain

Each of which contains a Components class. Only DefaultSoldierBrain includes any components by default.

Sources:

  1. oukej, BI-Forums, AI Discussion
  2. klamacz, BI-Forums, AI Discussion
  3. .kju, BI-Forums, AI must have better autonomy.
Source 2 states that you can create a custom soldier brain, but nowhere is it stated which brain a unit will use.

AIBrainAimingErrorComponent

B

best/worstDecreaseTime

Description
How long (in seconds) it should take a 1 and 0 skilled unit respectivelly to stabilize their aim completely
bestDecreaseTime
Type
Float
Default
0.2
worstDecreaseTime
Type
Float
Default
2

D

damageCoef

Type
Float
Default
10
Description
Importance of damage of entity, multiplier

F

fatigueCoef

Type
Float
Default
10
Description
Importance of damage of entity, multiplier

L

lostTargetCoef

Type
Float
Default
3
Description
Importance of loosing target event, multiplier

lostTargetTimeMax

Type
Float
Default
3
Description
How long error is raising after loosing sight of target

lostTargetTimeMin

Type
Float
Default
0.5
Description
How soon after loosing sight of target, error starts to raise

M

maxAngularError

Type
Float
Default
0.1309
Description
Half of the error cone in radians

maxAngularErrorTurrets

Type
Float
Default
? (0.0872, but sources do not all match)
Description
Half of the error cone in radians, used for turrets

movingInfluence

Type
Float
Default
1
Description
Importance of moving in algorithm, multiplier

S

shootingInfluence

Type
Float
Default
0.4
Description
Importance of shooting in algorithm, multiplier

suppressionCoef

Type
Float
Default
0.5
Description
Importance of suppression value, multiplier

T

turningInfluence

Type
Float
Default
1
Description
Importance of turning in algorithm, multiplier

AIBrainCountermeasuresComponent

C

CMCheckDelay

Type
Float
Default
0.8

CMOnTargettedProbability

Type
Float
Default
0.1

N

nonLeaderSmokeProbability

Type
Float
Default
0.1

M

minimalThrowDistance

Clarify

Type
Integer
Default
900

minReactionTime

Type
Float
Default
0.1

maxReactionTime

Type
Float
Default
3

R

randomReactionTimePercent

Type
Float
Default
0.2

S

suppressionThreshold

Type
Float
Default
0.8

suppressionTimerMax

Type
Float
Default
2

U

useSmokeGrenadeDelay

Type
Integer
Default
20

AIBrainSuppressionComponent

C

cause...

Type
Float
Description
How much impact different danger causes will have on suppression
causeBulletCloseWeight
Type
Float
Default
0.5
Source 1 and 2 provides conflicting default values of 0.5 and 0.15
causeExplosionWeight
Type
Float
Default
0.5
Source 1 and 2 provides conflicting default values of 0.5 and 0.15
causeFireWeight
Type
Float
Default
0.5
causeHitWeight
Type
Float
Default
0.5

D

...DecreaseTime

Type
Float
Description
How long it will take for a unit to loose suppression
bestDecreaseTime
Type
Float
Default
1
Description
How long it will take for a skill 1 unit to loose suppression[citation needed]
worstDecreaseTime
Type
Float
Default
10
Description
How long it will take for a skill 0 unit to loose suppression[citation needed]

M

maxSuppression

Type
Float
Default
1.0
Description
Maximum level of suppression

suppressionRange

Type
Float
Default
1.0 / 20.0 ?
Description
Default suppression range, if not provided by ammo type
Source 1 and 2 provides conflicting default values of 1.0 and 20.0

suppressionThreshold

Type
Float
Default
0.7
Description
Threshold to change behavior (use smoke grenades for example)

AIBrainTargetSelectorComponent

As of Arma 3 logo black.png2.00 this component appears to be unimplemented and empty.

AI Skill Config Reference

CfgAILevelPresets

This sets the values for the different presets available in Game Settings, by default there are four classes available:

  • AILevelHigh
  • AILevelMedium
  • AILevelLow
  • Custom

Each of which feature the following properties

D

displayName

Type
String
Description
Text displayed in the dropdown menu
displayName = "Custom"

P

precisionAI

Type
Float
Description
Coefficient applied to all accuracy skills

S

skillAI

Type
Float
Description
Coefficient applied to all utility skills

CfgAISkill

A

aimingAccuracy

Type
Array
Default
{0,0,1,1}

aimingShake

Type
Array
Default
{0,0,1,1}

aimingSpeed

Type
Array
Default
{0,0.5,1,1}

C

commanding

Type
Array
Default
{0,0,1,1}

courage

Type
Array
Default
{0,0,1,1}

E

endurance

This tokenName is no longer available in Arma 3.
Type
Array
Default
{0,0,1,1}

G

general

Type
Array
Default
{0,0,1,1}

R

reloadSpeed

Type
Array
Default
{0,0,1,1}

S

spotDistance

Type
Array
Default
{0,0,1,1}

spotTime

Type
Array
Default
{0,0,1,1}

CfgDifficultyPresets

L

levelAI

Type
String
Description
Refers to CfgAILevelPresets

AI Steering Components

Subclasses of (configFile >> "CfgVehicles" >> _vehicle >> "components") class

AICarSteeringComponent

Default values taken from Car_F class

A

allow...

boolean

allowOvertaking = true;			// overtaking is part of collision avoidance
allowCollisionAvoidance = true;
allowDrifting = false;			// allow using movement vector as direction

C

commandTurnFactor

How strong AI will turn when commanded left/right

float

commandTurnFactor = 1.0;

convoyPIDWeights[]

Array

convoyPIDWeights[] = {1,0.01,0.01};

D

differenceAngleCoef

float

differenceAngleCoef = 1.0;

doPredictForward

Prediction ahead is used for both steering and analysing of shape to modify the speed

Boolean

doPredictForward = true;
predictForwardRange[]

Array

predictForwardRange[] = { 1, 20 };
steerAheadSaturation[]

Steer ahead is a point to steer to, saturated down to given range, in meters

Array

steerAheadSaturation[] = { 0.01, 0.4 };

doRemapSpeed

Remapping of maxSpeed of vehicle, for fast vehicles we want to lower the used speed

Boolean

doRemapSpeed = true;
remapSpeedRange

Array

remapSpeedRange[] = { 30.0, 70.0 };
remapSpeedScalar

Array

remapSpeedScalar[] = { 1.0, 0.35 };

S

speedPIDWeights

Controls working parameters of speed PID controller (Kp, Ki, Kd)

Array

speedPIDWeights[] = { 0.7, 0.2, 0.0 };

speedPredictionMethod

Integer: Determines the manipulability of the class.

Value Type
0 Three angles method
1 Wheel direction method
2 Combined method
speedPredictionMethod = 2;
...AngleCoef

Four coef's to determine how much given angle should influence slowing down

Float

wheelAngleCoef = 0.7;
forwardAngleCoef = 0.7;
steeringAngleCoef = 1.0;
differenceAngleCoef = 0.4;
minSpeedToKeep

Parameter of predictionMethod = 1

Float

minSpeedToKeep = 0.1;
maxWheelAngleDiff

Parameter of predictionMethod = 1

Float

maxWheelAngleDiff = 0.2616;

steeringPIDWeights

Controls working parameters of steering PID controller (Kp, Ki, Kd)

Array

steeringPIDWeights[] = { 1.2, 0.1, 0.2 };

stuckMaxTime

For how long we allow to be not moving, before we consider us stuck

float

stuckMaxTime = 3.0;

AITankSteeringComponent

Default values taken from Tank_F class

A

allow...

boolean

allowOvertaking = true;			// overtaking is part of collision avoidance
allowCollisionAvoidance = true;
allowDrifting = false;			// allow using movement vector as direction
allowTurnAroundInPoint = true;

C

commandTurnFactor

How strong AI will turn when commanded left/right

float

commandTurnFactor = 1.0;

convoyPIDWeights[]

Array

convoyPIDWeights[] = {1,0,0};

D

differenceAngleCoef

float

differenceAngleCoef = 1.0;

doPredictForward

Prediction ahead is used for both steering and analysing of shape to modify the speed

Boolean

doPredictForward = true;
predictForwardRange[]

Array

predictForwardRange[] = { 1, 20 };
steerAheadSaturation[]

Steer ahead is a point to steer to, saturated down to given range, in meters

Array

steerAheadSaturation[] = { 0.01, 0.4 };

doRemapSpeed

Remapping of maxSpeed of vehicle, for fast vehicles we want to lower the used speed

Boolean

doRemapSpeed = false;
remapSpeedRange

Array

remapSpeedRange[] = { 30.0, 70.0 };
remapSpeedScalar

Array

remapSpeedScalar[] = { 1.0, 0.35 };

M

maxWheelAngleDiff

Parameter of predictionMethod = 1

Float

maxWheelAngleDiff = 0.2616;

minSpeedToKeep

Parameter of predictionMethod = 1

Float

minSpeedToKeep = 0.1;

P

predictForwardMaxSpeed

Integer

minSpeedToKeep = 15;

S

speedPIDWeights

Controls working parameters of speed PID controller (Kp, Ki, Kd)

Array

speedPIDWeights[] = { 0.7, 0.2, 0.0 };

speedPredictionMethod

Integer: Determines the manipulability of the class.

Value Type
0 Three angles method
1 Wheel direction method
2 Combined method
speedPredictionMethod = 3; // ?
...AngleCoef

Four coef's to determine how much given angle should influence slowing down

Float

wheelAngleCoef = 0.7;
forwardAngleCoef = 0.7;
steeringAngleCoef = 1.0;
differenceAngleCoef = 1.0;

steeringPIDWeights

Controls working parameters of steering PID controller (Kp, Ki, Kd)

Array

steeringPIDWeights[] = { 1.2, 0.1, 0.2 };

stuckMaxTime

For how long we allow to be not moving, before we consider us stuck

float

stuckMaxTime = 3.0;

Other

CfgAmmo

A

aiAmmoUsageFlags

Type
Integer
Description
Tells the AI how to use this Ammo. NOTE: Feature still WIP, some functions may not work yet or be removed later. See: AI Devbranch
Value Type Description
0 None ???
1 Light used for illumination
2 Marking ???
4 Concealment used for smokes
8 CounterMeasures ???
16 Mine ???
32 Underwater used in underwater environment
64 OffensiveInf against infantry
128 OffensiveVeh against vehicles
256 OffensiveAir against air
512 OffensiveArmour against armored vehicles

Multiple flags can be combined by adding the values together

aiAmmoUsageFlags = 4; //for concealment only
aiAmmoUsageFlags = "64 + 128"; //against infantry and light vehicles

airLock

Type
Boolean
Description
Declares if ammo can lock on air targets. Also makes AI to decide whether to engage air units with the particular ammo.

allowAgainstInfantry

Type
Boolean
Description
Default true. If false, the AI will not (deliberately) employ this weapon against infantry targets. Used to override cost behaviour.

audibleFire

Type
Float
Description
How much can AI hear when given weapon is fired.
audibleFire = 5.0;

C

cost

Type
Integer
Description
Cost-gain evaluation is performed to choose an appropriate weapon.
Gain includes self-preservation.
Cost includes time required to complete the attack.

As a result, weapons with high cost are unlikely to be used against common targets, esp. when low cost weapons are available. Still, there may be situation where AI may decide to use high cost weapon, esp. when it thinks it has little chance of survival and needs to attempt destroying enemy quickly.

cost = 5000;


D

dangerRadiusBulletClose

Type
Integer
Description
Defines how far in meters the AI gets alerted by the bullet's pass. Default value -1 disables the detection. (works only for bullets, no other projectiles).
deflecting = -1;

dangerRadiusHit

Type
Integer
Description
Defines how far in meters the AI gets alerted by the projectile's impact or explosion. Default value -1 makes this distance be automatically derived from the hit and indirectHit properties (hit * 0.5 + indirectHit * indirectHitRange * 0.5 - but there's also an energy factor).
deflecting = -1;

M

min/mid/maxRange...

Description
These tokens are present in OFP only. They were badly classed in OFP, causing all weapons using this specific bullet to exhibit this behaviour rather than the behaviour of the rifle. As such they were transferred to Arma's cfgWeaponsClarify.

Above statement is not true; Even in Arma 2 and Arma 2:OA, these values still exist and affect the AI and only the AI in the following ways:

The tokens are found/put on each weapons "firing modes", or on the gun itself, if it has no separate firing modesClarify.
minRange
Type
Float
Description
Minimum engagement range for the AI.

Below given values, the AI will not engage but just "stare them down", even if they get shot at, and (most likely) killed.

Minrange = 5;
minRangeProbab
Type
Float
Description
Probability declaring how high the chance is that the AI will engage a target at minRange using this (current) firing mode.

Values are 0.0 to 1.0 where 1.0 equates to a 100% likelihood.

minRangeProbab = 0.02;
midRange
Type
Float
Description
Mid-Range engagement range for AI's using this (current) firing mode.
midRange = 150;
midRangeProbab
Type
Float
Description
Probability declaring how high the chance is that the AI will engage a target at midRange.

Values are 0.0 to 1.0 where 1.0 equates to a 100% likelihood.

midRangeProbab = 0.7;
maxRange
Type
Float
Description
Maximum range possible for the AI.

Although AI's may engage targets slightly beyond maxRange, this is how far the AI will try to shoot at targets. Targets definitely beyond maxRange are ignored.

maxRange = 500;
maxRangeProbab
Type
Float
Description
Probability declaring how high the chance is that the AI will engage a target at maxRange (or slightly below).

Values are 0.0 to 1.0 where 1.0 equates to a 100% likelihood.

maxRangeProbab = 0.51;

mineTrigger

Type
String
Description
is a in CfgMineTriggers defined class

S

suppressionRadiusBulletClose

Type
Integer
Description
Defines the max. distance in meters at which the AI becomes suppressed by the bullet's pass. Default value -1 disables the suppressive effect (works only for bullets, no other projectiles).
suppressionRadiusBulletClose = -1;

suppressionRadiusHit

Type
Integer
Description
Defines the max. distance in meters at which the AI becomes suppressed by the projectile's impact or explosion. Default value -1 disables the suppressive effect.
suppressionRadiusHit = -1;

V

visibleFire

Type
Float
Description
How much does AI see a unit firing this weapon.
visibleFire = 18;

visibleFireTime

Type
Integer
Description
How long is one shot assumed to be noticeable by the AI.

Values under 5 should be avoided, as AI can perform in cycles with 5s of no testing in between.

visibleFireTime = 18;

CfgWeapons

A

aiBurstTerminable

Class
ModeClass
Type
Boolean
Description
AI firemode parameter, when true, AI will terminate burst when target is dead or out of sight

aiDispersionCoefX

Type
Float
Description
Dispersion multiplier for AI units (axis X - left to right).

aiDispersionCoefY

Type
Float
Description
Dispersion multiplier for AI units (axis Y - top-down).

aiRateOfFire

Class
ModeClass
Type
Float
Description
Delay between shots at given aiRateOfFireDistance.

aiRateOfFireDistance

Class
ModeClass
Type
Integer
Description
At shorter distance delay (aiRateOfFire) goes linearly to zero.

aiRateOfFireDispersion

Class
ModeClass
Type
Float
Description
Property that affects the randomness of delay between shots. Value sets the maximum of the range in which a random number influencing the delay between shots is generated. 0 means the delay between shots will be the same (with given actual distance). The bigger the value the longer delay can be generated.
// randomized delay after shot
timeToShot = aiRateOfFire + aiRateOfFireDispersion * Random<0,1>

autoFire

Class
ModeClass
Type
Boolean
Description
If true, weapon will fire repeatedly all the while you hold the fire button down.

And if true the gunner can use the weapon on his own discretion (no commander fire order needed - like MG type).

M

min/mid/maxRange...

Class
ArmaModeClass
Type
Integer
Description
Together with range and rangeProbab values, defines probability to use this weapon for AI units at given distance.

minRange

Type
Integer

minRangeProbab

Type
Float

midRange

Type
Integer

midRangeProbab

Type
Float

maxRange

Type
Integer

maxRangeProbab

Type
Float

O

opticType

Class
ItemInfo
Type
Integer
Description
Parameter which defines opticType of given optics. It is used together requiredOpticType to create additional fire modes with higher engagement ranges
opticType = 0; // Typically used for optics without magnification (Default)
opticType = 1; // Typically used for optics with magnification level between 2.5 - 5x
opticType = 2; // Typically used for scopes with high magnification (>5x)

R

requiredOpticType

Class
ModeClass
Type
Integer
Description
Required opticType for AI to be able to use this fire mode. It is mainly use to increase maximum engagement distance of AI depending on the optics it has mount on its rifle
		class single_close_optics1 : Single // This optic mode will be used if AI unit has optic mounted on this weapon with opticType >= 1. AI will engage between 
		{
			requiredOpticType = 1;
			showToPlayer = 0;
			minRange = 2;
			minRangeProbab = 0.05;
			midRange = 300;
			midRangeProbab = 0.8;
			maxRange = 500;
			maxRangeProbab = 0.01;
			aiRateOfFire = 2;
			aiRateOfFireDistance = 300;
		};
		class single_medium_optics1 : single_close_optics1 // Same as single_close_optics1 - requiredOpticType is inherited and therefore opticType >= 1 is required
		{
			minRange = 300;
			minRangeProbab = 0.05;
			midRange = 500;
			midRangeProbab = 0.7;
			maxRange = 700;
			maxRangeProbab = 0.05;
			aiRateOfFire = 2;
			aiRateOfFireDistance = 500;
		};
		class single_far_optics1 : single_medium_optics1 // this optic mode will be only used if AI unit has optic with opticType = 2 mounted. With this fire mode AI will engage enemies up to 1km
		{
			requiredOpticType = 2;
			minRange = 300;
			minRangeProbab = 0.05;
			midRange = 700;
			midRangeProbab = 0.5;
			maxRange = 1000;
			maxRangeProbab = 0.05;
			aiRateOfFire = 4;
			aiRateOfFireDistance = 600;
		};

S

showToPlayer

Class
ModeClass
Type
Boolean
Description
Some modes defined for AI usage (e.g. burst modes for full auto weapons) can be hidden from player with this parameter.

CfgVehicles

A

accuracy

Float: Default value = 0.02.

Determines how easy an object is to identify. Smaller values are easier to detect.

Typically, buildings are 0.2, vehicles, 0.5

A value of 1000 causes the underlying class to be identified instead. Eg bushy trees, pink trees and yellow trees, can all be 'identified' as "trees". The description "bushy trees" is then used solely when Editing. See #VehicleClass

accuracy = 0.2;		// buildings
accuracy = 0.5;		// small vehicles
accuracy = 0.9;		// truck
accuracy = 3.500000;	// sniper
accuracy = 1.500000;	// lawsoldier
accuracy = 1000;		// soldier // identify (most) solders as 'man'

Relationship to #camouflage:

accuracy defines how hard it is for the AI to recognise the correct class of a unit. But even if it can't recognise the correct class it can still recognise it as an enemy and engage it.

camouflage defines how hard it is for the AI to see that the unit is there.

attendant

Boolean: Default false

Used for 'vehicles' to repair other 'vehicles'. Thus a hospital has an attendant that can repair soldiers. Adds the action "Heal at XXX"

attendant = true;

AttributeValues

Eden Editor
Editing the AttributeValues class of objects allows you to change the default values.
Skill

Float: Default 0.5

Changes the default Skill slider value of the unit

class AttributeValues 
{
	Skill = 0.5;
};
UnitPos

Integer: Default 0

Changes the default setUnitPos toolbox value of the unit

Numeric value unitPos
0 "AUTO"
1 "DOWN"
2 "MIDDLE"
3 "UP"
class AttributeValues 
{
	UnitPos = 0; // "AUTO"
};

audible

float: Default Value 1

audible = .05;	// man
audible = 3;	// motorcycle
audible = 6;	// tank/ship

How loud you are. The bigger value, the better the unit is heard.

see #camouflage

C

...CanSee

Integer

Used to describe which sensory inputs are available to which crew members.

Numeric value CanSee.. define Description
1 Radar Enables top left radar (OA) for a vehicle (top centre in arma and OFP).
2 Eye Effect unknown - maybe affects AI capabilities?
4 Optics Effect unknown - maybe affects AI capabilities?
8 Ear Effect unknown - maybe affects AI capabilities?
16 Compass Enables top centre compass bar and digital compass in A2/OA.
32 Peripheral Enables small colored blobs at the edge of the screen that indicate nearby units.

Multiple values can be added (or binary ored, giving the same result) together.

commanderCanSee = 31;	// default
gunnerCanSee = 4+8+16;	// default
driverCanSee = 2+8+16;	// default
#define CanSeeRadar 1
#define CanSeeEye 2
#define CanSeeOptics 4
#define CanSeeEar 8
#define CanSeeCompass 16
#define CanSeeAll 31
#define CanSeePeripheral 32
#define CanSeeRadarC CanSeeRadar+CanSeeCompass
commanderCanSee = CanSeeAll;
gunnerCanSee = CanSeeOptics+CanSeeEar+CanSeeCompass;
driverCanSee = CanSeeEye+CanSeeEar+CanSeeCompass;

camouflage

Float: Default Value = 2.

how difficult to spot. bigger = easier

camouflage = 0.6;	// snipers
camouflage = 1;		// man
camouflage = 4;		// trucks
camouflage = 8;		// tanks

Relationship to #accuracy:

camouflage defines how hard it is for the AI to see that the unit is there. The AI will not spot an enemy that has a camouflage setting of 0 (maybe this needs some more testing) even if it stands directly in front of it as long as the enemy doesn't fire.

accuracy defines how hard it is for the AI to recognise the correct class of a unit. But even if it can't recognise the correct class it can still recognise it as an enemy and engage it.

Related TokenNames #accuracy, #nameSound, #camouflage

canDeactivateMines

Boolean: Default false

part of the man class.

canDeactivateMines= true;	// SoldierEngineer

coefInside...

Float:

coefInside = 2;			// cost for movement inside buildings
coefInsideHeur = 4.3;	// estimation of cost based on in/out points
coefSpeedInside = 2; // we must go slowly inside houses

Used by the static class for non moving objects such as buildings

coefInside = 1;	// forest
coefInsideHeur = 0.25;

cost

Float: Default Value 50,0000

This value reflects the attractiveness of the target to the enemy AI. When all other considerations are equal. A soldier eg is not interested in Air, despite it is highly attractive cost values. On the other hand, he is interested in a medic, since a medic (in normal configs) has a (while small) a higher cost, than others in the group, including the officer.

cost = 10000000;	// an air vehicle is typically this value
cost = 8;			// a medic;
cost = 1;			// a grunt
cost = 4;			// an officer
cost = 0;			// most buildings;

Related TokenNames: type, #cost, #threat

D

driveThroughEnabled

Determines if AI can decide to go through the object. This parameter skips regular mass checking if object can smashed through

driveThroughEnabled			= 1; // test parameter for AI knowing they can drive through the object

ejectDamageLimit

Float: If the damage value of the vehicle is higher than the ejectDamageLimit, AI will disembark the vehicle.

ejectDamageLimit = 0.75;

E

enableSweep

Boolean: Default true. Used by Helicopter class

enableSweep = false;	/ /UH60MG

Is sweeping over the target a valid technique for given helicopter?

F

formation...

Integer:

formationX = 10;	// default meters
formationZ = 20;	// default meters
formationTime = 10;	// default seconds

One or both X Z values are used to keep objects separated (in meters) depending on wedge, echelon, V, single line, formations.

fsmDanger

String: Path to FSM file or CfgFSMs class

Files can be found at:

  • \a3\characters_f\scripts\danger.fsm
  • \a3\characters_f\scripts\formationCDanger.fsm
fsmDanger = "-"; // CAManBase
fsmDanger = "A3\characters_f\scripts\formationCDanger.fsm"; // Civilian_F

fsmFormation

String: Path to FSM file or CfgFSMs class

Files can be found at:

  • A3\characters_f\scripts\formationCDanger.fsm
fsmFormation = "Formation"; // CAManBase, referring to (configFile >> "CfgFSMs" >> "Formation")
fsmDanger = "A3\characters_f\scripts\formationCDanger.fsm"; // Civilian_F

G

...Gun...

Integer:degrees

minGunElev = -60;
maxGunElev = 60;
minGunTurn = -5;
maxGunTurn = 5;
minGunTurnAI = -30;
maxGunTurnAI = 30;

H

...HeadTurnAI

Integer Degrees

minHeadTurnAI = -70;	// man class
maxHeadTurnAI = 70;

I

irScanGround

Boolean: Default true.

Probaly used to stop ai looking down

irScanGround = false;	// tanks

irScanRange...

Integer: Default 0

irScanRange = 4000;		// outdated (since Resistance)
irScanRangeMin = 500;	// tanks general
irScanRangeMax = 4000;
irScanRangeMin = 2000;	// air
irScanRangeMax = 10000;
irScanRangeMin = 4000;	// a vulcan
irScanRangeMax = 10000;

irScanToEyeFactor

Integer: Default 1

irScanToEyeFactor = 2;	// air
irScanToEyeFactor = 5;	// shilka

irTarget

Boolean: Default true.

Used for (some) buildings so that they don't show up on tank radar. Save for very limited exceptions, this token should be enabled for all vehicle units.

Disabling it will make the vehicle NOT to be engaged by infantry anti-tank gunners nor vehicle weapons. It will only be engaged by small arms, and only if its armor value is low enough for AI infantry to think it can damage it by shooting at it.

irTarget = false;	// man

M

minFireTime

Integer: Default 20 seconds

minFireTime = 20;

Minimal time spent firing on single target.

N

nameSound

String: Default value: "Target"

Namesound is used by the AI audio to indicate verbally where to go, what 'vehicle' to attack. Thus the audio speech "move to 'rock' 3 o'clock' is derived from the nameSound.

nameSound = "rock";

Many different nameSounds can be selected. Here are just a few.

nameSound = crew;
nameSound = target;
nameSound = tank;
nameSound = house;

The actual descriptive text accompanying the 'sound' can be different see #displayName

Typically, a collection of buildings (eg) will be configured as follows

class GenBuilding : NonStrategic {
	scope=private; // internal use only
	VehicleClass="Some Editor Group Name";
	namesound="house";
};
class YellowBuilding : GenBuilding {
	scope=public;
	name="YellowBuilding";
	model="Some yellow building.p3d";
};

Related TokenNames #accuracy, #vehicleClass, #nameSound, #camouflage

P

preferRoads

Boolean: Default false

preferRoads = true;	// all vehicles

S

sensitivityEar

Float: Default 0.0075

Sets how well can the given unit hear others. The bigger the value, the better the hearing.

sensitivityEar = 0.13;	// man

...Speed

Float: In Kph.

Setting maxSpeed for infantry units too low might cause problems when working with waypoints (units won't be able to fully complete them or won't move towards them).

minSpeed = -0.5;	// range 0->1
maxSpeed = 80;		// default
maxSpeed = 30;		// tractor
maxSpeed = 60;		// boat

T

Related TokenNames: type, #cost, #threat

threat

float Array: Default Value {0.700000, 0.500000, 0.300000};

How threatening you are to unit types {Soft, Armor, Air}, respectively.

The ai for this model selects targets of opportunity, based on these values.

threat[] = {1, 0.0500000, 0.050000};		// soldier
threat[] = {1, 0.900000, 0.100000};			// law soldier
threat[] = {0.900000, 0.700000, 0.300000};	// bmp

Related TokenNames: type, #cost, #threat

type

Integer: Default Value: Armored

This indicates the threat type of the 'vehicle'.

In well written configs, the 3 possible values are declared as defines at top of file for legibility

#define VSoft 0
#define VArmor 1
#define VAir 2

type = VAir;

Vehicles (and buildings) are armoured, humans are 'soft' and aircraft (obviously) are air

Related TokenNames: type, #cost, #threat

U

unloadInCombat

Boolean: default true

unloadInCombat = false;

All true vehicles will cause ai to disembark when in combat.

CfgMoves

V

variantsAI[]

Type
Array
Description
Found in States when there are several variations on the same animation (usually idles) that can be played randomly.

It lists the animations to be randomly cycled. The numbers represent the probability of that animation being played, the higher the number, the more likely the animation will get to play.

The sum of these numbers is always 1.

//Default
variantsAI[] = {""};
//AidlPercMstpSnonWnonDnon
variantsAI[] = {"AidlPercMstpSnonWnonDnon01", 0.01,
	"AidlPercMstpSnonWnonDnon02", 0.01,
	"AidlPercMstpSnonWnonDnon03", 0.01,
	"AidlPercMstpSnonWnonDnon04", 0.01,
	"AidlPercMstpSnonWnonDnon05", 0.01,
	"AidlPercMstpSnonWnonDnon06", 0.01,
	"AidlPercMstpSnonWnonDnon07", 0.01,
	"AidlPercMstpSnonWnonDnon08", 0.01,
	"AidlPercMstpSnonWnonDnon_idleSteady04", 0.23,
	"AidlPercMstpSnonWnonDnon_idleSteady03", 0.23,
	"AidlPercMstpSnonWnonDnon_idleSteady02", 0.23,
	"AidlPercMstpSnonWnonDnon_idleSteady01", 0.23};
//ActsPsitMstpSnonWnonDnon_varSittingOnTheWall
variantsAI[] = {"Mi17_Cargo02", 0.4, "Mi17_Cargo02_V1", 0.1, "Mi17_Cargo02_V2", 0.1, "Mi17_Cargo02_V3", 0.1,
	"Mi17_Cargo02_V4", 0.1, "Mi17_Cargo02_V5", 0.1, "Mi17_Cargo02_V6", 0.1};
//aidlpercmstpsraswlnrdnon_S
variantsAI[] = {"aidlpercmstpsraswlnrdnon_1", 0.333, "aidlpercmstpsraswlnrdnon_2", 0.333, "aidlpercmstpsraswlnrdnon_3", 0.334};

visibleSize

Type
Float
Description
Found in States, probably used for calculating how visible a character is for the AI, based on his stance/animation.
visibleSize = 1.00012;	// SprintBaseDf					when sprinting more visible than..
visibleSize = 0.700121;	// AmovPercMstpSrasWrflDnon		..when stopped > visible than..
visibleSize = 0.300122;	// AmovPknlMstpSlowWrflDnon		..when kneeling > visible than..
visibleSize = 0.100123;	// AmovPpneMstpSrasWrflDnon		..when prone.

CfgSurfaces

A

AIAvoidStance

Integer: Allows restricting the AI from entering prone with two levels of emphasis

Value Description
0 No change in behavior
1 Less preference for going prone - avoid prone (unless stealth or suppressed or *)
2 Almost never going prone - never prone (unless *)
* means commanded, injured, animated, forced, ...

G

grassCover

Float: Reduces visibleSize (taken from CfgMovesBasic) of unit for AI visibility movement computations (cannot make fully invisible) - it is NOT about visual drawing

grassCover = 0;		// Used by GdtStratisConcrete, there will be no simulated grass cover at a distance
grassCover = 0.05;	// Used by GdtStratisGreenGrass, there will be some simulated grass cover at a distance

CfgCloudlets

B

blockAIVisibility

Sets if particles are in the AI visibility tests (default true) - false for better performance but AI is able to see through particles

Boolean

blockAIVisibility = true;

CfgFormations

This class lists the formations for each side, each side containing nine classes:

CfgFormations class formation
Diamond "DIAMOND"
EchelonLeft "ECH LEFT"
EcholonRight "ECH RIGHT"
File "FILE"
formColumnFixed "COLUMN"
Line "LINE"
Vee "VEE"
Wedge "WEDGE"

F

Fixed

Subclass of above formation classes, contains fixed positions for formation

FormationPositionInfoN[]

Array: Sets fixed position from formation center for position N [citation needed]

class Fixed // Taken from Wedge class
{
	FormationPositionInfo1[] = {-1,0,0,0};
	FormationPositionInfo2[] = {0,1,-1,0.785398};
};

Pattern

Subclass of above formation classes, contains pattern for when there are not enough Fixed positions

FormationPositionInfoN[]

Array: Sets pattern position from previous fixed/pattern position N [citation needed]

class Pattern // Taken from Wedge class
{
	FormationPositionInfo1[] = {-2,-1,-1,-0.785398};
	FormationPositionInfo2[] = {-1,1,-1,0.785398};
};