AI Config Reference – Arma 3
Lou Montana (talk | contribs) m (Text replacement - "{{Feature | Informative | " to "{{Feature|informative|") |
Lou Montana (talk | contribs) m (Text replacement - "|edeneditor" to "|Eden Editor") |
||
Line 1,027: | Line 1,027: | ||
==== AttributeValues ==== | ==== AttributeValues ==== | ||
{{Feature| | {{Feature|Eden Editor|Editing the ''AttributeValues'' class of objects allows you to change the default values.}} | ||
===== Skill ===== | ===== Skill ===== |
Latest revision as of 19:22, 10 July 2024
CfgBrains Config Reference
As of 2.00 it contains three classes
- DefaultAnimalBrain
- DefaultCivilianBrain
- DefaultSoldierBrain
Each of which contains a Components class. Only DefaultSoldierBrain includes any components by default.
Sources:
- oukej, BI-Forums, AI Discussion
- klamacz, BI-Forums, AI Discussion
- .kju, BI-Forums, AI must have better autonomy.
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
- 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
causeExplosionWeight
- Type
- Float
- Default
- 0.5
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
suppressionThreshold
- Type
- Float
- Default
- 0.7
- Description
- Threshold to change behavior (use smoke grenades for example)
AIBrainTargetSelectorComponent
As of 2.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
- 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...
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
commandTurnFactor = 1.0;
convoyPIDWeights[]
convoyPIDWeights[] = {1,0.01,0.01};
D
differenceAngleCoef
differenceAngleCoef = 1.0;
doPredictForward
Prediction ahead is used for both steering and analysing of shape to modify the speed
doPredictForward = true;
predictForwardRange[]
predictForwardRange[] = { 1, 20 };
steerAheadSaturation[]
Steer ahead is a point to steer to, saturated down to given range, in meters
steerAheadSaturation[] = { 0.01, 0.4 };
doRemapSpeed
Remapping of maxSpeed of vehicle, for fast vehicles we want to lower the used speed
doRemapSpeed = true;
remapSpeedRange
remapSpeedRange[] = { 30.0, 70.0 };
remapSpeedScalar
remapSpeedScalar[] = { 1.0, 0.35 };
S
speedPIDWeights
Controls working parameters of speed PID controller (Kp, Ki, Kd)
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
wheelAngleCoef = 0.7;
forwardAngleCoef = 0.7;
steeringAngleCoef = 1.0;
differenceAngleCoef = 0.4;
minSpeedToKeep
Parameter of predictionMethod = 1
minSpeedToKeep = 0.1;
maxWheelAngleDiff
Parameter of predictionMethod = 1
maxWheelAngleDiff = 0.2616;
steeringPIDWeights
Controls working parameters of steering PID controller (Kp, Ki, Kd)
steeringPIDWeights[] = { 1.2, 0.1, 0.2 };
stuckMaxTime
For how long we allow to be not moving, before we consider us stuck
stuckMaxTime = 3.0;
AITankSteeringComponent
Default values taken from Tank_F class
A
allow...
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
commandTurnFactor = 1.0;
convoyPIDWeights[]
convoyPIDWeights[] = {1,0,0};
D
differenceAngleCoef
differenceAngleCoef = 1.0;
doPredictForward
Prediction ahead is used for both steering and analysing of shape to modify the speed
doPredictForward = true;
predictForwardRange[]
predictForwardRange[] = { 1, 20 };
steerAheadSaturation[]
Steer ahead is a point to steer to, saturated down to given range, in meters
steerAheadSaturation[] = { 0.01, 0.4 };
doRemapSpeed
Remapping of maxSpeed of vehicle, for fast vehicles we want to lower the used speed
doRemapSpeed = false;
remapSpeedRange
remapSpeedRange[] = { 30.0, 70.0 };
remapSpeedScalar
remapSpeedScalar[] = { 1.0, 0.35 };
M
maxWheelAngleDiff
Parameter of predictionMethod = 1
maxWheelAngleDiff = 0.2616;
minSpeedToKeep
Parameter of predictionMethod = 1
minSpeedToKeep = 0.1;
P
predictForwardMaxSpeed
minSpeedToKeep = 15;
S
speedPIDWeights
Controls working parameters of speed PID controller (Kp, Ki, Kd)
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
wheelAngleCoef = 0.7;
forwardAngleCoef = 0.7;
steeringAngleCoef = 1.0;
differenceAngleCoef = 1.0;
steeringPIDWeights
Controls working parameters of steering PID controller (Kp, Ki, Kd)
steeringPIDWeights[] = { 1.2, 0.1, 0.2 };
stuckMaxTime
For how long we allow to be not moving, before we consider us stuck
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
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
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...
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...
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
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};
};