Config Properties Megalist: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "\[ *(https?\:\/\/.+\.bistudio\.[^ ]+) ([^ ]+) *\]" to "{{ExternalLink|link= $1|text= $2}}")
m (Text replacement - "[[Arma 3 " to "[[Arma 3: ")
 
(21 intermediate revisions by 4 users not shown)
Line 13: Line 13:


* [[CfgVehicles Config Reference]]
* [[CfgVehicles Config Reference]]
* [[Turret Config Reference]]
* [[CfgAmmo Config Reference]]
* [[CfgAmmo Config Reference]]
* [[CfgMagazines Config Reference]]
* [[CfgMagazines Config Reference]]
Line 28: Line 29:
=== CfgPatches & requiredAddons ===
=== CfgPatches & requiredAddons ===


The requiredAddons array in CfgPatches is how you control the load order of configs. "requiredAddons" means "load these other config files before you load this one." (And "this one" means the name of the class containing the requiredAddons statement). [ {{ExternalLink|link= http://forums.bistudio.com/showthread.php?162880-Little-question-about-cfgpatches|text= A}},...]
The requiredAddons array in CfgPatches is how you control the load order of configs. "requiredAddons" means "load these other config files before you load this one." (And "this one" means the name of the class containing the requiredAddons statement). {{Link|link= http://forums.bistudio.com/showthread.php?162880-Little-question-about-cfgpatches|text= A}}


=== How Many Config Files? ===
=== How Many Config Files? ===
Line 56: Line 57:


=== airFriction ===
=== airFriction ===
<tt>'''float'''</tt>
{{hl|'''float'''}}


How much the projectile slows down as it travels through the air. (A way of expressing aerodynamic drag).
How much the projectile slows down as it travels through the air. (A way of expressing aerodynamic drag).
Line 62: Line 63:
This and initSpeed define a projectile's trajectory in Arma (for unpowered ones like Bullets and Shells. Rockets and Missiles have additional rocket thrust features that influence their flight). As soon as an unpowered projectile is fired, it starts to slow down due to drag. The formula is:
This and initSpeed define a projectile's trajectory in Arma (for unpowered ones like Bullets and Shells. Rockets and Missiles have additional rocket thrust features that influence their flight). As soon as an unpowered projectile is fired, it starts to slow down due to drag. The formula is:


<tt>airFriction = deceleration / velocity<sup>2</sup></tt>
{{hl|c= airFriction = deceleration / velocity<sup>2</sup>}}


A projectile with a muzzle velocity of 1,640 m/s which slows down with 94 m/s<sup>2</sup> has an airFriction of:
A projectile with a muzzle velocity of 1,640 m/s which slows down with 94 m/s<sup>2</sup> has an airFriction of:


<tt>-94 m/s<sup>2</sup> / (1,640 m/s)<sup>2</sup> &asymp; -0.000035 1/m</tt>
{{hl|-94 m/s<sup>2</sup> / (1,640 m/s)<sup>2</sup> &asymp; -0.000035 1/m}}


(This property appears to be equivalent to Bird-Livingston's "ballistic K factor" * 1e-7).
(This property appears to be equivalent to Bird-Livingston's "ballistic K factor" * 1e-7).
Line 72: Line 73:
^A different formula based on bulletPenetrability & caliber is applied to slow projectiles passing through solid targets (fire geometry).
^A different formula based on bulletPenetrability & caliber is applied to slow projectiles passing through solid targets (fire geometry).


[[Weapons_settings|A]], {{ExternalLink|link= http://forums.bistudio.com/showthread.php?153417-airFriction|text= B}}, "WW2 Ballistics: Armor and Gunnery" (Bird-Livingston, 2001)
[[Weapons settings|A]], {{Link|link= http://forums.bistudio.com/showthread.php?153417-airFriction|text= B}}, "WW2 Ballistics: Armor and Gunnery" (Bird-Livingston, 2001)


For self-propelled rockets and missiles use this one:
For self-propelled rockets and missiles use this one:


<tt> -0.002 * f = a / v<sup>2</sup></tt> (finding in {{ExternalLink|link= https://forums.bistudio.com/forums/topic/189449-solved-simulate-rocket-flight-airfriction-correction-thrust-in-cfgammo-is-equal-to-acceleration/?do=findComment&comment=3002852|text= BI forum}})
{{hl|c=  -0.002 * f = a / v<sup>2</sup>}} (finding in {{Link|link= https://forums.bistudio.com/forums/topic/189449-solved-simulate-rocket-flight-airfriction-correction-thrust-in-cfgammo-is-equal-to-acceleration/?do=findComment&comment=3002852|text= BI forum}})


f - airFriction
f - airFriction
Line 85: Line 86:


=== airLock ===
=== airLock ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Whether this ammo type (& AI using it) can lock onto airborne targets.
Whether this ammo type (& AI using it) can lock onto airborne targets.
Line 91: Line 92:
Provided the related CfgWeapons also has locking capability--"canLock" is true. Unlike irLock & laserLock--which have corresponding CfgVehicles properties that they lock onto, airborne targets are identified in some other way. (see "irLock", "laserLock").  
Provided the related CfgWeapons also has locking capability--"canLock" is true. Unlike irLock & laserLock--which have corresponding CfgVehicles properties that they lock onto, airborne targets are identified in some other way. (see "irLock", "laserLock").  


{{ExternalLink|link= https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_airLock.htm?Highlight=airlock A], [[A3_Locking_Review#airLock|B]], [http://forums.bistudio.com/showthread.php?47996-Airlock-only|text= C}}.
{{Link|link= https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_airLock.htm?Highlight=airlock|text= A}}, [[A3 Locking Review#airLock|B]], {{Link|link= http://forums.bistudio.com/showthread.php?47996-Airlock-only|text= C}}.


=== caliber ===
=== caliber ===
<tt>'''float&ge;0'''</tt>
{{hl|'''float&ge;0'''}}


Ability of the projectile to penetrate through target fire geometry (buildings, vehicle armor and components, people, etc.).
Ability of the projectile to penetrate through target fire geometry (buildings, vehicle armor and components, people, etc.).
Line 100: Line 101:
Penetration power is dependent on caliber and the projectile's speed--higher = more penetration. The formula for mm of penetration is:
Penetration power is dependent on caliber and the projectile's speed--higher = more penetration. The formula for mm of penetration is:


<tt>(projectile speed / 1000)x(caliber)x(bulletPenetrability of the target BISURF)</tt>
{{hl|(projectile speed / 1000)x(caliber)x(bulletPenetrability of the target BISURF)}}


So--as you would expect--penetration decreases as the projectile slows down during its flight. Restating the formula:
So--as you would expect--penetration decreases as the projectile slows down during its flight. Restating the formula:


<tt>caliber = (mm penetration @speedX)*1000 / (bulletPenetrability * speedX)</tt>
{{hl|c= caliber = (mm penetration @speedX)*1000 / (bulletPenetrability * speedX)}}


(A value of 1 is standardized as 15mm of RHA penetration at 1000m/s.) Note! Adding caliber values to missile or rockets is bugged and results in missiles flying through targets.
(A value of 1 is standardized as 15mm of RHA penetration at 1000m/s.) Note! Adding caliber values to missile or rockets is bugged and results in missiles flying through targets.


[http://resources.bisimulations.com/wiki/Damage_Modeling:_Simulation#Penetration A]
{{Link|http://resources.bisimulations.com/wiki/Damage_Modeling:_Simulation#Penetration|A}}


=== cost ===
=== cost ===
<tt>'''int''', ~$, (AI only)</tt>
{{hl|'''int''', ~$, (AI only)}}


A "monetary" value for each weapon.
A "monetary" value for each weapon.
Line 117: Line 118:
This helps AI units decide on whether a weapon is worth using. Presumably AI does not waste high-cost weapons on low-threat or otherwise inappropriate targets. Seems to be vaguely calibrated in units of 1/3-1/4 $USD.
This helps AI units decide on whether a weapon is worth using. Presumably AI does not waste high-cost weapons on low-threat or otherwise inappropriate targets. Seems to be vaguely calibrated in units of 1/3-1/4 $USD.


[[CfgAmmo_Config_Reference#cost|A]], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_cost.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____12 B] (contradictory)
[[CfgAmmo_Config_Reference#cost|A]], {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_cost.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____12|B}} (contradictory)


=== deflecting ===
=== deflecting ===
<tt>'''90&ge;int&ge;0''', angle in degrees</tt>
{{hl|'''90&ge;int&ge;0''', angle in degrees}}


Determines how much a projectile ricochets.
Determines how much a projectile ricochets.
Line 128: Line 129:
Note: all projectiles get a slight random velocity change after completely penetrating a piece of fire geometry. This is a different, hardcoded behavior--not "deflecting".
Note: all projectiles get a slight random velocity change after completely penetrating a piece of fire geometry. This is a different, hardcoded behavior--not "deflecting".


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_deflecting.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____15 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_deflecting.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____15|A}}


=== explosive ===
=== explosive ===
<tt>'''1&ge;float&ge;0'''</tt>
{{hl|'''1&ge;float&ge;0'''}}


The proportion of the projectile's damage that is explosive (rather than kinetic).
The proportion of the projectile's damage that is explosive (rather than kinetic).
Line 138: Line 139:


=== hit ===
=== hit ===
<tt>'''float>0'''</tt>
{{hl|'''float>0'''}}


The damage done by a direct hit from this projectile.
The damage done by a direct hit from this projectile.


Damage is applied to global hitpoints ("armor" int) as well as locational ones ("armor" float). (The actual formula for applying damage is somewhat complex, so there is not necessarily a one-to-one application of hit value against hitpoints). [https://resources.bisimulations.com/w/index.php?title=Damage A]
Damage is applied to global hitpoints ("armor" int) as well as locational ones ("armor" float). (The actual formula for applying damage is somewhat complex, so there is not necessarily a one-to-one application of hit value against hitpoints). {{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage|A}}


=== indirectHit ===
=== indirectHit ===
<tt>'''float&ge;0'''</tt>
{{hl|'''float&ge;0'''}}


'Splash' damage done by a near miss from this projectile.
'Splash' damage done by a near miss from this projectile.
Line 151: Line 152:
Projectiles with indirectHit values do damage within a sphere around their impact point (whether they hit the ground or an object). The size of the sphere is determined by "indirectHitRange" and targets within the sphere receive damage.  
Projectiles with indirectHit values do damage within a sphere around their impact point (whether they hit the ground or an object). The size of the sphere is determined by "indirectHitRange" and targets within the sphere receive damage.  


[https://resources.bisimulations.com/w/index.php?title=Damage A]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage|A}}


=== indirectHitRange ===
=== indirectHitRange ===
<tt>'''float&ge;0''', meters</tt>
{{hl|'''float&ge;0''', meters}}


Describes the range of a projectile's 'splash' damage.
Describes the range of a projectile's 'splash' damage.
Line 160: Line 161:
This is the ''base'' radius within which indirectHit damage is applied. indirectHit damage is actually applied '''''out to 4x this radius''''', with linear falloff starting at indirectHit and ending at 0. (See "indirectHit"). Note: for standard HE weapons (e.g. tank HE-frag, artillery HE, grenades), this value seems to correspond roughly to the weapon's officially rated "lethal radius" in m.
This is the ''base'' radius within which indirectHit damage is applied. indirectHit damage is actually applied '''''out to 4x this radius''''', with linear falloff starting at indirectHit and ending at 0. (See "indirectHit"). Note: for standard HE weapons (e.g. tank HE-frag, artillery HE, grenades), this value seems to correspond roughly to the weapon's officially rated "lethal radius" in m.


[https://resources.bisimulations.com/w/index.php?title=Damage A]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage|A}}


=== initTime ===
=== initTime ===
<tt>'''float&ge;0''', seconds, (Missiles only)</tt>
{{hl|'''float&ge;0''', seconds, (Missiles only)}}


How long it takes the missile's rocket motor to start producing thrust after launch.
How long it takes the missile's rocket motor to start producing thrust after launch.
Line 170: Line 171:


=== irLock ===
=== irLock ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Whether this ammo type (& AI using it) can lock onto radar targets (CfgVehicles.irTarget = true).
Whether this ammo type (& AI using it) can lock onto radar targets (CfgVehicles.irTarget = true).
Line 179: Line 180:


=== laserLock ===
=== laserLock ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Whether this ammo type (& AI using it) can lock onto "laser targets", i.e. a laser designator dot (CfgVehicles.laserTarget = true). (Provided the related CfgWeapons also has locking capability--"canLock" is true).  
Whether this ammo type (& AI using it) can lock onto "laser targets", i.e. a laser designator dot (CfgVehicles.laserTarget = true). (Provided the related CfgWeapons also has locking capability--"canLock" is true).  


[[A3_Locking_Review#laserLock|A]], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_laserLock.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____40 B].
[[A3_Locking_Review#laserLock|A]], {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_laserLock.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____40|B}}.


=== manualControl ===
=== manualControl ===
<tt>'''bool''', (Missiles only)</tt>
{{hl|'''bool''', (Missiles only)}}


A type of missile guidance.
A type of missile guidance.
Line 192: Line 193:
True means the missile has SACLOS guidance (i.e. it continuously adjusts to fly toward wherever the player's crosshairs point).
True means the missile has SACLOS guidance (i.e. it continuously adjusts to fly toward wherever the player's crosshairs point).


[[CfgAmmo_Config_Reference#manualControl|A]], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_manualControl.htm?Highlight=manualcontrol B]
[[CfgAmmo_Config_Reference#manualControl|A]], {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_manualControl.htm?Highlight{{=}}manualcontrol|B}}


=== manuevrability ===
=== manuevrability ===
<tt>'''float>0''', (Missiles only)</tt>
{{hl|'''float>0''', (Missiles only)}}


Affects missile turning ability.
Affects missile turning ability.
Line 201: Line 202:
Higher is more manueverable. It's claimed very high values (>30) may cause missiles to over-manuever and spin out of control.
Higher is more manueverable. It's claimed very high values (>30) may cause missiles to over-manuever and spin out of control.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_maneuvrability.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____45 A], [[CfgAmmo_Config_Reference#maneuvrability|B]]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_maneuvrability.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____45|A}}, [[CfgAmmo_Config_Reference#maneuvrability|B]]


=== maxControlRange ===
=== maxControlRange ===
<tt>'''int>0''', meters, (Missiles only)</tt>
{{hl|'''int>0''', meters, (Missiles only)}}


Maximum range for guided missile flight--whatever the guidance type--after which the missile spins out of control. (See "timeToLive").
Maximum range for guided missile flight--whatever the guidance type--after which the missile spins out of control. (See "timeToLive").


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_maxControlRange.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____47 A], [[CfgAmmo_Config_Reference#maxControlRange|B]]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_maxControlRange.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____47|A}}, [[CfgAmmo_Config_Reference#maxControlRange|B]]


=== maxSpeed ===
=== maxSpeed ===
<tt>'''float>0''', m/s, (Missiles only)</tt>
{{hl|'''float>0''', m/s, (Missiles only)}}


Missile speed limit.
Missile speed limit.
Line 221: Line 222:


=== nvgOnly ===
=== nvgOnly ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Whether tracer is visible using NVG optics only.
Whether tracer is visible using NVG optics only.
Line 228: Line 229:


=== simulationStep ===
=== simulationStep ===
<tt>'''float>0''', seconds(?)</tt>
{{hl|'''float>0''', seconds(?)}}


How often the game updates the ammo's trajectory in flight.
How often the game updates the ammo's trajectory in flight.


The default appears to be between 0.05 (visible in "Splendid Config Viewer" though it is not clear where this is defined?). If you assign a ''lower'' value, the game tracks the projectile ''more often'', giving a finer grained precision to its trajectory. This is presumably useful for things like fast moving projectiles, fast maneuvering guided missiles, projectiles with a high airFriction value, etc. A ''higher'' value tracks the projectile with ''less detail''. The results can be a bit unpredictable (e.g. values less than 0.001 can cause bizarre trajectories), so experimentation with a {{ExternalLink|link= http://forums.bistudio.com/showthread.php?164294-Quick-and-fun-projectile-path-tracing!|text= projectile tracing script}} is useful if you feel like there may be something wrong with your projectile's trajectory.
The default appears to be between 0.05 (visible in "Splendid Config Viewer" though it is not clear where this is defined?). If you assign a ''lower'' value, the game tracks the projectile ''more often'', giving a finer grained precision to its trajectory. This is presumably useful for things like fast moving projectiles, fast maneuvering guided missiles, projectiles with a high airFriction value, etc. A ''higher'' value tracks the projectile with ''less detail''. The results can be a bit unpredictable (e.g. values less than 0.001 can cause bizarre trajectories), so experimentation with a {{Link|link= http://forums.bistudio.com/showthread.php?164294-Quick-and-fun-projectile-path-tracing!|text= projectile tracing script}} is useful if you feel like there may be something wrong with your projectile's trajectory.


Contrary to the information in the VBS documentation linked below, this property can be assigned to a projectile of any simulation type, not just missiles.
Contrary to the information in the VBS documentation linked below, this property can be assigned to a projectile of any simulation type, not just missiles.
Line 238: Line 239:
Note: advanced modders should be aware that low simulationStep values appear to result in excessive firings of eventhandlers like "hitPart"--e.g. multiple events fired when a projectile hits a single surface. Try turning up simulationStep in cases like this.
Note: advanced modders should be aware that low simulationStep values appear to result in excessive firings of eventhandlers like "hitPart"--e.g. multiple events fired when a projectile hits a single surface. Try turning up simulationStep in cases like this.


[https://manuals.bisimulations.com/vbs3/3-6/devref/Content/Config_Manual/CfgAmmo/amm_simulationStep.htm A]
{{Link|https://manuals.bisimulations.com/vbs3/3-6/devref/Content/Config_Manual/CfgAmmo/amm_simulationStep.htm|A}}


=== thrust ===
=== thrust ===
<tt>'''float>0'''</tt>
{{hl|'''float>0'''}}


Engine power of missiles and rockets. (See "thrustTime").
Engine power of missiles and rockets. (See "thrustTime").
Line 248: Line 249:


=== thrustTime ===
=== thrustTime ===
<tt>'''float>0''', seconds, (Missiles only)</tt>
{{hl|'''float>0''', seconds, (Missiles only)}}


How many seconds the rocket motor will produces thrust before dying out.
How many seconds the rocket motor will produces thrust before dying out.
Line 254: Line 255:
(Keep in mind that regardless of these thrust properties, "maxSpeed" puts a ceiling on missile speed).  
(Keep in mind that regardless of these thrust properties, "maxSpeed" puts a ceiling on missile speed).  


[[Weapons_settings|A]], [[CfgAmmo_Config_Reference#thrustTime|B]], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_thrustTime.htm?Highlight=thrusttime C]
[[Weapons_settings|A]], [[CfgAmmo_Config_Reference#thrustTime|B]], {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_thrustTime.htm?Highlight{{=}}thrusttime|C}}


=== timeToLive ===
=== timeToLive ===
<tt>'''float>0''', seconds</tt>
{{hl|'''float>0''', seconds}}


Maximum lifetime for the projectile until it is culled by the game engine.
Maximum lifetime for the projectile until it is culled by the game engine.
Line 263: Line 264:
After a projectile is fired and this time has elapsed, the projectile is deleted from the game for optimization purposes; most projectiles simply disappear at this point, although certain types of explosive projectiles explode instead of vanishing.
After a projectile is fired and this time has elapsed, the projectile is deleted from the game for optimization purposes; most projectiles simply disappear at this point, although certain types of explosive projectiles explode instead of vanishing.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_timeToLive.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____76 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_timeToLive.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____76|A}}


=== typicalspeed ===
=== typicalspeed ===
<tt>'''int>0''', m/s</tt>
{{hl|'''int>0''', m/s}}


Influences how much damage the projectile does when it hits.
Influences how much damage the projectile does when it hits.
Line 273: Line 274:


=== visibleFire ===
=== visibleFire ===
<tt>'''float''', meters?, "(AI only)</tt>
{{hl|'''float''', meters?, "(AI only)}}


Distance from projectile that AI units will notice it. (See "visibleFireTime").
Distance from projectile that AI units will notice it. (See "visibleFireTime").
Line 279: Line 280:
Not clear if this refers to the projectile in flight, when fired, at impact, or all three.
Not clear if this refers to the projectile in flight, when fired, at impact, or all three.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_visibleFire.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____85 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_visibleFire.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____85|A}}


=== visibleFireTime ===
=== visibleFireTime ===
<tt>'''float''', seconds, "(AI only)</tt>
{{hl|'''float''', seconds, "(AI only)}}


How long AI units will notice the projectile. (See "visibleFireTime").
How long AI units will notice the projectile. (See "visibleFireTime").
Line 288: Line 289:
Values less than 5 supposedly cause problems because there can be 5 seconds between AI attention tests.
Values less than 5 supposedly cause problems because there can be 5 seconds between AI attention tests.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_visibleFireTime.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____86 A], [[CfgAmmo_Config_Reference#visibleFireTime|B]]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgAmmo/amm_visibleFireTime.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CcfgAmmo%7C_____86|A}}, [[CfgAmmo_Config_Reference#visibleFireTime|B]]


== CfgMagazines ==
== CfgMagazines ==
Magazine properties plus some projectile-specific stuff that gets stored here instead of CfgAmmo.
Magazine properties plus some projectile-specific stuff that gets stored here instead of CfgAmmo.
=== initSpeed ===
=== initSpeed ===
<tt>'''int>0''', m/s</tt>
{{hl|'''int>0''', m/s}}


Sets the muzzle velocity of ammo fired from this Magazine.
Sets the muzzle velocity of ammo fired from this Magazine.
Line 305: Line 306:


=== aiDispersionCoefX/Y ===
=== aiDispersionCoefX/Y ===
<tt>'''float&ge;1.0''', (AI only)</tt>
{{hl|'''float&ge;1.0''', (AI only)}}


AI unit inaccuracy using this weapon (in X/Y).
AI unit inaccuracy using this weapon (in X/Y).
Line 314: Line 315:


=== autoFire ===
=== autoFire ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Whether the weapon will continue to fire if you hold down the trigger.
Whether the weapon will continue to fire if you hold down the trigger.


[https://manuals.bisimulations.com/vbs2/2-00/devref/Content/Config_Manual/CfgWeapons/wpn_autoFire.htm A]
{{Link|https://manuals.bisimulations.com/vbs2/2-00/devref/Content/Config_Manual/CfgWeapons/wpn_autoFire.htm|A}}


=== ballisticsComputer ===
=== ballisticsComputer ===


=== canLock ===
=== canLock ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Whether the weapon can lock on to a target (e.g. when a player hits the TAB key)
Whether the weapon can lock on to a target (e.g. when a player hits the TAB key)
Line 329: Line 330:
Must be true for any of the other lock modes to work (airLock, irLock, laserLock). 0 = never, 1 = in cadet mode only, 2 = always.
Must be true for any of the other lock modes to work (airLock, irLock, laserLock). 0 = never, 1 = in cadet mode only, 2 = always.


[[A3_Locking_Review#canLock|A]], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgWeapons/wpn_canLock.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgWeapons%7C_____18 B]
[[A3_Locking_Review#canLock|A]], {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgWeapons/wpn_canLock.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgWeapons%7C_____18|B}}


=== dispersion ===
=== dispersion ===
<tt>'''float>0'''</tt>
{{hl|'''float>0'''}}


Basic weapon accuracy.
Basic weapon accuracy.
Line 341: Line 342:


=== initSpeed ===
=== initSpeed ===
<tt>'''int''', m/s</tt>
{{hl|'''int''', m/s}}


This allows you to override or modify the initSpeed (muzzle velocity) set in CfgMagazines.
This allows you to override or modify the initSpeed (muzzle velocity) set in CfgMagazines.
Line 348: Line 349:


=== max/mid/minRange ===
=== max/mid/minRange ===
<tt>'''int>0''', m/s, (AI only)</tt>
{{hl|'''int>0''', m/s, (AI only)}}


Determines the tendency of AI units to use this weapon based on their range to target.
Determines the tendency of AI units to use this weapon based on their range to target.
Line 354: Line 355:
At this range down to the previous __Range, an AI unit will attack with the corresponding __RangeProbab probability. Think of the three pairs of values (__Range, __RangeProbab) as creating a graph of attack probability at different ranges. (See "max/mid/minRangeProbab").
At this range down to the previous __Range, an AI unit will attack with the corresponding __RangeProbab probability. Think of the three pairs of values (__Range, __RangeProbab) as creating a graph of attack probability at different ranges. (See "max/mid/minRangeProbab").


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgWeapons/wpn_maxRange.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgWeapons%7C_____67 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgWeapons/wpn_maxRange.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgWeapons%7C_____67|A}}


=== max/mid/minRangeProbab ===
=== max/mid/minRangeProbab ===
<tt>'''float>0''', (AI only)</tt>
{{hl|'''float>0''', (AI only)}}


Determines the tendency of AI units to use this weapon based on their range to target.
Determines the tendency of AI units to use this weapon based on their range to target.
Line 363: Line 364:
At this __Range down to the previous __Range, an AI unit will attack with the corresponding __RangeProbab probability. Think of the three pairs of values (__Range, __RangeProbab) as creating a graph of attack probability at different ranges. (See "max/mid/minRangeProbab").
At this __Range down to the previous __Range, an AI unit will attack with the corresponding __RangeProbab probability. Think of the three pairs of values (__Range, __RangeProbab) as creating a graph of attack probability at different ranges. (See "max/mid/minRangeProbab").


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgWeapons/wpn_maxRange.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgWeapons%7C_____67 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgWeapons/wpn_maxRange.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgWeapons%7C_____67|A}}


=== weaponLockSystem ===
=== weaponLockSystem ===
<tt>'''cumulative int'''</tt>
{{hl|'''cumulative int'''}}


How this weapon triggers a target vehicle's warning system.
How this weapon triggers a target vehicle's warning system.
Line 375: Line 376:
</div>
</div>


=VEHICLE Configs=
= VEHICLE Configs =
<div class="mw-collapsible">
<div class="mw-collapsible">
Vehicle properties are numerous and are contained both in the CfgVehicles class (usually in its own file), as well as CfgSkeletons & CfgModels (usually combined into a single file called model.cfg). CfgVehicles describes the vehicle's gameplay features, while CfgSkeletons & CfgModels describe its P3D model file.
Vehicle properties are numerous and are contained both in the CfgVehicles class (usually in its own file), as well as CfgSkeletons & CfgModels (usually combined into a single file called model.cfg). CfgVehicles describes the vehicle's gameplay features, while CfgSkeletons & CfgModels describe its P3D model file.
Line 384: Line 385:
<div class="mw-collapsible">
<div class="mw-collapsible">
=== animationSource___ ===
=== animationSource___ ===
<tt>'''string''', model.cfg Animations class name, (Turret class)</tt>
{{hl|'''string''', model.cfg Animations class name, (Turret class)}}


Defines the animating portions of a turret (_Body, _Gun, _Hatch, _Roll).
Defines the animating portions of a turret (_Body, _Gun, _Hatch, _Roll).
Line 391: Line 392:
e.g.
e.g.
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
class YourModel: InheritedFromSomeWhere
class YourModel : InheritedFromSomeWhere
{
{
class Animations:Animations
class Animations : Animations
{
{
class MainTurret
class MainTurret
Line 406: Line 407:
The typical uses are as follows. _Body controls the basic slewing/left-right motion of the turret. _Gun controls weapon elevation/up-down movement. _Hatch controls hatch movement (if any) for a crewmember turning in/out. _Roll presumably controls tilting motion of the turret (if any).
The typical uses are as follows. _Body controls the basic slewing/left-right motion of the turret. _Gun controls weapon elevation/up-down movement. _Hatch controls hatch movement (if any) for a crewmember turning in/out. _Roll presumably controls tilting motion of the turret (if any).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/A_cpp/cpp_animSourceBody.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____31 A], [[Turret_Config_Reference#A|B]]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/A_cpp/cpp_animSourceBody.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____31|A}}, [[Turret_Config_Reference#A|B]]


=== armor (global) ===
=== armor (global) ===
<tt>'''int>0'''</tt>
{{hl|'''int>0'''}}


Overall hit points/'health' for the vehicle. Once fully depleted by damage, the vehicle blows up killing its occupants.
Overall hit points/'health' for the vehicle. Once fully depleted by damage, the vehicle blows up killing its occupants.
Line 415: Line 416:
You will often see this property referred to as "armor (int)". Supposedly object radius somehow modifies this value, although the formulas offered by BI don't make much sense. Note that locational hit-points are derived from this value--determined by each HitPoint class's own "armor" (float) value. So the lower this value, the weaker all the vehicle's corresponding location HitPoints will also be (i.e. the more damage a location takes with each hit).
You will often see this property referred to as "armor (int)". Supposedly object radius somehow modifies this value, although the formulas offered by BI don't make much sense. Note that locational hit-points are derived from this value--determined by each HitPoint class's own "armor" (float) value. So the lower this value, the weaker all the vehicle's corresponding location HitPoints will also be (i.e. the more damage a location takes with each hit).


[https://resources.bisimulations.com/w/index.php?title=Damage_Modeling:_Objects#armor A], [[CfgVehicles_Config_Reference#armor_.28integer.29|B]], [[Damage|C]].
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage_Modeling:_Objects#armor|A}}, [[CfgVehicles_Config_Reference#armor_.28integer.29|B]], [[Damage|C]].


=== armorStructural ===
=== armorStructural ===
<tt>'''int>0'''</tt>
{{hl|'''int>0'''}}


This makes global health resistant to damage, without affecting local health.
This makes global health resistant to damage, without affecting local health.
Line 424: Line 425:
The value is used as a divisor to global damage; the higher the value (beyond 1), the less global damage ("armor"/"hit points") occurs whenever the vehicle gets hit. HitPoints class location damage is ''not'' affected by this property; the location takes damage from the hit without being affected by this property. Extremely high values practically nullify the (in)famous cumulative "hit points" system of vehicle damage (e.g. plinking a tank to death with a rifle).
The value is used as a divisor to global damage; the higher the value (beyond 1), the less global damage ("armor"/"hit points") occurs whenever the vehicle gets hit. HitPoints class location damage is ''not'' affected by this property; the location takes damage from the hit without being affected by this property. Extremely high values practically nullify the (in)famous cumulative "hit points" system of vehicle damage (e.g. plinking a tank to death with a rifle).


[https://resources.bisimulations.com/w/index.php?title=Damage_Modeling:_Objects#armorStructural A].
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage_Modeling:_Objects#armorStructural|A}}.


=== brakeIdleSpeed ===
=== brakeIdleSpeed ===
<tt>'''float>0''', meters/second, (PhysX)</tt>
{{hl|'''float>0''', meters/second, (PhysX)}}


Speed below which brakes are automatically applied to slow the vehicle to a stop.
Speed below which brakes are automatically applied to slow the vehicle to a stop.
Line 433: Line 434:
If the value is too low, it will make the vehicle very difficult to bring to a complete stop. If it is too high, the vehicle will brake while you are trying to drive slowly.
If the value is too low, it will make the vehicle very difficult to bring to a complete stop. If it is too high, the vehicle will brake while you are trying to drive slowly.


[[Arma_3_Cars_Config_Guidelines#PhysX_3_integration|A]], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/B_cpp/cpp_brakeIdleSpeed.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____53 B]
[[Arma_3_Cars_Config_Guidelines#PhysX_3_integration|A]], {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/B_cpp/cpp_brakeIdleSpeed.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____53|B}}


=== cost ===
=== cost ===
<tt>'''int>0''', (AI only)</tt>
{{hl|'''int>0''', (AI only)}}


Tells the AI how valuable this vehicle is to attack relative to others.
Tells the AI how valuable this vehicle is to attack relative to others.
Line 444: Line 445:
(See "threat[]").
(See "threat[]").


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/C_cpp/cpp_cost.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____92 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/C_cpp/cpp_cost.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____92|A}}


=== changeGearMinEffectivity[] ===
=== changeGearMinEffectivity[] ===
<tt>'''float array''', (PhysX)</tt>
{{hl|'''float array''', (PhysX)}}


Tells the transmission when to switch gears. (All transmissions in Arma 3 behave as if automatic).
Tells the transmission when to switch gears. (All transmissions in Arma 3 behave as if automatic).
Line 456: Line 457:
However, reading NVIDIA documentation suggests the array values may simply represent the proportion of max engine RPM rather than some abstract "effectivity" value; in that case once the engine revs above(below) the RPM value, the game will shift one gear up(down).
However, reading NVIDIA documentation suggests the array values may simply represent the proportion of max engine RPM rather than some abstract "effectivity" value; in that case once the engine revs above(below) the RPM value, the game will shift one gear up(down).


[[Arma_3_Cars_Config_Guidelines#Differential_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleautoboxdata B]
[[Arma_3_Cars_Config_Guidelines#Differential_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleautoboxdata|B}}


=== clutchStrength ===
=== clutchStrength ===
<tt>'''float>0''', (PhysX)</tt>
{{hl|'''float>0''', (PhysX)}}


How 'tight' the clutch is--how quickly gear changes affect vehicle speed.
How 'tight' the clutch is--how quickly gear changes affect vehicle speed.
Line 465: Line 466:
Low values will mean more 'slippage' and slower acceleration after gear changes, higher values mean less slippage and quicker delivery of power to the wheels after a gear shift. BI recommends starting with a value of 10 (for CarX anyway, TankX config values are typically closer to 100). (See "thrustDelay").
Low values will mean more 'slippage' and slower acceleration after gear changes, higher values mean less slippage and quicker delivery of power to the wheels after a gear shift. BI recommends starting with a value of 10 (for CarX anyway, TankX config values are typically closer to 100). (See "thrustDelay").


[[Arma_3_Cars_Config_Guidelines#Differential_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleclutchdata B]
[[Arma_3_Cars_Config_Guidelines#Differential_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleclutchdata|B}}


=== crewExplosionProtection ===
=== crewExplosionProtection ===
<tt>'''float>0'''</tt>
{{hl|'''float>0'''}}


It's controlling how much indirectHit damage crew will take.
It's controlling how much indirectHit damage crew will take.
Line 475: Line 476:




[ {{ExternalLink|link= http://forums.bistudio.com/showthread.php?149636-Development-Branch-Changelog&p=2818157&viewfull=1#post2818157||text= A}} ]
[ {{Link|link= http://forums.bistudio.com/showthread.php?149636-Development-Branch-Changelog&p=2818157&viewfull=1#post2818157||text= A}} ]


=== crewVulnerable ===
=== crewVulnerable ===
<tt>'''bool''', (AI only)</tt>
{{hl|'''bool''', (AI only)}}


If true, AI units will shoot at the vehicle to wound exposed crewmembers even if damageResistance is too high for them to otherwise bother attacking. (See "damageResistance").
If true, AI units will shoot at the vehicle to wound exposed crewmembers even if damageResistance is too high for them to otherwise bother attacking. (See "damageResistance").


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/C_cpp/cpp_crewVulnerable.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____95 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/C_cpp/cpp_crewVulnerable.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____95|A}}


=== damageResistance ===
=== damageResistance ===
<tt>'''float>0''', (AI only)</tt>
{{hl|'''float>0''', (AI only)}}


Tells AI units how resistant this vehicle is to damage (so they can decide whether or not to bother attacking based on the weapons they are carrying). The calculation appears to be based only on the target's global armor and size, along with the weapon's hit value; armor & penetration are not factors. The formula for deriving this value is supposedly:
Tells AI units how resistant this vehicle is to damage (so they can decide whether or not to bother attacking based on the weapons they are carrying). The calculation appears to be based only on the target's global armor and size, along with the weapon's hit value; armor & penetration are not factors. The formula for deriving this value is supposedly:


<tt>(minHit^2) * (1/armor) * ([0.27/tgtRadius]^2)</tt>
{{hl|(minHit^2) * (1/armor) * ([0.27/tgtRadius]^2)}}


where "miHit" is the "hit" value for the ''weakest weapon that the AI should find useful against the vehicle''. How exactly the value is used by the game is a mystery. Possibly the AI check their weapon with this formula and compare it to the config value. Simplifying, one could say the AI checks it is weapon "hit" value against the minimum useful "hit" value the config has defined; if the AI weapon is >= the minimum value, the AI will consider attacking. If the AI's weapon is weaker, it won't.
where "miHit" is the "hit" value for the ''weakest weapon that the AI should find useful against the vehicle''. How exactly the value is used by the game is a mystery. Possibly the AI check their weapon with this formula and compare it to the config value. Simplifying, one could say the AI checks it is weapon "hit" value against the minimum useful "hit" value the config has defined; if the AI weapon is >= the minimum value, the AI will consider attacking. If the AI's weapon is weaker, it won't.


[https://resources.bisimulations.com/w/index.php?title=Damage_Modeling:_Objects#damageResistance A], [https://resources.bisimulations.com/w/index.php?title=Damage B],[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/D_cpp/cpp_damageResistance.htm?Highlight=damageresistance C]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage_Modeling:_Objects#damageResistance|A}}, {{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage|B}},{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/D_cpp/cpp_damageResistance.htm?Highlight{{=}}damageresistance|C}}


=== destrType ===
=== destrType ===
<tt>'''string'''</tt>
{{hl|'''string'''}}


Sets the destruction type for the object.
Sets the destruction type for the object.
Line 510: Line 511:




[https://resources.bisimulations.com/w/index.php?title=Damage_Modeling:_Objects#destrType A], [https://manuals.bisimulations.com/vbs3/3-4/devref/#Config_Manual/CfgVehicles/D_cpp/cpp_destrType.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____110 B]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage_Modeling:_Objects#destrType|A}}, {{Link|https://manuals.bisimulations.com/vbs3/3-4/devref/#Config_Manual/CfgVehicles/D_cpp/cpp_destrType.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____110|B}}


=== discreteDistance[] ===
=== discreteDistance[] ===
<tt>'''int array''', meters</tt>
{{hl|'''int array''', meters}}


These are the available weapon range settings for this Optics/Turret view. (i.e. what you switch through with the PgUp/PgDown key).
These are the available weapon range settings for this Optics/Turret view. (i.e. what you switch through with the PgUp/PgDown key).


=== discreteDistanceInitIndex ===
=== discreteDistanceInitIndex ===
<tt>'''int'''</tt>
{{hl|'''int'''}}


This is the array index of the default range setting from discreteDistance[]. (Remember all arrays are "zero-based"--that is, the first entry is #0).
This is the array index of the default range setting from discreteDistance[]. (Remember all arrays are "zero-based"--that is, the first entry is #0).


=== epeImpulseDamageCoef ===
=== epeImpulseDamageCoef ===
<tt>'''int&ge;0''', (PhysX) </tt>
{{hl|'''int&ge;0''', (PhysX) }}


<?>Undocumented: the name suggests this is a coefficient influencing how much damage the vehicle takes from physics-controlled impacts (i.e. crashing into a wall, another vehicle, etc.). Higher numbers suggest the vehicle takes more damage from such events.
<?>Undocumented: the name suggests this is a coefficient influencing how much damage the vehicle takes from physics-controlled impacts (i.e. crashing into a wall, another vehicle, etc.). Higher numbers suggest the vehicle takes more damage from such events.
Line 530: Line 531:


=== engineLosses ===
=== engineLosses ===
<tt>'''int&ge;0''', Newton-meters, (PhysX) </tt>
{{hl|'''int&ge;0''', Newton-meters, (PhysX) }}


A force that helps bleed speed from the vehicle (presumably most noticeable as the vehicle coasts).
A force that helps bleed speed from the vehicle (presumably most noticeable as the vehicle coasts).
Line 536: Line 537:
engineLosses bleed energy from the vehicle due to inefficiencies in the engine. As such, they are multiplied by the gear ratio (unlike transmissionLosses). (See "transmissionLosses").
engineLosses bleed energy from the vehicle due to inefficiencies in the engine. As such, they are multiplied by the gear ratio (unlike transmissionLosses). (See "transmissionLosses").


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/E_cpp/cpp_engineLosses.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____139 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/E_cpp/cpp_engineLosses.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____139|A}}


=== enginePower ===
=== enginePower ===
<tt>'''int>0''', kilowatts, (PhysX)</tt>
{{hl|'''int>0''', kilowatts, (PhysX)}}


Engine power in kW. (hp * 0.745699872 = kW).
Engine power in kW. (hp * 0.745699872 = kW).
Line 546: Line 547:


=== explosionShielding (global) ===
=== explosionShielding (global) ===
<tt>'''float&ge;0'''</tt>
{{hl|'''float&ge;0'''}}


Modifies how global vehicle health is affected by 'splash' damage (indirectHit).
Modifies how global vehicle health is affected by 'splash' damage (indirectHit).
Line 555: Line 556:


=== forceHide__ ===
=== forceHide__ ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Whether a crewmember has the ability to "turn out" or not. (1 = cannot turn out, 0 = can turn out).
Whether a crewmember has the ability to "turn out" or not. (1 = cannot turn out, 0 = can turn out).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/F_cpp/cpp_forceHideCommander.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____153 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/F_cpp/cpp_forceHideCommander.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____153|A}}


=== extCameraPosition[] ===
=== extCameraPosition[] ===
<tt>'''float array''', meters</tt>
{{hl|'''float array''', meters}}


These are the XYZ coordinates of the 3rd person camera view for this vehicle.
These are the XYZ coordinates of the 3rd person camera view for this vehicle.
Line 568: Line 569:
The 3 members of the array represent coordinates in meters [X,Y,Z] = (side-to-side, vertical, close/forward-far/back.) The distances are calculated relative to the center of the vehicle.
The 3 members of the array represent coordinates in meters [X,Y,Z] = (side-to-side, vertical, close/forward-far/back.) The distances are calculated relative to the center of the vehicle.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/E_cpp/cpp_extCameraPosition.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____141 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/E_cpp/cpp_extCameraPosition.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____141|A}}


=== __Fov ===
=== __Fov ===
<tt>'''float&ge;0''', 1=120 degrees</tt>
{{hl|c= '''float&ge;0''', 1=120 degrees}}


Field of View / magnification for the Optics class it is found in.
Field of View / magnification for the Optics class it is found in.
Line 577: Line 578:
"init__", "min__", "max__" with "initFov" being the default. Smaller values mean a ''narrower'' FOV and thus a ''higher'' magnification.
"init__", "min__", "max__" with "initFov" being the default. Smaller values mean a ''narrower'' FOV and thus a ''higher'' magnification.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/I_cpp/cpp_initFov.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____234 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/I_cpp/cpp_initFov.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____234|A}}


=== fuelCapacity ===
=== fuelCapacity ===
<tt>'''int>0''', liters</tt>
{{hl|'''int>0''', liters}}


Vehicle fuel capacity.
Vehicle fuel capacity.
Line 586: Line 587:
(While VBS3 uses 0.1 liter units, Arma 3 appears to use 1 liter units based on config values). Regardless, the fuel consumption model in the game is very simplified so real-world values--while a useful starting point--may need tweaking in order to translate them into good in-game values.
(While VBS3 uses 0.1 liter units, Arma 3 appears to use 1 liter units based on config values). Regardless, the fuel consumption model in the game is very simplified so real-world values--while a useful starting point--may need tweaking in order to translate them into good in-game values.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/F_cpp/cpp_fuelCapacity.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____162 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/F_cpp/cpp_fuelCapacity.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____162|A}}


=== gunnerOpticsModel ===
=== gunnerOpticsModel ===
<tt>'''string'''</tt>
{{hl|'''string'''}}


P3D model used when for this turret when crewmember is "turned in". (filename should include path).
P3D model used when for this turret when crewmember is "turned in". (filename should include path).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/G_cpp/cpp_gunnerOpticsModel.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____197 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/G_cpp/cpp_gunnerOpticsModel.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____197|A}}


=== gunnerOutOpticsModel ===
=== gunnerOutOpticsModel ===
<tt>'''string'''</tt>
{{hl|'''string'''}}


P3D model used when for this turret when crewmember is "turned out". (filename should include path).
P3D model used when for this turret when crewmember is "turned out". (filename should include path).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/G_cpp/cpp_gunnerOutOpticsModel.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____202 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/G_cpp/cpp_gunnerOutOpticsModel.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____202|A}}


=== gunnerOpticsEffect[] ===
=== gunnerOpticsEffect[] ===
<tt>'''string'''</tt>
{{hl|'''string'''}}


Optical effects overlay (blur, etc.) applied to this turret in "turned in" mode.
Optical effects overlay (blur, etc.) applied to this turret in "turned in" mode.


=== gunnerHasFlares ===
=== gunnerHasFlares ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


<??>Whether the crewmember at this Turret can launch the vehicle's countermeasures, if such are available (aircraft flares, AFV smoke grenades).
<??>Whether the crewmember at this Turret can launch the vehicle's countermeasures, if such are available (aircraft flares, AFV smoke grenades).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/G_cpp/cpp_gunnerHasFlares.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____192 A], (comment in "Samples_F\Test_Tank_01\CfgVehicles.hpp")
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/G_cpp/cpp_gunnerHasFlares.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____192|A}}, (comment in "Samples_F\Test_Tank_01\CfgVehicles.hpp")


=== hiddenSelections[] ===
=== hiddenSelections[] ===
<tt>'''string array'''</tt>
{{hl|'''string array'''}}


HiddenSelections lets you swap texture & material in-game on specified parts of your vehicle.  
HiddenSelections lets you swap texture & material in-game on specified parts of your vehicle.  
Line 639: Line 640:
Using hiddenSelections gives you the ability to change the sections' textures and materials via script with the [[setObjectMaterial|setObjectMaterial]] and [[setObjectTexture|setObjectTexture(/Global)]] commands. (Note that changing an object's material does ''not'' appear to change its associated bisurf properties--this system is intended for changing visual appearance only; you can't use it to cleverly change fire geometry properties--use the "hide" Animation for that purpose [see damageHide later in this section].)
Using hiddenSelections gives you the ability to change the sections' textures and materials via script with the [[setObjectMaterial|setObjectMaterial]] and [[setObjectTexture|setObjectTexture(/Global)]] commands. (Note that changing an object's material does ''not'' appear to change its associated bisurf properties--this system is intended for changing visual appearance only; you can't use it to cleverly change fire geometry properties--use the "hide" Animation for that purpose [see damageHide later in this section].)


Note: hiddenSelections are ''not'' intended for hiding or texture-swapping ''damaged hit locations''; there are built-in ways to handl that with [http://tactical.nekromantix.com/wiki/doku.php?id=arma:modeling:damage_model the 'damageHide' process] and/or the CfgVehicles>Damage class.
Note: hiddenSelections are ''not'' intended for hiding or texture-swapping ''damaged hit locations''; there are built-in ways to handl that with [http://tactical.nekromantix.com/wiki/doku.php?id{{=}}arma:modeling:damage_model the 'damageHide' process] and/or the CfgVehicles>Damage class.


See also: [[#hiddenSelectionsTextures&#91;&#93;]]
See also: [[#hiddenSelectionsTextures&#91;&#93;]]


[ {{ExternalLink|link= https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Config_Manual/CfgVehicles/H_cpp/cpp_hiddenSelections.htm A],[http://forums.bistudio.com/showthread.php?93033-Hidden-Selections|text= B}}, [http://fab.ofp.free.fr/Tutorials/Hidden_Selections.htm C], [http://tactical.nekromantix.com/wiki/doku.php?id=arma2:texturing:hiddenselectionstextures D] [[ArmA:_Howto_Model_Config#sectionsInherit_.3D_.22.22.3B|E]]]
[ {{Link|link= https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Config_Manual/CfgVehicles/H_cpp/cpp_hiddenSelections.htm|text= A}}, {{Link|link= http://forums.bistudio.com/showthread.php?93033-Hidden-Selections|text= B}}, {{Link|link= http://fab.ofp.free.fr/Tutorials/Hidden_Selections.htm|text= C}}, {{Link|link= http://tactical.nekromantix.com/wiki/doku.php?id=arma2:texturing:hiddenselectionstextures|text= D}} [[ArmA: Howto Model Config#sectionsInherit_.3D_.22.22.3B|E]]]


=== hiddenSelectionsTextures[] ===
=== hiddenSelectionsTextures[] ===
<tt>'''string array'''</tt>
{{hl|'''string array'''}}


A list of (pathed) textures for use with hiddenSelections[]. The textures are assigned to the hiddenSelections[] elements in the order they are listed (first texture goes to the first element, and so on). hiddenSelections[] elements with no texture listed will be hidden at game startup, while those with a texture will be displayed and use the texture assigned. Note: even though hiddenSelection has a material (rvmat) assigned to it that would normally make it visible, leaving out its texture in this property will hide it entirely.
A list of (pathed) textures for use with hiddenSelections[]. The textures are assigned to the hiddenSelections[] elements in the order they are listed (first texture goes to the first element, and so on). hiddenSelections[] elements with no texture listed will be hidden at game startup, while those with a texture will be displayed and use the texture assigned. Note: even though hiddenSelection has a material (rvmat) assigned to it that would normally make it visible, leaving out its texture in this property will hide it entirely.
Line 662: Line 663:
hiddenSelectionsTextures[] = {"jeepMod\textures\tire.paa","jeepMod\textures\flag.paa"};
hiddenSelectionsTextures[] = {"jeepMod\textures\tire.paa","jeepMod\textures\flag.paa"};
}
}
class Jeep_cheap: Jeep_base
class Jeep_cheap : Jeep_base
{
{
// because "flag" is not included here, it is hidden--you also don't have access to it via script either
// because "flag" is not included here, it is hidden--you also don't have access to it via script either
Line 668: Line 669:
hiddenSelectionsTextures[] = {"jeepMod\textures\tire.paa"};
hiddenSelectionsTextures[] = {"jeepMod\textures\tire.paa"};
}
}
class Jeep_fancy: Jeep_base
class Jeep_fancy : Jeep_base
{
{
// both sections are available via script, but spareTire is hidden by giving it no texture ("")
// both sections are available via script, but spareTire is hidden by giving it no texture ("")
Line 679: Line 680:


=== hideWeapons__ ===
=== hideWeapons__ ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


If true, the game hides any weapons being carried by the crewmember/passenger when he is riding in the vehicle.
If true, the game hides any weapons being carried by the crewmember/passenger when he is riding in the vehicle.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/H_cpp/cpp_hideWeaponsGunner.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____222 A], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/H_cpp/cpp_hideWeaponsDriver.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____221 B], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/H_cpp/cpp_hideWeaponsCommander.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____220 C], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/H_cpp/cpp_hideWeaponsCargo.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____219 D]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/H_cpp/cpp_hideWeaponsGunner.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____222|A}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/H_cpp/cpp_hideWeaponsDriver.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____221|B}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/H_cpp/cpp_hideWeaponsCommander.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____220|C}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/H_cpp/cpp_hideWeaponsCargo.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____219|D}}


=== idleRpm ===
=== idleRpm ===
<tt>'''int>0''', RPM (revolutions per minute)</tt>
{{hl|'''int>0''', RPM (revolutions per minute)}}


RPM level when engine is idling--this affects the engine sound. (See "redRpm").
RPM level when engine is idling--this affects the engine sound. (See "redRpm").
Line 693: Line 694:


=== inGunnerMayFire ===
=== inGunnerMayFire ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


If true, the crewmember at this turret can move the view and fire any attached weapon when he is "turned in".
If true, the crewmember at this turret can move the view and fire any attached weapon when he is "turned in".
Line 699: Line 700:
"Gunner" is used to mean whichever crewmember has access to this turret/view (e.g. the Commander is the "Gunner" in the Commander's turret).
"Gunner" is used to mean whichever crewmember has access to this turret/view (e.g. the Commander is the "Gunner" in the Commander's turret).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/I_cpp/cpp_inGunnerMayFire.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____230 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/I_cpp/cpp_inGunnerMayFire.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____230|A}}


=== latency ===
=== latency ===
Line 706: Line 707:


=== magazines[] ===
=== magazines[] ===
<tt>'''string array'''</tt>
{{hl|'''string array'''}}


List of magazines available to the weapons at this turret. (Magazine names come from CfgMagazines class[es]).
List of magazines available to the weapons at this turret. (Magazine names come from CfgMagazines class[es]).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/M_cpp/cpp_magazines.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____277 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/M_cpp/cpp_magazines.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____277|A}}


=== maxOmega ===
=== maxOmega ===
<tt>'''int>0''', radians per second, (PhysX)</tt>
{{hl|'''int>0''', radians per second, (PhysX)}}


Maximum rotational speed of engine. (revolutions-per-minute * 0.104719755 = radians-per-second).
Maximum rotational speed of engine. (revolutions-per-minute * 0.104719755 = radians-per-second).


[[Arma_3_Cars_Config_Guidelines#Engine_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleenginedata B]
[[Arma_3_Cars_Config_Guidelines#Engine_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleenginedata|B}}


=== minTotalDamageTreshold ===
=== minTotalDamageTreshold ===
<tt>'''float&ge;0'''</tt>
{{hl|'''float&ge;0'''}}


Protects global vehicle health from damage.
Protects global vehicle health from damage.
Line 729: Line 730:


=== normalSpeedForwardCoef ===
=== normalSpeedForwardCoef ===
<tt>'''float>0'''</tt>
{{hl|'''float>0'''}}


<?> Proportion of top speed that is considered "normal speed" (as opposed to "fast speed" or "slow speed"). Not at all sure what this does in the game, read the cryptic description in the link and see what you can decipher from it...
<?> Proportion of top speed that is considered "normal speed" (as opposed to "fast speed" or "slow speed"). Not at all sure what this does in the game, read the cryptic description in the link and see what you can decipher from it...
Line 736: Line 737:


=== outGunnerMayFire ===
=== outGunnerMayFire ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


If true, the crewmember at this turret can move the view and fire any attached weapon when he is "turned out".
If true, the crewmember at this turret can move the view and fire any attached weapon when he is "turned out".
Line 742: Line 743:
"Gunner" is used to mean whichever crewmember has access to this turret/view (e.g. the Commander is the "Gunner" in the Commander's turret). Note: apparently the game engine assumes helicopter crew are "turned out", so this property should be set to true for helicopters.
"Gunner" is used to mean whichever crewmember has access to this turret/view (e.g. the Commander is the "Gunner" in the Commander's turret). Note: apparently the game engine assumes helicopter crew are "turned out", so this property should be set to true for helicopters.


[https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Config_Manual/CfgVehicles/O_cpp/cpp_outGunnerMayFire.htm A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Config_Manual/CfgVehicles/O_cpp/cpp_outGunnerMayFire.htm|A}}


=== peakTorque ===
=== peakTorque ===
<tt>'''int>0''', Newton-meters, (PhysX)</tt>
{{hl|'''int>0''', Newton-meters, (PhysX)}}


Maximum engine torque. (<tt>=enginePower*1000/maxOmega</tt>).
Maximum engine torque. ({{hl|c= =enginePower*1000/maxOmega}}).


[[Arma_3_Cars_Config_Guidelines#Engine_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleenginedata B]
[[Arma_3_Cars_Config_Guidelines#Engine_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleenginedata|B}}


=== radarType ===
=== radarType ===


=== redRpm ===
=== redRpm ===
<tt>'''int>0''', RPM (revolutions per minute)</tt>
{{hl|'''int>0''', RPM (revolutions per minute)}}


Maximum engine RPM--this affects the engine sound; just use "maxOmega" translated into RPM (multiply by ~9.5493). (See "idleRpm").
Maximum engine RPM--this affects the engine sound; just use "maxOmega" translated into RPM (multiply by ~9.5493). (See "idleRpm").
Line 761: Line 762:


=== secondaryExplosion ===
=== secondaryExplosion ===
<tt>'''float'''</tt>
{{hl|'''float'''}}


Determines the strength of the explosion effect when the vehicle is destroyed.
Determines the strength of the explosion effect when the vehicle is destroyed.
Line 769: Line 770:
*secondaryExplosion = 1; // When positive number is set, "explosion power is taken from hit property defined for FuelExplosion class in CfgAmmo. For this FuelExplosion needs to be defined. The name FuelExplosion is hardcoded and can not be changed"
*secondaryExplosion = 1; // When positive number is set, "explosion power is taken from hit property defined for FuelExplosion class in CfgAmmo. For this FuelExplosion needs to be defined. The name FuelExplosion is hardcoded and can not be changed"


[https://resources.bisimulations.com/w/index.php?title=Damage_Modeling:_Objects#secondaryExplosion A], [http://resources.bisimulations.com/wiki/Damage_Modeling:_Objects#armor B], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_secondaryExplosion.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____424 C]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage_Modeling:_Objects#secondaryExplosion|A}}, {{Link|http://resources.bisimulations.com/wiki/Damage_Modeling:_Objects#armor|B}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_secondaryExplosion.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____424|C}}


=== simulation ===
=== simulation ===
<tt>'''string'''</tt>
{{hl|'''string'''}}


Which simulation type governs this vehicle's physical behavior--for most vehicles this is generally one of the PhysX systems ("TankX", "CarX", "ShipX", "HelicopterX", "AirplaneX", <?>).
Which simulation type governs this vehicle's physical behavior--for most vehicles this is generally one of the PhysX systems ("TankX", "CarX", "ShipX", "HelicopterX", "AirplaneX", <?>).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_simulation.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____447 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_simulation.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____447|A}}


=== smokeLauncherAngle ===
=== smokeLauncherAngle ===
<tt>'''int&ge;0''', degrees</tt>
{{hl|'''int&ge;0''', degrees}}


The angular spread/arc in which the countermeasure smoke grenades are launched.
The angular spread/arc in which the countermeasure smoke grenades are launched.
Line 788: Line 789:


=== smokeLauncherGrenadeCount ===
=== smokeLauncherGrenadeCount ===
<tt>'''int&ge;0'''</tt>
{{hl|'''int&ge;0'''}}


Total number of smoke grenades launched when the countermeasure is used. (See the other "smokeLauncher__" properties for more details on how the smokescreen is generated).
Total number of smoke grenades launched when the countermeasure is used. (See the other "smokeLauncher__" properties for more details on how the smokescreen is generated).


[(comment in "Samples_F\Test_Tank_01\CfgVehicles.hpp"), [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_smokeDischarger_grenadesPerUse.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____449 B]]
[(comment in "Samples_F\Test_Tank_01\CfgVehicles.hpp"), {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_smokeDischarger_grenadesPerUse.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____449|B}}]


=== smokeLauncherOnTurret ===
=== smokeLauncherOnTurret ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Whether the smoke grenades countermeasure launches from the turret or the body of the vehicle.
Whether the smoke grenades countermeasure launches from the turret or the body of the vehicle.
Line 801: Line 802:
1= launcher on turret, grenades fire in direction turret is facing (this is typical for tanks). 2= launcher on hull, grenades fire in direction hull is facing.
1= launcher on turret, grenades fire in direction turret is facing (this is typical for tanks). 2= launcher on hull, grenades fire in direction hull is facing.


[,[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_smokeDischarger_onturret.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____450 B]]
[,{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_smokeDischarger_onturret.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____450|B}}]


=== smokeLauncherVelocity ===
=== smokeLauncherVelocity ===
<tt>'''int&ge;0''', m/s</tt>
{{hl|'''int&ge;0''', m/s}}


Speed at which the grenades are launched. <?>Perhaps this affects height or distance of the resulting smokescreen.
Speed at which the grenades are launched. <?>Perhaps this affects height or distance of the resulting smokescreen.
Line 811: Line 812:


=== tankTurnForce ===
=== tankTurnForce ===
<tt>'''int>0''', (PhysX)</tt>
{{hl|'''int>0''', (PhysX)}}


How well a tank can turn, higher = better turning ability.
How well a tank can turn, higher = better turning ability.
Line 820: Line 821:


=== thermalMode[] ===
=== thermalMode[] ===
<tt>'''int array'''</tt>
{{hl|'''int array'''}}


Defines color modes available for thermal sights.
Defines color modes available for thermal sights.


If a Turret has "TI" in its visionMode[], it can list one or more thermalMode[]'s. Any thermalMode[]'s are added to the "N"-key vision mode toggle set. The following modes are available: 0=white-hot, 1=black-hot, 2=green-hot,3=green/black-hot, 4=red-hot, 5=red/black-hot, (others?). (See "visionMode[]").
If a Turret has "TI" in its visionMode[], it can list one or more thermalMode[]'s. Any thermalMode[]'s are added to the "N"-key vision mode toggle set. The following modes are available: 0=white-hot, 1=black-hot, 2=green-hot,3=green/black-hot, 4=red-hot, 5=red/black-hot, (others?). (See "visionMode[]").
=== thermalNoise[] {{GVI|arma3|2.10}} ===
{{hl|'''float array'''}}
See [[Post_Process_Effects#FilmGrain|FilmGrain]] Post Processing effect.
This defines thermal noise effect.
A 8 element array (Two more arguments than filmgrain)
intensity, sharpness, grainSize, intensityX0, intensityX1, monochromatic, static, blurCoef
the static parameter is a bool (1=static, 0=random) specifiying if the noise is randomly generated and different each frame, or if its randomized once and stays static.
the blurCoef (default 0.5) specifies how blurry the result image is.
If you leave this array empty or undefined, engine will use default values.
=== thermalResoluton[] {{GVI|arma3|2.10}} ===
{{hl|'''float array'''}}
Defines screen resolutions at specific zoom steps.
Zoom between defined steps will be linearly interpolated.
The array is a sequence of X,Y values, X being the zoom between 0-1 (maxFov to minFov of the optic) and Y being the vertical resolution in pixels.
This value is only used if there are thermalMode[]'s defined.
It can be used to simulate digital zoom in thermal optics.
Ranges of resolution are only used for "smooth" zoom optics (or weapons with discreteFov[]), for discrete step's you can use single element arrays to set the resolution for the current step.
The conversion from fov to zoom percentage uses this formula:
<syntaxhighlight lang="cpp">
delta = atan(maxFov)*2 - atan(minFov)*2;
zoom = 1 - (atan(currentFov)*2 - atan(minFov)*2) / delta
</syntaxhighlight>
The engine internally converts the zoom values to corresponding fov and uses that to linearly interpolate between the two closet values.
The list of needs to be sorted by zoom in ascending order.
It has to start with 0.0 zoom, and it has to end with 1.0 zoom. Values smaller than 0 or larger than 1.0 are not allowed.
The resolutions have no constraints. If the resolution is larger than the players vertical render resolution, it will be clamped.
Providing a negative value as a resolution, will cause the engine to convert it to the players actual vertical render resolution. You can use -1 to mean "100% of players resolution"
The horizontal resolution is calculated based on vertical resolution and the players aspect ratio (See "Resolution" PostProcessing effect).
Note: Nightvision googles (with integrated thermal) don't support zoom resolutions, they only support a single fixed resolution.
Examples:
<syntaxhighlight lang="cpp">
thermalResolution[]={0.0, 2048, 1.0, 512}; // 2048px vertical resolution at 0% zoom (maxFov), linearly reducing down to 512px vertical resolution at 100% zoom (minFov)
thermalResolution[]={512}; // 512 pixels, independent of zoom. Usually used when having a different optic class per zoom step
thermalResolution[]={0.0, 2048, 0.5, 2048, 1.0, 128}; // A combination optical/digital zoom. Optical zoom with no resolution loss during the first 50% of zooming, and rapid resolution loss in the last 50%
</syntaxhighlight>


=== threat[] ===
=== threat[] ===
<tt>'''float array''', 1&ge;values&ge;0, (AI only)</tt>
{{hl|'''float array''', 1&ge;values&ge;0, (AI only)}}


How important it is for {AI Infantry, AI Armor, AI Aircraft} to attack this vehicle.
How important it is for {AI Infantry, AI Armor, AI Aircraft} to attack this vehicle.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/T_cpp/cpp_Threat.htm%3FTocPath%3D4%20Configuration%20Manual%7CCfgVehicles%7C_____455 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/T_cpp/cpp_Threat.htm%3FTocPath%3D4%20Configuration%20Manual%7CCfgVehicles%7C_____455|A}}


=== thrustDelay ===
=== thrustDelay ===
<tt>'''int&ge;0''', seconds, (PhysX)</tt>
{{hl|'''int&ge;0''', seconds, (PhysX)}}


Time it takes for engine to send power to the wheels from a stop.
Time it takes for engine to send power to the wheels from a stop.
Line 843: Line 891:


=== torqueCurve[] ===
=== torqueCurve[] ===
<tt>'''float array''', (PhysX)</tt>
{{hl|'''float array''', (PhysX)}}


An array describing how much torque the engine generates at various rotational speeds.
An array describing how much torque the engine generates at various rotational speeds.
Line 849: Line 897:
The values are normalized (0-1) so any units can be used to derive these values. The array consists of pairs of values in the form { {rotation1,torque1},{rotation2, torque2}, ...}. The first value in each pair tells the game how far along the RPM curve we are, the second value tells it how much to scale the peakTorque output. These are used to create a virtual graph which the game uses to determine engine power at various rotational speeds.
The values are normalized (0-1) so any units can be used to derive these values. The array consists of pairs of values in the form { {rotation1,torque1},{rotation2, torque2}, ...}. The first value in each pair tells the game how far along the RPM curve we are, the second value tells it how much to scale the peakTorque output. These are used to create a virtual graph which the game uses to determine engine power at various rotational speeds.


[[Arma_3_Cars_Config_Guidelines#Engine_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleenginedata B]
[[Arma_3_Cars_Config_Guidelines#Engine_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicleenginedata|B}}


=== transmissionLosses ===
=== transmissionLosses ===
<tt>'''int&ge;0''', Newton-meters, (PhysX) </tt>
{{hl|'''int&ge;0''', Newton-meters, (PhysX) }}


A force that helps bleed speed from the vehicle (presumably most noticeable as the vehicle coasts).
A force that helps bleed speed from the vehicle (presumably most noticeable as the vehicle coasts).
Line 858: Line 906:
transmissionLosses bleed energy from the vehicle due to inefficiencies in the transmission system. As such, they are not multiplied by the gear ratio (unlike engineLosses). (See "engineLosses").
transmissionLosses bleed energy from the vehicle due to inefficiencies in the transmission system. As such, they are not multiplied by the gear ratio (unlike engineLosses). (See "engineLosses").


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/T_cpp/cpp_transmissionLosses.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____490 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/T_cpp/cpp_transmissionLosses.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____490|A}}


=== transportSoldier ===
=== transportSoldier ===
<tt>'''int&ge;0'''</tt>
{{hl|'''int&ge;0'''}}


How many passengers the vehicle can carry as cargo. (Crewmembers--gunner, driver, etc.--are not included in this value).
How many passengers the vehicle can carry as cargo. (Crewmembers--gunner, driver, etc.--are not included in this value).
Line 867: Line 915:
The vehicle's P3D model must also contain this number of proxies in the cargo area.
The vehicle's P3D model must also contain this number of proxies in the cargo area.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/T_cpp/cpp_transportSoldier.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____499 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/T_cpp/cpp_transportSoldier.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____499|A}}


=== viewGunnerInExternal ===
=== viewGunnerInExternal ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Controls whether the crewmember (at this turret) is rendered ''and damageable''.
Controls whether the crewmember (at this turret) is rendered ''and damageable''.
Line 876: Line 924:
1= render crewmember when he is buttoned/"turned in", 0= render crewmember only when unbuttoned. Apparently this needs to be set =1 in order for crew to be damaged by penetrating hits (i.e. if crew is not rendered, they cannot be damaged).
1= render crewmember when he is buttoned/"turned in", 0= render crewmember only when unbuttoned. Apparently this needs to be set =1 in order for crew to be damaged by penetrating hits (i.e. if crew is not rendered, they cannot be damaged).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Models/How_to/AMHT_Turrets_Parameters.htm%3FTocPath%3D2%2520How%2520to...%7CTurrets%7C_____2 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Models/How_to/AMHT_Turrets_Parameters.htm%3FTocPath%3D2%2520How%2520to...%7CTurrets%7C_____2|A}}


=== visionMode[] ===
=== visionMode[] ===
<tt>'''string array'''</tt>
{{hl|'''string array'''}}


Which vision types are available to toggle through ("N" key) in this optics view. Options are "Normal" (regular vision),"TI" (thermal imaging view),"NVG" (infrared/ambient light enhancement view).
Which vision types are available to toggle through ("N" key) in this optics view. Options are "Normal" (regular vision),"TI" (thermal imaging view),"NVG" (infrared/ambient light enhancement view).
Line 886: Line 934:


=== waterPPInVehicle ===
=== waterPPInVehicle ===
<tt>'''bool'''</tt>
{{hl|'''bool'''}}


Whether passenger area floods when vehicle is swimming (i.e. passengers see water in their interior view).
Whether passenger area floods when vehicle is swimming (i.e. passengers see water in their interior view).
Line 892: Line 940:
If false(?), the interior of the vehicle does not flood when swimming--passengers don't see themselves underwater.
If false(?), the interior of the vehicle does not flood when swimming--passengers don't see themselves underwater.


[http://www.arma3.fr/actu-4366-spotrep_ A]
{{Link|http://www.arma3.fr/actu-4366-spotrep_|A}}


=== weapons[] ===
=== weapons[] ===
<tt>'''string array'''</tt>
{{hl|'''string array'''}}


List of weapons at this turret. (Weapon names come from CfgWeapons class[es]).
List of weapons at this turret. (Weapon names come from CfgWeapons class[es]).


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/W_cpp/cpp_weapons.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____550 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/W_cpp/cpp_weapons.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____550|A}}


</div>
</div>
Line 909: Line 957:
*Axes (consisting of two verts each) in the Memory LOD of the P3D file; this is how the bone knows where it is located and the axis it moves/rotates on. Axes are only necessary for translation or rotation bones (e.g. bones with nothing but a "hide" animation do not need any axis)
*Axes (consisting of two verts each) in the Memory LOD of the P3D file; this is how the bone knows where it is located and the axis it moves/rotates on. Axes are only necessary for translation or rotation bones (e.g. bones with nothing but a "hide" animation do not need any axis)


[https://resources.bisimulations.com/w/index.php?title=Model_Config#AnimationSources A]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Model_Config#AnimationSources|A}}
==== source ====
==== source ====
[https://resources.bisimulations.com/w/index.php?title=Model_Config#Animation_sources A]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Model_Config#Animation_sources|A}}


=== ''class complexGearbox'' ===
=== ''class complexGearbox'' ===
Line 929: Line 977:


==== mat[] ====
==== mat[] ====
<tt>'''string array'''</tt>
{{hl|'''string array'''}}


An array of RVMAT materials in groups of three. These are used to swap textures (or rather, materials) based on the damage state of a hit location. This is a complex process that requires configuration beyond the Damage class itself.
An array of RVMAT materials in groups of three. These are used to swap textures (or rather, materials) based on the damage state of a hit location. This is a complex process that requires configuration beyond the Damage class itself.


<syntaxhighlight lang="php">
<syntaxhighlight lang="cpp">
class CfgVehicles
class CfgVehicles
{
{
Line 940: Line 988:
class Damage
class Damage
{
{
tex[] = {}; // the texture component seems to always be unused, perhaps it is deprecated
tex[] = {}; // the texture component seems to always be unused, perhaps it is deprecated
mat[] = // good use of the Enter key makes the groupings clear
mat[] = // good use of the Enter key makes the groupings clear
{
{
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02.rvmat", //the first entry is displayed in the low-damage state (~0-50% damage)
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02.rvmat", // the first entry is displayed in the low-damage state (~0-50% damage)
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_damage.rvmat", //the second entry is displayed in the medium-damage state (~50-99% damage)
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_damage.rvmat", // the second entry is displayed in the medium-damage state (~50-99% damage)
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_destruct.rvmat", //the third entry is displayed in the high-damage state (100% damage)
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_destruct.rvmat", // the third entry is displayed in the high-damage state (100% damage)
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_body.rvmat",
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_body.rvmat",
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_body.rvmat", //you can simply duplicate an entry in the list if you don't have all 3
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_body.rvmat", // you can simply duplicate an entry in the list if you do not have all 3
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_body_destruct.rvmat",
"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_body_destruct.rvmat",


Line 955: Line 1,003:
"myMod\myVehicleDir\Data\glass_screen_destroyed.rvmat"
"myMod\myVehicleDir\Data\glass_screen_destroyed.rvmat"
};
};
};
};
};
</syntaxhighlight>
</syntaxhighlight>


Creating a texture swap requires several more steps:
Creating a texture swap requires several more steps:
*The geometry whose material will be swapped
* The geometry whose material will be swapped
**must exist as a "section" in model.cfg
** must exist as a "section" in model.cfg
**must have the base material applied to it in the P3D.
** must have the base material applied to it in the P3D.
*The link between the hit location and the material group is defined via the ''section'' name--it goes in the [[#visual|''visual'']] property of the HitPoint class.
* The link between the hit location and the material group is defined via the ''section'' name--it goes in the [[#visual|''visual'']] property of the HitPoint class.
*This leaves only the listing of the material groups for the Damage class.
* This leaves only the listing of the material groups for the Damage class.


Warning, these links contain incomplete and (some) obsolete information: [http://tactical.nekromantix.com/wiki/doku.php?id=arma:modeling:damage_model|A], [[Vehicle_Damage|B]]
Warning, these links contain incomplete and (some) obsolete information: {{Link|http://tactical.nekromantix.com/wiki/doku.php?id{{=}}arma:modeling:damage_model|A],|[[Vehicle_Damage|B}}]


==== tex[] ====
==== tex[] ====
<tt>'''string array''', [deprecated?]</tt>
{{hl|'''string array''', [deprecated?]}}


This property should work like mat[], but for PAA texture files. It appears to be unused in stock Arma 3 configs and may be deprecated.
This property work like mat[], but for texture files. It uses pairs of textures - intact and damaged. In case extension of missing texture path, .pac is assumed!


=== ''class DestructionEffects'' ===
=== ''class DestructionEffects'' ===
This class is used to create an array of visual and audio effects for when the vehicle--''or hit location''--is destroyed:
This class is used to create an array of visual and audio effects for when the vehicle--''or hit location''--is destroyed:
*if the class is placed under CfgVehicles, it applies when the whole vehicle is destroyed.
*if the class is placed under CfgVehicles, it applies when the whole vehicle is destroyed.
Line 981: Line 1,033:


Instead of just using numerical values for the properties (e.g. lifetime = 10;), you can create variation and even randomness by including certain variable names (e.g. lifetime = "intensity * 5 + (random 10)";).
Instead of just using numerical values for the properties (e.g. lifetime = 10;), you can create variation and even randomness by including certain variable names (e.g. lifetime = "intensity * 5 + (random 10)";).
Here is [[Arma 3 Particle Effects: Config Parameters|a list of some key variable names]], although there are possibly many more which are undocumented.
Here is [[Arma 3: Particle Effects: Config Parameters|a list of some key variable names]], although there are possibly many more which are undocumented.


[https://resources.bisimulations.com/w/index.php?title=Damage_Modeling:_Objects#DestructionEffects_class A], [[Arma_3_Particle_Effects|B]], [https://manuals.bisimulations.com/vbs3/3-4/devref/#Config_Manual/CfgVehicles/P_cpp/cpp_Particle_Effects.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____374 C]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage_Modeling:_Objects#DestructionEffects_class|A}}, [[Arma_3_Particle_Effects|B]], {{Link|https://manuals.bisimulations.com/vbs3/3-4/devref/#Config_Manual/CfgVehicles/P_cpp/cpp_Particle_Effects.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____374|C}}


==== intensity ====
==== intensity ====
<tt>float</tt>
{{hl|float}}


==== intensity ====
==== intensity ====
<tt>float</tt>
{{hl|float}}


==== position ====
==== position ====
<tt>string</tt>
{{hl|string}}


The position the effect comes from. This can be any named vertex from the vehicle's Memory LOD.
The position the effect comes from. This can be any named vertex from the vehicle's Memory LOD.
Line 999: Line 1,051:


==== simulation ====
==== simulation ====
<tt>string</tt>
{{hl|string}}


What type of effect entry this is.
What type of effect entry this is.
Line 1,012: Line 1,064:


=== ''class HitPoints'' ===
=== ''class HitPoints'' ===
Although these classes are typically separated into sub-classes (e.g. turret hitpoints under the Turrets class)--the game does ''not'' appear to require this in practice. Because hitpoints are attached to bones via the <tt>name</tt> property, hitpoint classes can be defined all at the same hierarchical level, anywhere in CfgVehicles--and in fact this practice would be preferable when you are making use of the <tt>depends</tt> property (which cannot reference hitpoint classes defined at different levels of the config).
Although these classes are typically separated into sub-classes (e.g. turret hitpoints under the Turrets class)--the game does ''not'' appear to require this in practice. Because hitpoints are attached to bones via the {{hl|name}} property, hitpoint classes can be defined all at the same hierarchical level, anywhere in CfgVehicles--and in fact this practice would be preferable when you are making use of the {{hl|depends}} property (which cannot reference hitpoint classes defined at different levels of the config).


==== armor (local) ====
==== armor (local) ====
<tt>'''float>0'''</tt>
{{hl|'''float>0'''}}


Proportion of global health assigned to this location.
Proportion of global health assigned to this location.
Line 1,021: Line 1,073:
You will often see this property referred to as "armor (float)". The formula for determining location health appears to be simple:
You will often see this property referred to as "armor (float)". The formula for determining location health appears to be simple:


<tt>location health = ("armor" local) * ("armor" global)</tt>
{{hl|c= location health = ("armor" local) * ("armor" global)}}


(if we assume the mysterious vehicle size measurement does not play a role). (See "armor (global)").
(if we assume the mysterious vehicle size measurement does not play a role). (See "armor (global)").


==== depends ====
==== depends ====
<tt>'''string'''</tt>
{{hl|'''string'''}}


Allows one location to apply its damage to another.
Allows one location to apply its damage to another.
Line 1,046: Line 1,098:


==== explosionShielding ====
==== explosionShielding ====
<tt>'''float&ge;0'''</tt>
{{hl|'''float&ge;0'''}}


Modifies how global vehicle health is affected by 'splash' damage (indirectHit).
Modifies how global vehicle health is affected by 'splash' damage (indirectHit).
Line 1,057: Line 1,109:


==== material ====
==== material ====
<tt>'''int''', [deprecated]</tt>
{{hl|'''int''', [deprecated]}}


Darkens material based on damage state. Deprecated--all Arma 3 configs disable it by setting it to -1. If you want to read about how it works, follow this link: [http://fab.ofp.free.fr/Tutorials/Damaged_Tank.htm].
Darkens material based on damage state. Deprecated--all Arma 3 configs disable it by setting it to -1. If you want to read about how it works, follow this link: {{Link|http://fab.ofp.free.fr/Tutorials/Damaged_Tank.htm|link}}.


==== minimalHit ====
==== minimalHit ====
<tt>'''float'''</tt>
{{hl|'''float'''}}


Protects the location from damage.
Protects the location from damage.
Line 1,068: Line 1,120:
Damage received below this value is ignored. A value of 0 means the location acts 'normally' and even the slightest damage will reduce its health. (See "armor (local)", "minTotalDamageThreshold"). If negative value is used, then damage that is applied reduced by minimalHit value.  
Damage received below this value is ignored. A value of 0 means the location acts 'normally' and even the slightest damage will reduce its health. (See "armor (local)", "minTotalDamageThreshold"). If negative value is used, then damage that is applied reduced by minimalHit value.  


Example: armor = -100;minimalHit = -0.5;  
Example: armor = -100;minimalHit = -0.5;
* Case A: If projectile with damage 50 or lower will hit the hitpoint, then no damage will be applied (same as with positive minimalHit)
* Case A: If projectile with damage 50 or lower will hit the hitpoint, then no damage will be applied (same as with positive minimalHit)
* Case B: If projectile with damage 51 will hit the hitpoint, then only 1 damage point will be applied. In contrast, if minimalHit would be positive number, then hitpoint would be reduced by 51 points.
* Case B: If projectile with damage 51 will hit the hitpoint, then only 1 damage point will be applied. In contrast, if minimalHit would be positive number, then hitpoint would be reduced by 51 points.
Line 1,074: Line 1,126:


==== name ====
==== name ====
<tt>'''string'''</tt>
{{hl|'''string'''}}


The value is a named selection containing vertices in the P3D's HitPoints LOD. This way, the game knows what vertex/vertices in the model go with what hit location. Additionally, the set name should be the same as a CfgSkeletons bone (so the game also knows which verts move with which vehicle part). (See also [[#visual]]).
The value is a named selection containing vertices in the P3D's HitPoints LOD. This way, the game knows what vertex/vertices in the model go with what hit location. Additionally, the set name should be the same as a CfgSkeletons bone (so the game also knows which verts move with which vehicle part). (See also [[#visual]]).


==== passThrough ====
==== passThrough ====
<tt>'''1&ge;float&ge;0'''</tt>
{{hl|'''1&ge;float&ge;0'''}}


Proportion of damage to this location that is passed on to damage global vehicle hit points. 0 = the location can be destroyed without affecting overall vehicle health (unless it is a [[#class HitPoints names|special hit location with hardcoded properties]]) . This ''cannot'' be used to make a location cause extra global damage (since values over 1 are treated as = 1). (For that feature, see [[#depends]]).
Proportion of damage to this location that is passed on to damage global vehicle hit points. 0 = the location can be destroyed without affecting overall vehicle health (unless it is a [[#class HitPoints names|special hit location with hardcoded properties]]) . This ''cannot'' be used to make a location cause extra global damage (since values over 1 are treated as = 1). (For that feature, see [[#depends]]).


==== radius ====
==== radius ====
<tt>'''float&ge;0'''</tt>
{{hl|'''float&ge;0'''}}


Defines the size of the HitPoint vertices in this location of the vehicle's P3D model. The radius creates a "sphere" of effect around each vertex. When fire geometry within this sphere is hit, the location takes damage^.
Defines the size of the HitPoint vertices in this location of the vehicle's P3D model. The radius creates a "sphere" of effect around each vertex. When fire geometry within this sphere is hit, the location takes damage^.
Line 1,093: Line 1,145:


==== visual ====
==== visual ====
<tt>'''string'''</tt>
{{hl|'''string'''}}


The name should match a "section" (from CfgModels). If the hit location is not associated with any section, it should be empty (''visual = "";''). Assigning a section to a hit location is optional. It is used by game to swap textures based on damage state (via the [[#class Damage|Damage class]]). (See also: [[#name]], [[#class Damage]]).
The name should match a "section" (from CfgModels). If the hit location is not associated with any section, it should be empty (''visual = "";''). Assigning a section to a hit location is optional. It is used by game to swap textures based on damage state (via the [[#class Damage|Damage class]]). (See also: [[#name]], [[#class Damage]]).
Line 1,142: Line 1,194:


==== boneName ====
==== boneName ====
<tt>'''string''', (PhysX)</tt>
{{hl|'''string''', (PhysX)}}


The name of the bone used for wheel & suspension animations in the model's P3D/model.cfg file.
The name of the bone used for wheel & suspension animations in the model's P3D/model.cfg file.
Line 1,149: Line 1,201:


==== boundary ====
==== boundary ====
<tt>'''string''', (PhysX)</tt>
{{hl|'''string''', (PhysX)}}


Refers to a vertex in the model's P3D file used to determine wheel radius. The vertex is usually place on the ground plane in the P3D file.
Refers to a vertex in the model's P3D file used to determine wheel radius. The vertex is usually place on the ground plane in the P3D file.
Line 1,156: Line 1,208:


==== center ====
==== center ====
<tt>'''string''', (PhysX)</tt>
{{hl|'''string''', (PhysX)}}


The axis of wheel's rotation in the model's P3D/model.cfg file.
The axis of wheel's rotation in the model's P3D/model.cfg file.
Line 1,165: Line 1,217:


==== damping ====
==== damping ====
<tt>'''float>0''', (PhysX)</tt>
{{hl|'''float>0''', (PhysX)}}


Shock-absorber strength, it diminishes vehicle bounciness defined by the spring__ properties.
Shock-absorber strength, it diminishes vehicle bounciness defined by the spring__ properties.
Line 1,171: Line 1,223:
Presumably this property works with the other 3 spring properties to control vehicle bounciness ([[#springMass]], [[#springStrength]], [[#springDamperRate]]). (Not to be confused with the other "damping__" properties, which appear to be torque or rotation coefficients).
Presumably this property works with the other 3 spring properties to control vehicle bounciness ([[#springMass]], [[#springStrength]], [[#springDamperRate]]). (Not to be confused with the other "damping__" properties, which appear to be torque or rotation coefficients).


[https://manuals.bisimulations.com/vbs2/2-00/devref/Content/Adding_Models/How_to/AMHT_Physx.htm A], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/D_cpp/cpp_damping.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____104 B]
{{Link|https://manuals.bisimulations.com/vbs2/2-00/devref/Content/Adding_Models/How_to/AMHT_Physx.htm|A}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/D_cpp/cpp_damping.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____104|B}}


==== dampingRate ====
==== dampingRate ====
<tt>'''float>0''', (PhysX)</tt>
{{hl|'''float>0''', (PhysX)}}


Spinning friction of the Wheel (the rate at which it slows down).
Spinning friction of the Wheel (the rate at which it slows down).
Line 1,180: Line 1,232:
Higher equals more friction/harder to move. All the damping__ properties appear to be coefficients affecting the friction of the Wheel against the ground. (Presumably different ground materials influence final friction). BI recommends values between 0.25-2 (for CarX anyway)
Higher equals more friction/harder to move. All the damping__ properties appear to be coefficients affecting the friction of the Wheel against the ground. (Presumably different ground materials influence final friction). BI recommends values between 0.25-2 (for CarX anyway)


[https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata A], [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]
{{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata|A}}, [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]


==== dampingRateDamaged ====
==== dampingRateDamaged ====
<tt>'''float>0''', (PhysX)</tt>
{{hl|'''float>0''', (PhysX)}}


Spinning friction of the Wheel (the rate at which it slows down) when it is damaged.
Spinning friction of the Wheel (the rate at which it slows down) when it is damaged.
Line 1,189: Line 1,241:
Higher equals more friction/harder to move; this value should be higher than dampingRate but less than dampingRateDestroyed. All the damping__ properties appear to be coefficients affecting the friction of the Wheel against the ground. (Presumably different ground materials influence final friction). (see "dampingRate", "dampingRateDestroyed").
Higher equals more friction/harder to move; this value should be higher than dampingRate but less than dampingRateDestroyed. All the damping__ properties appear to be coefficients affecting the friction of the Wheel against the ground. (Presumably different ground materials influence final friction). (see "dampingRate", "dampingRateDestroyed").


[https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata A], [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]
{{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata|A}}, [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]


==== dampingRateDestroyed ====
==== dampingRateDestroyed ====
<tt>'''float>0''', (PhysX)</tt>
{{hl|'''float>0''', (PhysX)}}


Spinning friction of the Wheel (the rate at which it slows down) when it has been destroyed.
Spinning friction of the Wheel (the rate at which it slows down) when it has been destroyed.
Line 1,198: Line 1,250:
Higher equals more friction/harder to move; this value should be higher than dampingRateDamaged. All the damping__ properties appear to be coefficients affecting the friction of the Wheel against the ground. (Presumably different ground materials influence final friction). (see "dampingRate", "dampingRateDamaged").
Higher equals more friction/harder to move; this value should be higher than dampingRateDamaged. All the damping__ properties appear to be coefficients affecting the friction of the Wheel against the ground. (Presumably different ground materials influence final friction). (see "dampingRate", "dampingRateDamaged").


[https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata A], [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]
{{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata|A}}, [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]


==== dampingRateInAir ====
==== dampingRateInAir ====
<tt>'''float>0''', (PhysX)</tt>
{{hl|'''float>0''', (PhysX)}}


Related to the mass of the Wheel, this property influences spin-slippage and acceleration.
Related to the mass of the Wheel, this property influences spin-slippage and acceleration.
Line 1,210: Line 1,262:


==== frictionVsSlipGraph[] ====
==== frictionVsSlipGraph[] ====
<tt>'''float array''', (PhysX)</tt>
{{hl|'''float array''', (PhysX)}}


This array helps define Wheel (tire) traction when turning.
This array helps define Wheel (tire) traction when turning.
Line 1,218: Line 1,270:
[[File:PhysX-slip-graph.JPG|300px]]
[[File:PhysX-slip-graph.JPG|300px]]


[[Arma_3_Cars_Config_Guidelines#Tire_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicletiredata B]
[[Arma_3_Cars_Config_Guidelines#Tire_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicletiredata|B}}


==== latStiffX/Y ====
==== latStiffX/Y ====
<tt>'''int>0''', stiffness per unit of lateral slip in radians, (PhysX)</tt>
{{hl|'''int>0''', stiffness per unit of lateral slip in radians, (PhysX)}}


These two properties help define Wheel traction when turning.  
These two properties help define Wheel traction when turning.  
Line 1,229: Line 1,281:
[[File:PhysX-stiffness-graph.JPG|300px]]
[[File:PhysX-stiffness-graph.JPG|300px]]


[[Arma_3_Cars_Config_Guidelines#Tire_parameters|A]], {{ExternalLink|link= http://forums.bistudio.com/showthread.php?149027-Primer-for-new-vehicle-simulation&p=2493741&viewfull=1#post2493741|text= B}}, [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicletiredata C]
[[Arma 3: Cars Config Guidelines#Tire parameters|A]], {{Link|link= http://forums.bistudio.com/showthread.php?149027-Primer-for-new-vehicle-simulation&p=2493741&viewfull=1#post2493741|text= B}}, {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicletiredata|C}}


==== longitudinalStiffnessPerUnitGravity ====
==== longitudinalStiffnessPerUnitGravity ====
<tt>'''int>0''', stiffness per unit of longitudinal slip in radians, (PhysX)</tt>
{{hl|'''int>0''', stiffness per unit of longitudinal slip in radians, (PhysX)}}


Influences braking & acceleration performance.
Influences braking & acceleration performance.
Line 1,238: Line 1,290:
Tire longitudinal (front-back) stiffness. Higher roughly = more responsive braking & acceleration.
Tire longitudinal (front-back) stiffness. Higher roughly = more responsive braking & acceleration.


[[Arma_3_Cars_Config_Guidelines#Tire_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicletiredata B]
[[Arma_3_Cars_Config_Guidelines#Tire_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehicletiredata|B}}


==== mass ====
==== mass ====
<tt>'''int>0''', kg, (PhysX)</tt>
{{hl|'''int>0''', kg, (PhysX)}}


Weight of this Wheel in kilograms.
Weight of this Wheel in kilograms.
Line 1,249: Line 1,301:
See also: [[#weight]]
See also: [[#weight]]


[https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata A], [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]
{{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata|A}}, [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]


==== maxBrakeTorque ====
==== maxBrakeTorque ====
<tt>'''int>0''', Newton-meters?, (PhysX)</tt>
{{hl|'''int>0''', Newton-meters?, (PhysX)}}


Wheel braking power.
Wheel braking power.
Line 1,258: Line 1,310:
This is the maximum braking power. Appears to be roughly equal to peakTorque * 2 in some BI configs.
This is the maximum braking power. Appears to be roughly equal to peakTorque * 2 in some BI configs.


[https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata A], [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]
{{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclewheeldata|A}}, [[Arma_3_Cars_Config_Guidelines#Wheel_PX_parameters|B]]


==== maxDroop ====
==== maxDroop ====
<tt>'''float>0''', meters, (PhysX)</tt>
{{hl|'''float>0''', meters, (PhysX)}}


The maximum distance the wheel will hang (by its suspension) down from the body of the vehicle.
The maximum distance the wheel will hang (by its suspension) down from the body of the vehicle.
Line 1,269: Line 1,321:
See also: [[#maxCompression]].
See also: [[#maxCompression]].


[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata B]
[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata|B}}


==== maxCompression ====
==== maxCompression ====
<tt>'''float>0''', meters, (PhysX)</tt>
{{hl|'''float>0''', meters, (PhysX)}}


The maximum distance the wheel can get pushed up into the body of the vehicle when it is being compressed.
The maximum distance the wheel can get pushed up into the body of the vehicle when it is being compressed.
Line 1,278: Line 1,330:
See also: [[#maxDroop]].
See also: [[#maxDroop]].


[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata B]
[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata|B}}


==== MOI ====
==== MOI ====
<tt>'''int>0''', kg square meters, (PhysX)</tt>
{{hl|'''int>0''', kg square meters, (PhysX)}}


Related to the mass of the Wheel, this property influences spin-slippage and acceleration (as well as tank max speed somehow).
Related to the mass of the Wheel, this property influences spin-slippage and acceleration (as well as tank max speed somehow).
Line 1,290: Line 1,342:


==== side ====
==== side ====
<tt>'''string''', "left"/"right", (PhysX)</tt>
{{hl|'''string''', "left"/"right", (PhysX)}}


Which side of the vehicle the wheel is on. ("left" = port side?)<?>
Which side of the vehicle the wheel is on. ("left" = port side?)<?>
Line 1,297: Line 1,349:


==== springDamperRate ====
==== springDamperRate ====
<tt>'''int>0''', (PhysX)</tt>
{{hl|'''int>0''', (PhysX)}}


How fast the suspension loses energy as it bounces.
How fast the suspension loses energy as it bounces.
Line 1,303: Line 1,355:
You can derive the "damping ratio" using this formula:
You can derive the "damping ratio" using this formula:


<tt>damping ratio = springdamperRate / [ 2*SQRT(springStrength * sprungMass) ]</tt>
{{hl|c= damping ratio = springdamperRate / [2*SQRT(springStrength * sprungMass) ]}}


Use it to determine whether a spring is over-damped (>1), just-damped (1), or under-damped (<1); BI says a typical family car is slightly over-damped with a damping ratio of just over 1.0.
Use it to determine whether a spring is over-damped (>1), just-damped (1), or under-damped (<1); BI says a typical family car is slightly over-damped with a damping ratio of just over 1.0.
Line 1,309: Line 1,361:
See also: [[#springStrength]], [[#sprungMass]].
See also: [[#springStrength]], [[#sprungMass]].


[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata B]
[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata|B}}


==== springStrength ====
==== springStrength ====
<tt>'''int>0''', Newtons/meter, (PhysX)</tt>
{{hl|'''int>0''', Newtons/meter, (PhysX)}}


Strength of the suspension spring.
Strength of the suspension spring.
Line 1,318: Line 1,370:
You can derive the "natural frequency" (bounces per second) of the spring using this formula:
You can derive the "natural frequency" (bounces per second) of the spring using this formula:


<tt>natural frequency = SQRT(springStrength / sprungMass)</tt>
{{hl|c= natural frequency = SQRT(springStrength / sprungMass)}}


BI says a typical family car has a natural frequency of 5-10.
BI says a typical family car has a natural frequency of 5-10.


[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata B]
[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata|B}}


==== sprungMass ====
==== sprungMass ====
<tt>'''int>0''', kg, (PhysX)</tt>
{{hl|'''int>0''', kg, (PhysX)}}


Mass supported by the suspension spring.
Mass supported by the suspension spring.
Line 1,331: Line 1,383:
Total vehicle mass is distributed across all the wheels/springs. Note that if the vehicle's center of mass is not at its midpoint, some springs should carry more mass than others.
Total vehicle mass is distributed across all the wheels/springs. Note that if the vehicle's center of mass is not at its midpoint, some springs should carry more mass than others.


[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], [https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata B]
[[Arma_3_Cars_Config_Guidelines#Suspension_parameters|A]], {{Link|https://developer.nvidia.com/sites/default/files/akamai/physx/Docs/Vehicles.html#pxvehiclesuspensiondata|B}}


==== steering ====
==== steering ====
<tt>'''bool''', (PhysX)</tt>
{{hl|'''bool''', (PhysX)}}


Whether or not the Wheel turns when driver turns the steering-wheel. True = turns, false = does not turn.
Whether or not the Wheel turns when driver turns the steering-wheel. True = turns, false = does not turn.


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_steering.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____475 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/S_cpp/cpp_steering.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____475|A}}


==== weight ====
==== weight ====
<tt>'''int>0''', kg, (PhysX), [obsolete?]</tt>
{{hl|'''int>0''', kg, (PhysX), [obsolete?]}}


Weight of this Wheel in kilograms.
Weight of this Wheel in kilograms.
Line 1,349: Line 1,401:
See also: [[#mass]].
See also: [[#mass]].


[https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/W_cpp/cpp_wheelWeight.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____557 A], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/W_cpp/cpp_weight.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____552 B]]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/W_cpp/cpp_wheelWeight.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____557|A}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Config_Manual/CfgVehicles/W_cpp/cpp_weight.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____552|B}}]


</div>
</div>
Line 1,356: Line 1,408:
A game model is defined by its P3D file and an associated model.cfg config file that describes the model's components. It consists of two classes: CfgSkeletons & CfgModels.
A game model is defined by its P3D file and an associated model.cfg config file that describes the model's components. It consists of two classes: CfgSkeletons & CfgModels.


[ [[Model_Config|A]], [[ArmA:_Howto_Model_Config|B]], [https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Adding_Models/AM_Model_cfg.htm C], [https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Config_Manual/Model_cfg/Model_cfg.htm D] ]
[ [[Model_Config|A]], [[ArmA:_Howto_Model_Config|B]], {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Adding_Models/AM_Model_cfg.htm|C}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Config_Manual/Model_cfg/Model_cfg.htm|D}} ]


=== CfgSkeletons ===
=== CfgSkeletons ===
Line 1,362: Line 1,414:
=== CfgModels ===
=== CfgModels ===
==== class Animations ====
==== class Animations ====
[https://resources.bisimulations.com/w/index.php?title=Model_Config#Animation_Properties A], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Content/Animations/AM_Animation_Parameters.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CAnimations%7C_____3 B]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Model_Config#Animation_Properties|A}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Content/Animations/AM_Animation_Parameters.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CAnimations%7C_____3|B}}
===== type =====
===== type =====
<tt>'''string'''</tt>
{{hl|'''string'''}}


The type of animation that will occur. Choose from one of the preset animation types (rotation, translation, hide, etc.)
The type of animation that will occur. Choose from one of the preset animation types (rotation, translation, hide, etc.)


[https://resources.bisimulations.com/w/index.php?title=Model_Config#Animation_types A], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Content/Animations/AM_Animation_Types.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CAnimations%7C_____1 B]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Model_Config#Animation_types|A}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Content/Animations/AM_Animation_Types.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CAnimations%7C_____1|B}}


===== source =====
===== source =====
<tt>'''string'''</tt>
{{hl|'''string'''}}


What property the animation is dependent on. This may be one of the many preset sources tracked by the game (damage, speed, etc.). Or it may be a custom source defined in config.cpp>CfgVehicles >AnimationSources. A custom source can be something as simple as another bone with its own standard preset source, or as complex as a user script. However, the most common use of a 'custom' source in CfgVehicles is for the purpose of hiding a damaged hit location (e.g. vehicle glass) [https://resources.bisimulations.com/w/index.php?title=How_to_create_destroyable_wheels#Animation_sources link].
What property the animation is dependent on. This may be one of the many preset sources tracked by the game (damage, speed, etc.). Or it may be a custom source defined in config.cpp>CfgVehicles >AnimationSources. A custom source can be something as simple as another bone with its own standard preset source, or as complex as a user script. However, the most common use of a 'custom' source in CfgVehicles is for the purpose of hiding a damaged hit location (e.g. vehicle glass) {{Link|https://resources.bisimulations.com/w/index.php?title{{=}}How_to_create_destroyable_wheels#Animation_sources|link}}.


[https://resources.bisimulations.com/w/index.php?title=Model_Config#Animation_sources A], [https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Adding_Content/Animations/AM_Custom_Controllers.htm B]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Model_Config#Animation_sources|A}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/Content/Adding_Content/Animations/AM_Custom_Controllers.htm|B}}


===== selection =====
===== selection =====
<tt>'''string'''</tt>
{{hl|'''string'''}}


The thing which is animated. This must be a '''bone''' defined in CfgSkeletons (along with corresponding geometry in an identically Named Selection in the P3D).
The thing which is animated. This must be a '''bone''' defined in CfgSkeletons (along with corresponding geometry in an identically Named Selection in the P3D).


[https://manuals.bisimulations.com/vbs3/3-6/devref/Content/Adding_Content/AM_Model_cfg.htm A]
{{Link|https://manuals.bisimulations.com/vbs3/3-6/devref/Content/Adding_Content/AM_Model_cfg.htm|A}}


===== axis =====
===== axis =====
<tt>'''string'''</tt>
{{hl|'''string'''}}


The Named Selection of the axis for the animation. An axis is defined by two vertices within a Named Selection in the P3D file's "Memory" LOD. (Think of this as defining the axis of a bone that's been defined in CfgSkeletons. Incidentally, the first vertex placed when the axis is created indicates the +ve 'direction' of the axis for translation animation <? See link B>).
The Named Selection of the axis for the animation. An axis is defined by two vertices within a Named Selection in the P3D file's "Memory" LOD. (Think of this as defining the axis of a bone that's been defined in CfgSkeletons. Incidentally, the first vertex placed when the axis is created indicates the +ve 'direction' of the axis for translation animation <? See link B>).
Line 1,391: Line 1,443:
Remember, Arma's modeler (aka Oxygen) is not as advanced as standard 3D modeling software. In the later, you would define a hierarchy of bones visually, and each bone automatically gets an axis created along with it. In Arma you define ''only'' the bone hierarchy in CfgSkeletons; the bone axes and positions must be defined in Oxygen using vertices in the "Memory" LOD.
Remember, Arma's modeler (aka Oxygen) is not as advanced as standard 3D modeling software. In the later, you would define a hierarchy of bones visually, and each bone automatically gets an axis created along with it. In Arma you define ''only'' the bone hierarchy in CfgSkeletons; the bone axes and positions must be defined in Oxygen using vertices in the "Memory" LOD.


[https://resources.bisimulations.com/w/index.php?title=How_to_animate_a_model#Example_4 A], [https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Content/Animations/AM_Animation_Parameters.htm B]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}How_to_animate_a_model#Example_4|A}}, {{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Content/Animations/AM_Animation_Parameters.htm|B}}


===== hideValue =====
===== hideValue =====
[https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Content/Animations/AM_Animation_Parameters.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CAnimations%7C_____3 A]
{{Link|https://manuals.bisimulations.com/vbs3/3-0/devref/#Adding_Content/Animations/AM_Animation_Parameters.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CAnimations%7C_____3|A}}


===== unHideValue =====
===== unHideValue =====
Line 1,400: Line 1,452:
</div>
</div>


=ARMOR/MATERIAL Configs=
= ARMOR/MATERIAL Configs =
<div class="mw-collapsible">
<div class="mw-collapsible">
== ''BISURF properties'' ==
== ''BISURF properties'' ==
BISURF material files are assigned to fire geometry in a vehicle's P3D file. They define the physical properties of whatever geometry they've been assigned to. Critical among these properties is armor value as defined by bulletPenetrability (or bulletPenetrabilityWithThickness & Thickness).
BISURF material files are assigned to fire geometry in a vehicle's P3D file. They define the physical properties of whatever geometry they've been assigned to. Critical among these properties is armor value as defined by bulletPenetrability (or bulletPenetrabilityWithThickness & Thickness).


[https://resources.bisimulations.com/w/index.php?title=Damage_Modeling:_Objects#Surface_definitions A]
{{Link|https://resources.bisimulations.com/w/index.php?title{{=}}Damage_Modeling:_Objects#Surface_definitions|A}}


=== bulletPenetrability ===
=== bulletPenetrability ===
<tt>'''int>0'''</tt>
{{hl|'''int>0'''}}


Material strength in terms of how well it resists penetration: lower is stronger.
Material strength in terms of how well it resists penetration: lower is stronger.
Line 1,415: Line 1,467:


=== bulletPenetrabilityWithThickness ===
=== bulletPenetrabilityWithThickness ===
<tt>'''int>0'''</tt>
{{hl|'''int>0'''}}


If the material has a "thickness" property specified, put its bulletPenetrability value here instead. (See "bulletPenetrability").
If the material has a "thickness" property specified, put its bulletPenetrability value here instead. (See "bulletPenetrability").


=== deflection ===
=== deflection ===
<tt>'''??'''</tt>
{{hl|'''??'''}}


<?> Speculation: refines the ricochet system by letting materials affect the final deflection probability. (See [[#deflecting|CfgAmmo "deflecting"]]).
<?> Speculation: refines the ricochet system by letting materials affect the final deflection probability. (See [[#deflecting|CfgAmmo "deflecting"]]).


{{ExternalLink|link= http://forums.bistudio.com/showthread.php?149636-Development-Branch-Changelog&p=2812544&viewfull=1#post2812544|text= A}}
{{Link|link= http://forums.bistudio.com/showthread.php?149636-Development-Branch-Changelog&p=2812544&viewfull=1#post2812544|text= A}}
(new undocumented property as of 11-6-2014 devbranch)
(new undocumented property as of 11-6-2014 devbranch)


Line 1,449: Line 1,501:


=== Thickness ===
=== Thickness ===
<tt>'''int>0'''</tt>
{{hl|'''int>0'''}}


Sets a ''thickness ceiling'' to the geometry (the purpose being to make it easier to model small or thin pieces of fire geometry).
Sets a ''thickness ceiling'' to the geometry (the purpose being to make it easier to model small or thin pieces of fire geometry).
Line 1,456: Line 1,508:
</div>
</div>


=EFFECTS Configs=
= EFFECTS Configs =
<div class="mw-collapsible">
<div class="mw-collapsible">
== CfgCloudlets ==
== CfgCloudlets ==
CfgCloudlets is BI's odd name for a particle definition class. By default, it is found exclusively in <tt>a3\data_f\ParticleEffects\config.cpp</tt>.
CfgCloudlets is BI's odd name for a particle definition class. By default, it is found exclusively in {{hl|a3\data_f\ParticleEffects\config.cpp}}.


[[Arma_3_Particle_Effects|A]], [[Arma_3_Particle_Effects:_Config_Parameters|B]], [https://manuals.bisimulations.com/vbs3/3-4/devref/#Config_Manual/CfgVehicles/P_cpp/cpp_Particle_Effects.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____374 C]
[[Arma_3_Particle_Effects|A]], [[Arma_3_Particle_Effects:_Config_Parameters|B]], {{Link|https://manuals.bisimulations.com/vbs3/3-4/devref/#Config_Manual/CfgVehicles/P_cpp/cpp_Particle_Effects.htm%3FTocPath%3D4%2520Configuration%2520Manual%7CCfgVehicles%7C_____374|C}}


</div>
</div>
{{GameCategory|arma1|Addon Configuration}}
{{GameCategory|arma3|Vehicle Configuration}}


[[Category: Reference Lists]]
[[Category: Reference Lists]]

Latest revision as of 10:38, 6 May 2024

Arma 3 documentation is scattered to the 4 winds, and this applies to config file properties as much as anything. This is an attempt to make a single master list of properties with links to [sources]. Yes, there are other partial lists but they have limitations: short/confusing "official" descriptions, obsolete information, and no links to further sources. So rather than wreak havoc with those lists, this article is an attempt to make an easier-to-digest resource.

(P.S. This list was initially compiled in Fall of 2014, and should be up-to-date as of that point.)

Existing Config Pages

Here is a list of existing config pages on the Biki. They tend to contain semi-official descriptions of properties (though some entries have detailed descriptions). Unfortunately, the 'official' descriptions tend to be short, incomplete, and/or confusing--particularly for new modders:

This page is like a "Config Properties for Dummies" or a "Config Properties Explained". If you want the official description, go to the linked pages. If you want an explanation in plain English, use this page.

(Once this page is complete, a sensible route may be to integrate its information into the existing pages to reduce redundancy).

How Do Configs Work?

All configs get merged into one big config in memory when the game starts. Where duplicates exist, which config takes precedence depends on load order - the last config loaded "wins" by overwriting any previous value(s). Load order is determined by mod folder order, PBO name, but most importantly/properly by the "requiredAddons" section of the CfgPatches class.

CfgPatches & requiredAddons

The requiredAddons array in CfgPatches is how you control the load order of configs. "requiredAddons" means "load these other config files before you load this one." (And "this one" means the name of the class containing the requiredAddons statement). A

How Many Config Files?

One consequence of the above discussion is the fact that you can technically spread your configs across tons of little files or ball them up into one big one or anything in between--with some exceptions^ (which are discussed further below). Barring those exceptions, there is no iron-clad rule that requires certain classes (e.g. CfgAmmo, CfgVehicles, etc.) to be separated or located within particular filenames. It is essentially a matter of clarity, ease of editing, and consistency to help others understand your work.

Known exceptions:

  1. #include'd .h/.hpp files are usually in the same folder or a subfolder of the #include'ing config, but apparently they can be anywhere as long as you #include "pathtofile".
  2. CfgSkeleton & CfgModels classes should be in either: a "model.cfg" file or a "[same-name-as-P3D].cfg" file. Unlike other config classes, these ones should not be thrown into random files.
  3. The model.cfg file must be in the same folder as--or in a parent folder of--the object (P3D) it configures.

Config Properties ProTips

A few tips and things to watch out for in config properties:

  • "epe" in a property name refers to "external physics engine", i.e. NVIDIA's PhysX API.
  • "Gunner" is often used in a propety name as a catch-all term that refers to whichever crewmember is in control of a turret/view (e.g. the commander is the "gunner" in the commander's turret).
  • A few properties have somewhat misleading names, in that the common English meaning of a word is not what the property actually refers to (e.g. "caliber", "explosive").
  • Inconsistent units: it is not uncommon for related properties to use different units for no good reason (e.g. radians per second vs. revolutions per minute). At least almost everything is in metric.

WEAPON Configs

For understandable reasons, weapons data is scattered across several different config classes. Defining a weapon properly requires working with all these classes.

CfgAmmo

Most projectile-specific properties are located here. Some relevant properties you might expect to find here however--muzzle velocity for example--are located in the other weapon classes (either CfgMagazines or CfgWeapons).

airFriction

float

How much the projectile slows down as it travels through the air. (A way of expressing aerodynamic drag).

This and initSpeed define a projectile's trajectory in Arma (for unpowered ones like Bullets and Shells. Rockets and Missiles have additional rocket thrust features that influence their flight). As soon as an unpowered projectile is fired, it starts to slow down due to drag. The formula is:

airFriction = deceleration / velocity2

A projectile with a muzzle velocity of 1,640 m/s which slows down with 94 m/s2 has an airFriction of:

-94 m/s2 / (1,640 m/s)2 ≈ -0.000035 1/m

(This property appears to be equivalent to Bird-Livingston's "ballistic K factor" * 1e-7).

^A different formula based on bulletPenetrability & caliber is applied to slow projectiles passing through solid targets (fire geometry).

A, B, "WW2 Ballistics: Armor and Gunnery" (Bird-Livingston, 2001)

For self-propelled rockets and missiles use this one:

-0.002 * f = a / v2 (finding in BI forum)

f - airFriction

a - acceleration

v - velocity

airLock

bool

Whether this ammo type (& AI using it) can lock onto airborne targets.

Provided the related CfgWeapons also has locking capability--"canLock" is true. Unlike irLock & laserLock--which have corresponding CfgVehicles properties that they lock onto, airborne targets are identified in some other way. (see "irLock", "laserLock").

A, B, C.

caliber

float≥0

Ability of the projectile to penetrate through target fire geometry (buildings, vehicle armor and components, people, etc.).

Penetration power is dependent on caliber and the projectile's speed--higher = more penetration. The formula for mm of penetration is:

(projectile speed / 1000)x(caliber)x(bulletPenetrability of the target BISURF)

So--as you would expect--penetration decreases as the projectile slows down during its flight. Restating the formula:

caliber = (mm penetration @speedX)*1000 / (bulletPenetrability * speedX)

(A value of 1 is standardized as 15mm of RHA penetration at 1000m/s.) Note! Adding caliber values to missile or rockets is bugged and results in missiles flying through targets.

A

cost

int, ~$, (AI only)

A "monetary" value for each weapon.

This helps AI units decide on whether a weapon is worth using. Presumably AI does not waste high-cost weapons on low-threat or otherwise inappropriate targets. Seems to be vaguely calibrated in units of 1/3-1/4 $USD.

A, B (contradictory)

deflecting

90≥int≥0, angle in degrees

Determines how much a projectile ricochets.

When the ammo impacts something at this angle or less, there is a chance it will ricochet--bouncing off the target and doing less than full kinetic damage. Impact angles greater than this will not ricochet. If deflecting = 0, the projectile will never ricochet, while a value of 90 gives all impacts a chance to ricochet. Ricochets occur from impacts to targets or the ground.

Note: all projectiles get a slight random velocity change after completely penetrating a piece of fire geometry. This is a different, hardcoded behavior--not "deflecting".

A

explosive

1≥float≥0

The proportion of the projectile's damage that is explosive (rather than kinetic).

Unlike kinetic damage, explosive damage does not fall off as the projectile gradually loses speed. A value of 1 means the damage is fully explosive, while 0 means fully kinetic. (This property has nothing to do with the colloquial sense of an explosion as 'splash' damage--that property is covered by "indirectHit"). NOTE! Values >=0.7 nullify the penetration capability of the projectile, so keep values below this if you want the projectile to be able to penetrate armor at all. (See "hit", "typicalSpeed").

hit

float>0

The damage done by a direct hit from this projectile.

Damage is applied to global hitpoints ("armor" int) as well as locational ones ("armor" float). (The actual formula for applying damage is somewhat complex, so there is not necessarily a one-to-one application of hit value against hitpoints). A

indirectHit

float≥0

'Splash' damage done by a near miss from this projectile.

Projectiles with indirectHit values do damage within a sphere around their impact point (whether they hit the ground or an object). The size of the sphere is determined by "indirectHitRange" and targets within the sphere receive damage.

A

indirectHitRange

float≥0, meters

Describes the range of a projectile's 'splash' damage.

This is the base radius within which indirectHit damage is applied. indirectHit damage is actually applied out to 4x this radius, with linear falloff starting at indirectHit and ending at 0. (See "indirectHit"). Note: for standard HE weapons (e.g. tank HE-frag, artillery HE, grenades), this value seems to correspond roughly to the weapon's officially rated "lethal radius" in m.

A

initTime

float≥0, seconds, (Missiles only)

How long it takes the missile's rocket motor to start producing thrust after launch.

Missiles are launched at initSpeed. After initTime, the missile starts accelerating based on its thrust parameters. (see "thrust", "thrustTime").

irLock

bool

Whether this ammo type (& AI using it) can lock onto radar targets (CfgVehicles.irTarget = true).

irTarget vehicles are ones that are config'ed to show up on the game's simple "radar" overlay--i.e. tanks, trucks, etc., not humans. (You'd think "ir" would refer to infrared, but it actually refers to radar). (Provided the related CfgWeapons also has locking capability--"canLock" is true).

A.

laserLock

bool

Whether this ammo type (& AI using it) can lock onto "laser targets", i.e. a laser designator dot (CfgVehicles.laserTarget = true). (Provided the related CfgWeapons also has locking capability--"canLock" is true).

A, B.

manualControl

bool, (Missiles only)

A type of missile guidance.

True means the missile has SACLOS guidance (i.e. it continuously adjusts to fly toward wherever the player's crosshairs point).

A, B

manuevrability

float>0, (Missiles only)

Affects missile turning ability.

Higher is more manueverable. It's claimed very high values (>30) may cause missiles to over-manuever and spin out of control.

A, B

maxControlRange

int>0, meters, (Missiles only)

Maximum range for guided missile flight--whatever the guidance type--after which the missile spins out of control. (See "timeToLive").

A, B

maxSpeed

float>0, m/s, (Missiles only)

Missile speed limit.

This value imposes an upper limit to the speed at which a missile can travel, regardless of its thrust properties. (see "thrust", "thrustTime").

"muzzle velocity"

Surprise! Muzzle velocity for a projectile is not found in CfgAmmo at all! Instead it is defined in the relevant CfgMagazines class and the property is called "initSpeed".

nvgOnly

bool

Whether tracer is visible using NVG optics only.

If false, the projectile's tracer is normal and can be seen with unaided optics as well as when using NVG (infrared or thermal) optics. If true, the tracer is invisible unless the viewer is using NVG optics.

simulationStep

float>0, seconds(?)

How often the game updates the ammo's trajectory in flight.

The default appears to be between 0.05 (visible in "Splendid Config Viewer" though it is not clear where this is defined?). If you assign a lower value, the game tracks the projectile more often, giving a finer grained precision to its trajectory. This is presumably useful for things like fast moving projectiles, fast maneuvering guided missiles, projectiles with a high airFriction value, etc. A higher value tracks the projectile with less detail. The results can be a bit unpredictable (e.g. values less than 0.001 can cause bizarre trajectories), so experimentation with a projectile tracing script is useful if you feel like there may be something wrong with your projectile's trajectory.

Contrary to the information in the VBS documentation linked below, this property can be assigned to a projectile of any simulation type, not just missiles.

Note: advanced modders should be aware that low simulationStep values appear to result in excessive firings of eventhandlers like "hitPart"--e.g. multiple events fired when a projectile hits a single surface. Try turning up simulationStep in cases like this.

A

thrust

float>0

Engine power of missiles and rockets. (See "thrustTime").

A, B

thrustTime

float>0, seconds, (Missiles only)

How many seconds the rocket motor will produces thrust before dying out.

(Keep in mind that regardless of these thrust properties, "maxSpeed" puts a ceiling on missile speed).

A, B, C

timeToLive

float>0, seconds

Maximum lifetime for the projectile until it is culled by the game engine.

After a projectile is fired and this time has elapsed, the projectile is deleted from the game for optimization purposes; most projectiles simply disappear at this point, although certain types of explosive projectiles explode instead of vanishing.

A

typicalspeed

int>0, m/s

Influences how much damage the projectile does when it hits.

Speed at which the projectile produces full "hit" damage; anything lower produces proportionately less damage (exception: any "explosive" damage component is always full value regardless of the impact speed). Note that this property does nothing to influence the projectile velocity, it used only in the damage calculation. (See "initSpeed", "explosive").

visibleFire

float, meters?, "(AI only)

Distance from projectile that AI units will notice it. (See "visibleFireTime").

Not clear if this refers to the projectile in flight, when fired, at impact, or all three.

A

visibleFireTime

float, seconds, "(AI only)

How long AI units will notice the projectile. (See "visibleFireTime").

Values less than 5 supposedly cause problems because there can be 5 seconds between AI attention tests.

A, B

CfgMagazines

Magazine properties plus some projectile-specific stuff that gets stored here instead of CfgAmmo.

initSpeed

int>0, m/s

Sets the muzzle velocity of ammo fired from this Magazine.

Updated in Q1 2015: InitSpeed in weapons - zero value in weaponType::initSpeed means that magazineType::initSpeed will be used (initSpeed set to positive values in a weapon means a constant speed of the weapon independent on its magazine. Negative values mean a multiplier for initSpeed set in the magazine. Setting it to 0 means that the speed is going to be taken from magazine, this equals to setting initSpeed in the weapon to -1).

(Not to be confused with typicalSpeed, which does not affect projectile speed at all and is instead used for damage calculation only).

CfgWeapons

Gun/launcher-specific properties.

aiDispersionCoefX/Y

float≥1.0, (AI only)

AI unit inaccuracy using this weapon (in X/Y).

These two properties are coefficients multiplied by the inherent weapon "dispersion" value. These are maximum values for inexperienced AI; as AI experience goes up, these values are shifted toward 1.0 (no extra dispersion). Supposedly there are other factors that influence AI inaccuracy besides these dispersion properties. (See "dispersion").

A

autoFire

bool

Whether the weapon will continue to fire if you hold down the trigger.

A

ballisticsComputer

canLock

bool

Whether the weapon can lock on to a target (e.g. when a player hits the TAB key)

Must be true for any of the other lock modes to work (airLock, irLock, laserLock). 0 = never, 1 = in cadet mode only, 2 = always.

A, B

dispersion

float>0

Basic weapon accuracy.

This is the inherent accuracy of the weapon^. It affects all projectiles fired from this weapon independent of other effects like AI skill, etc. It describes the weapon's dispersion in radians (1 milliradian = 1 angular mil = 0.001 dispersion, 1 MOA = 0.000290888 dispersion).

^IRL these are things like straightness of the barrel, consistency of the ammunition powder charge, etc.--dispersion should actually be different per ammunition type, but in Arma it is a weapon property only.

initSpeed

int, m/s

This allows you to override or modify the initSpeed (muzzle velocity) set in CfgMagazines.

New feature added in Q1 2015: zero value in weaponType::initSpeed means that magazineType::initSpeed will be used (initSpeed set to positive values in a weapon means a constant speed of the weapon independent of its magazine. Negative values mean a multiplier for initSpeed set in the magazine. Setting it to 0 means that the speed is going to be taken from magazine, this equals to setting initSpeed in the weapon to -1).

max/mid/minRange

int>0, m/s, (AI only)

Determines the tendency of AI units to use this weapon based on their range to target.

At this range down to the previous __Range, an AI unit will attack with the corresponding __RangeProbab probability. Think of the three pairs of values (__Range, __RangeProbab) as creating a graph of attack probability at different ranges. (See "max/mid/minRangeProbab").

A

max/mid/minRangeProbab

float>0, (AI only)

Determines the tendency of AI units to use this weapon based on their range to target.

At this __Range down to the previous __Range, an AI unit will attack with the corresponding __RangeProbab probability. Think of the three pairs of values (__Range, __RangeProbab) as creating a graph of attack probability at different ranges. (See "max/mid/minRangeProbab").

A

weaponLockSystem

cumulative int

How this weapon triggers a target vehicle's warning system.

What type(s) of lockDetectionSystem is set off in a vehicle targeted by this weapon: 0 = none, 1 = CM_Lock_Visual, 2 = CM_Lock_IR, 4 = CM_Lock_Laser, 8 = CM_Lock_Radar. Presumably canLock must = 1 for this to be relevant.

A.

VEHICLE Configs

Vehicle properties are numerous and are contained both in the CfgVehicles class (usually in its own file), as well as CfgSkeletons & CfgModels (usually combined into a single file called model.cfg). CfgVehicles describes the vehicle's gameplay features, while CfgSkeletons & CfgModels describe its P3D model file.

Keep in mind that just about every major actor belongs to the "Vehicle" class in Arma, from planes to tanks to humans.

CfgVehicles

animationSource___

string, model.cfg Animations class name, (Turret class)

Defines the animating portions of a turret (_Body, _Gun, _Hatch, _Roll).

This property appears to serve as a shortcut to defining an AnimationSources "custom" source. Instead of needing to do that, BI has created a few preset source properties that serve the same effect using a single line (as opposed to a whole class entry in AnimationSources). The name used as a value is one of the "class Animations" source names in the vehicle's model.cfg. e.g.

class YourModel : InheritedFromSomeWhere
{
	class Animations : Animations
	{
		class MainTurret
		{
			type = "rotationY";		// type of movement involved
			source = "mainTurret";	// The controller that provides input above
			selection = "OtocVez";	// The name of the skeleton bone used.
			axis = "OsaVeze";		// name of the axis in the P3D model.
			...

The typical uses are as follows. _Body controls the basic slewing/left-right motion of the turret. _Gun controls weapon elevation/up-down movement. _Hatch controls hatch movement (if any) for a crewmember turning in/out. _Roll presumably controls tilting motion of the turret (if any).

A, B

armor (global)

int>0

Overall hit points/'health' for the vehicle. Once fully depleted by damage, the vehicle blows up killing its occupants.

You will often see this property referred to as "armor (int)". Supposedly object radius somehow modifies this value, although the formulas offered by BI don't make much sense. Note that locational hit-points are derived from this value--determined by each HitPoint class's own "armor" (float) value. So the lower this value, the weaker all the vehicle's corresponding location HitPoints will also be (i.e. the more damage a location takes with each hit).

A, B, C.

armorStructural

int>0

This makes global health resistant to damage, without affecting local health.

The value is used as a divisor to global damage; the higher the value (beyond 1), the less global damage ("armor"/"hit points") occurs whenever the vehicle gets hit. HitPoints class location damage is not affected by this property; the location takes damage from the hit without being affected by this property. Extremely high values practically nullify the (in)famous cumulative "hit points" system of vehicle damage (e.g. plinking a tank to death with a rifle).

A.

brakeIdleSpeed

float>0, meters/second, (PhysX)

Speed below which brakes are automatically applied to slow the vehicle to a stop.

If the value is too low, it will make the vehicle very difficult to bring to a complete stop. If it is too high, the vehicle will brake while you are trying to drive slowly.

A, B

cost

int>0, (AI only)

Tells the AI how valuable this vehicle is to attack relative to others.

From VBS link: "This value reflects how important a unit/vehicle is for enemy AI to kill. When all other considerations are equal. For instance, a soldier is not interested in Air [targets, due to his "threat[]" property], despite it is highly attractive cost values. On the other hand, he is interested in a machinegunner, since a machinegunner (in normal configs) has a relatively higher cost, than other [infantry threat types], including the officer, even though the machinegunner's cost is much lower than an airplane."

(See "threat[]").

A

changeGearMinEffectivity[]

float array, (PhysX)

Tells the transmission when to switch gears. (All transmissions in Arma 3 behave as if automatic).

Note that there is a value for every GearboxRatios value (usu. starting with reverse, then neutral, etc). In BI configs, this array never seems to vary much from the default: 0.95 for everything except neutral which is 0.15 (so it gets switched out of very quickly) and reverse which is 0.5. BI says "if there is [a] better gear and effectivity is below this value then [the game] change[s] gear"--not very clear what this means. However, reading NVIDIA documentation suggests the array values may simply represent the proportion of max engine RPM rather than some abstract "effectivity" value; in that case once the engine revs above(below) the RPM value, the game will shift one gear up(down).

A, B

clutchStrength

float>0, (PhysX)

How 'tight' the clutch is--how quickly gear changes affect vehicle speed.

Low values will mean more 'slippage' and slower acceleration after gear changes, higher values mean less slippage and quicker delivery of power to the wheels after a gear shift. BI recommends starting with a value of 10 (for CarX anyway, TankX config values are typically closer to 100). (See "thrustDelay").

A, B

crewExplosionProtection

float>0

It's controlling how much indirectHit damage crew will take.

reyhard: It is also affecting EPE impulses (crashes) if I remember correctly since those are treated as indirect damage.


[ A ]

crewVulnerable

bool, (AI only)

If true, AI units will shoot at the vehicle to wound exposed crewmembers even if damageResistance is too high for them to otherwise bother attacking. (See "damageResistance").

A

damageResistance

float>0, (AI only)

Tells AI units how resistant this vehicle is to damage (so they can decide whether or not to bother attacking based on the weapons they are carrying). The calculation appears to be based only on the target's global armor and size, along with the weapon's hit value; armor & penetration are not factors. The formula for deriving this value is supposedly:

(minHit^2) * (1/armor) * ([0.27/tgtRadius]^2)

where "miHit" is the "hit" value for the weakest weapon that the AI should find useful against the vehicle. How exactly the value is used by the game is a mystery. Possibly the AI check their weapon with this formula and compare it to the config value. Simplifying, one could say the AI checks it is weapon "hit" value against the minimum useful "hit" value the config has defined; if the AI weapon is >= the minimum value, the AI will consider attacking. If the AI's weapon is weaker, it won't.

A, B,C

destrType

string

Sets the destruction type for the object.

  • “DestructDefault” // Default destruct type, engine auto detects during object loading: vehicles are set to "DestructEngine" and everything else is set to "DestructBuilding"(?)
  • “DestructNo” // No destruction effects, makes object invulnerable to weapons
  • “DestructMan” // Destruct as man (no shape animation)
  • “DestructEngine” // Destruct as vehicle (explosion, shape animation)
  • “DestructWreck” // Destruct as wreck, similar to DestructEngine, but with wreck replacement
  • “DestructBuilding” // Destruct as building, requires destructionEffects class
  • “DestructTree” // Destruct as tree, falls over by rotating about axis defined in model
  • “DestructTent” // Destruct as tent, object collapses on itself (shape animation) (for bushes, tents, poles, etc)
  • “DestructWall” // Destruct as wall, falls over only forward or backward


A, B

discreteDistance[]

int array, meters

These are the available weapon range settings for this Optics/Turret view. (i.e. what you switch through with the PgUp/PgDown key).

discreteDistanceInitIndex

int

This is the array index of the default range setting from discreteDistance[]. (Remember all arrays are "zero-based"--that is, the first entry is #0).

epeImpulseDamageCoef

int≥0, (PhysX)

<?>Undocumented: the name suggests this is a coefficient influencing how much damage the vehicle takes from physics-controlled impacts (i.e. crashing into a wall, another vehicle, etc.). Higher numbers suggest the vehicle takes more damage from such events.

[undocumented]

engineLosses

int≥0, Newton-meters, (PhysX)

A force that helps bleed speed from the vehicle (presumably most noticeable as the vehicle coasts).

engineLosses bleed energy from the vehicle due to inefficiencies in the engine. As such, they are multiplied by the gear ratio (unlike transmissionLosses). (See "transmissionLosses").

A

enginePower

int>0, kilowatts, (PhysX)

Engine power in kW. (hp * 0.745699872 = kW).

A

explosionShielding (global)

float≥0

Modifies how global vehicle health is affected by 'splash' damage (indirectHit).

This works the same way as explosionShielding for HitPoint locations: indirectHit damage received is multiplied by this value.

(This property is 10-24-14 devbranch only currently)

forceHide__

bool

Whether a crewmember has the ability to "turn out" or not. (1 = cannot turn out, 0 = can turn out).

A

extCameraPosition[]

float array, meters

These are the XYZ coordinates of the 3rd person camera view for this vehicle.

The 3 members of the array represent coordinates in meters [X,Y,Z] = (side-to-side, vertical, close/forward-far/back.) The distances are calculated relative to the center of the vehicle.

A

__Fov

float≥0, 1=120 degrees

Field of View / magnification for the Optics class it is found in.

"init__", "min__", "max__" with "initFov" being the default. Smaller values mean a narrower FOV and thus a higher magnification.

A

fuelCapacity

int>0, liters

Vehicle fuel capacity.

(While VBS3 uses 0.1 liter units, Arma 3 appears to use 1 liter units based on config values). Regardless, the fuel consumption model in the game is very simplified so real-world values--while a useful starting point--may need tweaking in order to translate them into good in-game values.

A

gunnerOpticsModel

string

P3D model used when for this turret when crewmember is "turned in". (filename should include path).

A

gunnerOutOpticsModel

string

P3D model used when for this turret when crewmember is "turned out". (filename should include path).

A

gunnerOpticsEffect[]

string

Optical effects overlay (blur, etc.) applied to this turret in "turned in" mode.

gunnerHasFlares

bool

<??>Whether the crewmember at this Turret can launch the vehicle's countermeasures, if such are available (aircraft flares, AFV smoke grenades).

A, (comment in "Samples_F\Test_Tank_01\CfgVehicles.hpp")

hiddenSelections[]

string array

HiddenSelections lets you swap texture & material in-game on specified parts of your vehicle.

The names in the array must correspond to: 1) named selection(s) in the P3D file, 2) identically named entries in the model.cfg file under class CfgModel { sections[] }, e.g.

class CfgModels
{
	class Jeep
	{
		sectionsInherit = ""; // (let's assume there is no inheritance in this example)

		sections[] =
		{
			// names must match named selection sets in the P3D model file
			// you should use the same selection set names across all the visual LOD's in the P3D
			"spareTire",
			"flag"
		};

The purpose of listing certain sections here is to create variety within a single model by allowing the parts to be hidden and/or have alternate textures swapped out for variety. (Arma 3 uses it commonly to generate random texture variation during spawn).

Using hiddenSelections gives you the ability to change the sections' textures and materials via script with the setObjectMaterial and setObjectTexture(/Global) commands. (Note that changing an object's material does not appear to change its associated bisurf properties--this system is intended for changing visual appearance only; you can't use it to cleverly change fire geometry properties--use the "hide" Animation for that purpose [see damageHide later in this section].)

Note: hiddenSelections are not intended for hiding or texture-swapping damaged hit locations; there are built-in ways to handl that with the 'damageHide' process and/or the CfgVehicles>Damage class.

See also: #hiddenSelectionsTextures[]

[ A, B, C, D E]

hiddenSelectionsTextures[]

string array

A list of (pathed) textures for use with hiddenSelections[]. The textures are assigned to the hiddenSelections[] elements in the order they are listed (first texture goes to the first element, and so on). hiddenSelections[] elements with no texture listed will be hidden at game startup, while those with a texture will be displayed and use the texture assigned. Note: even though hiddenSelection has a material (rvmat) assigned to it that would normally make it visible, leaving out its texture in this property will hide it entirely.

This might be a little confusing so let's use an example. Imagine we are using the vehicle in the hiddenSelections[] example above. Let's look at different ways hiddenSelections might be configured:

class CfgVehicles
{
	class Jeep_base
	{
		// this vehicle has both the "spareTire" and "flag" sections showing whenever the vehicle is spawned
		// they are referred to using commands like setObjectMaterial by array # (0 = spareTire, 1 = flag)
		// textures are assigned to the hiddenSelections in order (tire gets tire.paa, flag gets flag.paa)
		hiddenSelections[] = {"spareTire","flag"};
		hiddenSelectionsTextures[] = {"jeepMod\textures\tire.paa","jeepMod\textures\flag.paa"};
	}
	class Jeep_cheap : Jeep_base
	{
		// because "flag" is not included here, it is hidden--you also don't have access to it via script either
		hiddenSelections[] = {"spareTire"};
		hiddenSelectionsTextures[] = {"jeepMod\textures\tire.paa"};
	}
	class Jeep_fancy : Jeep_base
	{
		// both sections are available via script, but spareTire is hidden by giving it no texture ("")
		hiddenSelections[] = {"spareTire","flag"};
		hiddenSelectionsTextures[] = {"","jeepMod\textures\flag.paa"};
	}

See also: #hiddenSelections[]

hideWeapons__

bool

If true, the game hides any weapons being carried by the crewmember/passenger when he is riding in the vehicle.

A, B, C, D

idleRpm

int>0, RPM (revolutions per minute)

RPM level when engine is idling--this affects the engine sound. (See "redRpm").

A

inGunnerMayFire

bool

If true, the crewmember at this turret can move the view and fire any attached weapon when he is "turned in".

"Gunner" is used to mean whichever crewmember has access to this turret/view (e.g. the Commander is the "Gunner" in the Commander's turret).

A

latency

lockDetectionSystem

magazines[]

string array

List of magazines available to the weapons at this turret. (Magazine names come from CfgMagazines class[es]).

A

maxOmega

int>0, radians per second, (PhysX)

Maximum rotational speed of engine. (revolutions-per-minute * 0.104719755 = radians-per-second).

A, B

minTotalDamageTreshold

float≥0

Protects global vehicle health from damage.

This works the same way as minimalHit does for HitPoint locations: damage received below this value is ignored. This is just the global version of "minimalHit".

(This property is 10-24-14 devbranch only currently)

normalSpeedForwardCoef

float>0

<?> Proportion of top speed that is considered "normal speed" (as opposed to "fast speed" or "slow speed"). Not at all sure what this does in the game, read the cryptic description in the link and see what you can decipher from it...

A

outGunnerMayFire

bool

If true, the crewmember at this turret can move the view and fire any attached weapon when he is "turned out".

"Gunner" is used to mean whichever crewmember has access to this turret/view (e.g. the Commander is the "Gunner" in the Commander's turret). Note: apparently the game engine assumes helicopter crew are "turned out", so this property should be set to true for helicopters.

A

peakTorque

int>0, Newton-meters, (PhysX)

Maximum engine torque. (=enginePower*1000/maxOmega).

A, B

radarType

redRpm

int>0, RPM (revolutions per minute)

Maximum engine RPM--this affects the engine sound; just use "maxOmega" translated into RPM (multiply by ~9.5493). (See "idleRpm").

A

secondaryExplosion

float

Determines the strength of the explosion effect when the vehicle is destroyed.

  • secondaryExplosion = -1; // When negative number is set, "explosion power is calculated from fuel and ammo cargo, multiplied by absolute secondaryExplosion value"
  • secondaryExplosion = 0; // When set to 0, secondary explosion is disabled, vehicle will burn when destroyed (if destrType is "DestructDefault" or "DestructEngine") but not produce an explosive effect.
  • secondaryExplosion = 1; // When positive number is set, "explosion power is taken from hit property defined for FuelExplosion class in CfgAmmo. For this FuelExplosion needs to be defined. The name FuelExplosion is hardcoded and can not be changed"

A, B, C

simulation

string

Which simulation type governs this vehicle's physical behavior--for most vehicles this is generally one of the PhysX systems ("TankX", "CarX", "ShipX", "HelicopterX", "AirplaneX", <?>).

A

smokeLauncherAngle

int≥0, degrees

The angular spread/arc in which the countermeasure smoke grenades are launched.

The orientation of the spread is determined by "smokeLauncherOnTurret". The game will evenly distribute the number of grenades (smokeLauncherGrenadeCount) over this arc. Apparently the in-game angle tends to be smaller than this value, so the Samples_F comment suggests increasing the angle somewhat beyond the IRL value.

[(comment in "Samples_F\Test_Tank_01\CfgVehicles.hpp")]

smokeLauncherGrenadeCount

int≥0

Total number of smoke grenades launched when the countermeasure is used. (See the other "smokeLauncher__" properties for more details on how the smokescreen is generated).

[(comment in "Samples_F\Test_Tank_01\CfgVehicles.hpp"), B]

smokeLauncherOnTurret

bool

Whether the smoke grenades countermeasure launches from the turret or the body of the vehicle.

1= launcher on turret, grenades fire in direction turret is facing (this is typical for tanks). 2= launcher on hull, grenades fire in direction hull is facing.

[,B]

smokeLauncherVelocity

int≥0, m/s

Speed at which the grenades are launched. <?>Perhaps this affects height or distance of the resulting smokescreen.

[(comment in "Samples_F\Test_Tank_01\CfgVehicles.hpp"), ]

tankTurnForce

int>0, (PhysX)

How well a tank can turn, higher = better turning ability.

This is possibly some kind of coefficient that generates turning power for a TankX vehicle. The value apparently needs to be very high, on the order of 20-30 * vehicle weight (in kg) or more<?>.

[(comment in "Samples_F\Test_Tank_01\CfgVehicles.hpp"), A]

thermalMode[]

int array

Defines color modes available for thermal sights.

If a Turret has "TI" in its visionMode[], it can list one or more thermalMode[]'s. Any thermalMode[]'s are added to the "N"-key vision mode toggle set. The following modes are available: 0=white-hot, 1=black-hot, 2=green-hot,3=green/black-hot, 4=red-hot, 5=red/black-hot, (others?). (See "visionMode[]").

thermalNoise[] Arma 3 logo black.png2.10

float array

See FilmGrain Post Processing effect. This defines thermal noise effect. A 8 element array (Two more arguments than filmgrain) intensity, sharpness, grainSize, intensityX0, intensityX1, monochromatic, static, blurCoef the static parameter is a bool (1=static, 0=random) specifiying if the noise is randomly generated and different each frame, or if its randomized once and stays static. the blurCoef (default 0.5) specifies how blurry the result image is.

If you leave this array empty or undefined, engine will use default values.


thermalResoluton[] Arma 3 logo black.png2.10

float array

Defines screen resolutions at specific zoom steps. Zoom between defined steps will be linearly interpolated. The array is a sequence of X,Y values, X being the zoom between 0-1 (maxFov to minFov of the optic) and Y being the vertical resolution in pixels. This value is only used if there are thermalMode[]'s defined. It can be used to simulate digital zoom in thermal optics.

Ranges of resolution are only used for "smooth" zoom optics (or weapons with discreteFov[]), for discrete step's you can use single element arrays to set the resolution for the current step.

The conversion from fov to zoom percentage uses this formula:

delta = atan(maxFov)*2 - atan(minFov)*2;
zoom = 1 - (atan(currentFov)*2 - atan(minFov)*2) / delta

The engine internally converts the zoom values to corresponding fov and uses that to linearly interpolate between the two closet values.

The list of needs to be sorted by zoom in ascending order. It has to start with 0.0 zoom, and it has to end with 1.0 zoom. Values smaller than 0 or larger than 1.0 are not allowed. The resolutions have no constraints. If the resolution is larger than the players vertical render resolution, it will be clamped. Providing a negative value as a resolution, will cause the engine to convert it to the players actual vertical render resolution. You can use -1 to mean "100% of players resolution" The horizontal resolution is calculated based on vertical resolution and the players aspect ratio (See "Resolution" PostProcessing effect).

Note: Nightvision googles (with integrated thermal) don't support zoom resolutions, they only support a single fixed resolution.

Examples:

thermalResolution[]={0.0, 2048, 1.0, 512}; // 2048px vertical resolution at 0% zoom (maxFov), linearly reducing down to 512px vertical resolution at 100% zoom (minFov)
thermalResolution[]={512}; // 512 pixels, independent of zoom. Usually used when having a different optic class per zoom step
thermalResolution[]={0.0, 2048, 0.5, 2048, 1.0, 128}; // A combination optical/digital zoom. Optical zoom with no resolution loss during the first 50% of zooming, and rapid resolution loss in the last 50%

threat[]

float array, 1≥values≥0, (AI only)

How important it is for {AI Infantry, AI Armor, AI Aircraft} to attack this vehicle.

A

thrustDelay

int≥0, seconds, (PhysX)

Time it takes for engine to send power to the wheels from a stop.

This property does not affect already moving vehicles (see "clutchStrength" for something along those lines). Values >0 are suggested to reduce the chance that the vehicle's wheels slip every time it starts from a stop.

A

torqueCurve[]

float array, (PhysX)

An array describing how much torque the engine generates at various rotational speeds.

The values are normalized (0-1) so any units can be used to derive these values. The array consists of pairs of values in the form { {rotation1,torque1},{rotation2, torque2}, ...}. The first value in each pair tells the game how far along the RPM curve we are, the second value tells it how much to scale the peakTorque output. These are used to create a virtual graph which the game uses to determine engine power at various rotational speeds.

A, B

transmissionLosses

int≥0, Newton-meters, (PhysX)

A force that helps bleed speed from the vehicle (presumably most noticeable as the vehicle coasts).

transmissionLosses bleed energy from the vehicle due to inefficiencies in the transmission system. As such, they are not multiplied by the gear ratio (unlike engineLosses). (See "engineLosses").

A

transportSoldier

int≥0

How many passengers the vehicle can carry as cargo. (Crewmembers--gunner, driver, etc.--are not included in this value).

The vehicle's P3D model must also contain this number of proxies in the cargo area.

A

viewGunnerInExternal

bool

Controls whether the crewmember (at this turret) is rendered and damageable.

1= render crewmember when he is buttoned/"turned in", 0= render crewmember only when unbuttoned. Apparently this needs to be set =1 in order for crew to be damaged by penetrating hits (i.e. if crew is not rendered, they cannot be damaged).

A

visionMode[]

string array

Which vision types are available to toggle through ("N" key) in this optics view. Options are "Normal" (regular vision),"TI" (thermal imaging view),"NVG" (infrared/ambient light enhancement view).

Note that multiple thermalMode[] values add extra toggle steps to vision mode switching. (See "thermalMode[]").

waterPPInVehicle

bool

Whether passenger area floods when vehicle is swimming (i.e. passengers see water in their interior view).

If false(?), the interior of the vehicle does not flood when swimming--passengers don't see themselves underwater.

A

weapons[]

string array

List of weapons at this turret. (Weapon names come from CfgWeapons class[es]).

A

class AnimationSources

This class is an optional component to produce animation in a vehicle. The other components needed are:

  • The bones in model.cfg>CfgSkeletons>skeletonBones[].
  • The animations in model.cfg>CfgModels>Animations.
  • Named Selections in the visual/shadow/fire-geometry LOD's of P3D file which are identical to bone names above; this is how the bone knows which geometry moves with it.
  • Axes (consisting of two verts each) in the Memory LOD of the P3D file; this is how the bone knows where it is located and the axis it moves/rotates on. Axes are only necessary for translation or rotation bones (e.g. bones with nothing but a "hide" animation do not need any axis)

A

source

A

class complexGearbox

A series of PhysX properties grouped under the "complex Gearbox" class.

driveString

gearBoxMode

GearboxRatios[]

moveOffGear

neutralString

reverseString

transmissionDelay

TransmissionRatios[]

class Damage

This class is solely for the purpose of swapping certain vehicle textures as parts of the vehicle get damaged.

mat[]

string array

An array of RVMAT materials in groups of three. These are used to swap textures (or rather, materials) based on the damage state of a hit location. This is a complex process that requires configuration beyond the Damage class itself.

class CfgVehicles
{
	class myVehicleName
	{
		class Damage
		{
			tex[] = {};	// the texture component seems to always be unused, perhaps it is deprecated
			mat[] =		// good use of the Enter key makes the groupings clear
			{
				"A3\Armor_F_Gamma\MBT_02\Data\MBT_02.rvmat",			// the first entry is displayed in the low-damage state (~0-50% damage)
				"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_damage.rvmat",		// the second entry is displayed in the medium-damage state (~50-99% damage)
				"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_destruct.rvmat",	// the third entry is displayed in the high-damage state (100% damage)
	
				"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_body.rvmat",
				"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_body.rvmat",		// you can simply duplicate an entry in the list if you do not have all 3
				"A3\Armor_F_Gamma\MBT_02\Data\MBT_02_body_destruct.rvmat",

				"myMod\myVehicleDir\Data\glass_screen_base.rvmat",
				"myMod\myVehicleDir\Data\glass_screen_damaged.rvmat",
				"myMod\myVehicleDir\Data\glass_screen_destroyed.rvmat"
			 };
		};
	};
};

Creating a texture swap requires several more steps:

  • The geometry whose material will be swapped
    • must exist as a "section" in model.cfg
    • must have the base material applied to it in the P3D.
  • The link between the hit location and the material group is defined via the section name--it goes in the visual property of the HitPoint class.
  • This leaves only the listing of the material groups for the Damage class.

Warning, these links contain incomplete and (some) obsolete information: {{Link|http://tactical.nekromantix.com/wiki/doku.php?id=arma:modeling:damage_model%7CA],|[[Vehicle_Damage|B}}]

tex[]

string array, [deprecated?]

This property work like mat[], but for texture files. It uses pairs of textures - intact and damaged. In case extension of missing texture path, .pac is assumed!

class DestructionEffects

This class is used to create an array of visual and audio effects for when the vehicle--or hit location--is destroyed:

  • if the class is placed under CfgVehicles, it applies when the whole vehicle is destroyed.
  • if the class is placed under a hit location (e.g. class HitHull), it applies when that location is destroyed.

(Just about all Arma objects inherit from a few default versions--e.g. all vehicles seem to use the same fireball effect, etc.).

This class is multi-layered. Instead of all the effects being contained within the class--it refers to other effects classes contained in separate config files (see "simulation" below).

Instead of just using numerical values for the properties (e.g. lifetime = 10;), you can create variation and even randomness by including certain variable names (e.g. lifetime = "intensity * 5 + (random 10)";). Here is a list of some key variable names, although there are possibly many more which are undocumented.

A, B, C

intensity

float

intensity

float

position

string

The position the effect comes from. This can be any named vertex from the vehicle's Memory LOD.

(BI tends to use some sort of default positions named things like "destructionEffect1" and "destructionEffect2"--it's not clear where these are defined or whether they are hardcoded somewhere; it is also possible that they were intended to be used but were never implemented in vehicle configs and that the default behavior when a name has no corresponding memory point in the vehicle is to simply place the effect at the vehicle's centerpoint).

simulation

string

What type of effect entry this is.

Known values:

  • “Particles” uses class defined under CfgCloudlets as effect type; default location is a3\data_f\ParticleEffects\config.cpp.
  • “Light” uses class defined under CfgLights as effect type; default location is a3\data_f\ParticleEffects\config.cpp
  • “Sound” uses class defined under CfgSFX as effect type; default location is a3\sounds_f\config.cpp.
  • “Ruin” uses class defined under CfgVehicles as ruin model type; generally found within a given building's config.cpp.
  • “Destroy” uses class defined under CfgDestroyPos as effect type; ??
  • “DamageAround” uses class defined under CfgDamageAround as effect type; there's only one tiny instance of this found in a3\structures_f\config.cpp.

class HitPoints

Although these classes are typically separated into sub-classes (e.g. turret hitpoints under the Turrets class)--the game does not appear to require this in practice. Because hitpoints are attached to bones via the name property, hitpoint classes can be defined all at the same hierarchical level, anywhere in CfgVehicles--and in fact this practice would be preferable when you are making use of the depends property (which cannot reference hitpoint classes defined at different levels of the config).

armor (local)

float>0

Proportion of global health assigned to this location.

You will often see this property referred to as "armor (float)". The formula for determining location health appears to be simple:

location health = ("armor" local) * ("armor" global)

(if we assume the mysterious vehicle size measurement does not play a role). (See "armor (global)").

depends

string

Allows one location to apply its damage to another.

Formulas can be used to enhance this effect. e.g.

class HitTurret
{...};
class HitGun
{	...
	//for every point of damage HitTurret receives, HitGun gets 5
	depends = "5 * HitTurret";
};

Another requirement of this property is that the dependant/subordinate class (HitGun in this example) must be listed after the dominant class (HitTurret).

[recent feature, undocumented]

explosionShielding

float≥0

Modifies how global vehicle health is affected by 'splash' damage (indirectHit).

A factor applied to indirectHit damage. Values < 1 make a location resistant to indirectHit damage. Values > 1 make the location more sensitive.

See also: #explosionShielding (global).

[ A, B ].

material

int, [deprecated]

Darkens material based on damage state. Deprecated--all Arma 3 configs disable it by setting it to -1. If you want to read about how it works, follow this link: link.

minimalHit

float

Protects the location from damage.

Damage received below this value is ignored. A value of 0 means the location acts 'normally' and even the slightest damage will reduce its health. (See "armor (local)", "minTotalDamageThreshold"). If negative value is used, then damage that is applied reduced by minimalHit value.

Example: armor = -100;minimalHit = -0.5;

  • Case A: If projectile with damage 50 or lower will hit the hitpoint, then no damage will be applied (same as with positive minimalHit)
  • Case B: If projectile with damage 51 will hit the hitpoint, then only 1 damage point will be applied. In contrast, if minimalHit would be positive number, then hitpoint would be reduced by 51 points.
  • Case C: Similar, if hit value is 90, then hitpoint will be reduced by only 40.

name

string

The value is a named selection containing vertices in the P3D's HitPoints LOD. This way, the game knows what vertex/vertices in the model go with what hit location. Additionally, the set name should be the same as a CfgSkeletons bone (so the game also knows which verts move with which vehicle part). (See also #visual).

passThrough

1≥float≥0

Proportion of damage to this location that is passed on to damage global vehicle hit points. 0 = the location can be destroyed without affecting overall vehicle health (unless it is a special hit location with hardcoded properties) . This cannot be used to make a location cause extra global damage (since values over 1 are treated as = 1). (For that feature, see #depends).

radius

float≥0

Defines the size of the HitPoint vertices in this location of the vehicle's P3D model. The radius creates a "sphere" of effect around each vertex. When fire geometry within this sphere is hit, the location takes damage^.

A.

^It's actually a bit more complex than this. It appears that the game applies some damage to all locations based on their distance from the hit, with the nearest location taking the most damage of course.

visual

string

The name should match a "section" (from CfgModels). If the hit location is not associated with any section, it should be empty (visual = "";). Assigning a section to a hit location is optional. It is used by game to swap textures based on damage state (via the Damage class). (See also: #name, #class Damage).

[Samples_F\Test_Tank_01\CfgVehicles.hpp].

class HitPoints names

  • Existing HitPoints classes being used in the game have certain hard-coded properties that you should be aware of.
  • Sadly, certain vehicle types (TankX, CarX, etc.) are only given certain hard-coded properties.
    • So, for example, you cannot use the HitFuel effect in a tank, but you can use it in a car. :(
HitHull

Used in tracked vehicles, this location automatically destroys the vehicle when depleted (regardless of remaining global health/"armor").

HitFuel

Used in wheeled vehicles, this location automatically destroys the vehicle when depleted (regardless of remaining global health/"armor"). Also depletes Fuel state as damage is accumulated.

HitTrack

Restricts mobility when depleted. Because these locations are not protected by armor plates, they extremely vulnerable to damage unless protected by tweaking explosionShielding (<1) and(/or) minimalHit (>0).

HitWheel

Restricts mobility when depleted. Because these locations are not protected by armor plates, they extremely vulnerable to damage unless protected by tweaking explosionShielding (<1) and(/or) minimalHit (>0).

HitTurret

Prevents the turret (turret optics view) from rotating when depleted.

HitGun

Gun (turret optics view) is stuck at minimum elevation when depleted.

HitAmmo

Ammo locations are not used in vanilla Arma 3, but could be added. Because it has no hard-coded properties, the only way to make it destroy a vehicle is to use the "depends" property to pass on its damage to HitHull/HitFuel.

HitEngine

Restricts mobility when depleted.

HitAvionics

Used in aircraft, it makes the HUD display flicker and disappear when depleted.

HitVRotor

Used in helicopters to represent the tail rotor, it causes the aircraft to spin out of control when depleted.

HitHRotor

Used in helicopters to represent the main rotor, the aircraft loses power when this location is depleted.

class Wheels

A series of PhysX properties grouped under the "Wheels" class.

boneName

string, (PhysX)

The name of the bone used for wheel & suspension animations in the model's P3D/model.cfg file.

A

boundary

string, (PhysX)

Refers to a vertex in the model's P3D file used to determine wheel radius. The vertex is usually place on the ground plane in the P3D file.

A

center

string, (PhysX)

The axis of wheel's rotation in the model's P3D/model.cfg file.

In the P3D file, 2 vertices are combined in a named selection set and are used to define the axis of the wheel's rotation.

A

damping

float>0, (PhysX)

Shock-absorber strength, it diminishes vehicle bounciness defined by the spring__ properties.

Presumably this property works with the other 3 spring properties to control vehicle bounciness (#springMass, #springStrength, #springDamperRate). (Not to be confused with the other "damping__" properties, which appear to be torque or rotation coefficients).

A, B

dampingRate

float>0, (PhysX)

Spinning friction of the Wheel (the rate at which it slows down).

Higher equals more friction/harder to move. All the damping__ properties appear to be coefficients affecting the friction of the Wheel against the ground. (Presumably different ground materials influence final friction). BI recommends values between 0.25-2 (for CarX anyway)

A, B

dampingRateDamaged

float>0, (PhysX)

Spinning friction of the Wheel (the rate at which it slows down) when it is damaged.

Higher equals more friction/harder to move; this value should be higher than dampingRate but less than dampingRateDestroyed. All the damping__ properties appear to be coefficients affecting the friction of the Wheel against the ground. (Presumably different ground materials influence final friction). (see "dampingRate", "dampingRateDestroyed").

A, B

dampingRateDestroyed

float>0, (PhysX)

Spinning friction of the Wheel (the rate at which it slows down) when it has been destroyed.

Higher equals more friction/harder to move; this value should be higher than dampingRateDamaged. All the damping__ properties appear to be coefficients affecting the friction of the Wheel against the ground. (Presumably different ground materials influence final friction). (see "dampingRate", "dampingRateDamaged").

A, B

dampingRateInAir

float>0, (PhysX)

Related to the mass of the Wheel, this property influences spin-slippage and acceleration.

This property is used (somehow<?>) with MOI to determine maximum speed for tanks. (See "MOI"). Theoretically, this is the rate at which the wheel slows down when spinning freely with the vehicle suspended in the air. As you increase MOI to prevent initial-wheel-spinning, you may need to counteract the speed boost(?) this creates by increasing dampingRateInAir. BI says only "tweak [dampingRateInAir] together with MOI to adjust maximum speed".

A

frictionVsSlipGraph[]

float array, (PhysX)

This array helps define Wheel (tire) traction when turning.

This array creates a simple 3-point virtual graph of friction (2nd #) at different levels of longitudinal slip (1st #). The friction values are applied as a coefficient on ground friction values--values below 1 make the vehicle more slippery, while values over 1 give it extra traction. Typically a tire would have a friction peak somewhere in the middle of the slip axis with lower values on either side. (You will often find this not to be the case in BI configs, however, where they tend to set friction quite high at all slip levels--at least with tracked vehicles).

PhysX-slip-graph.JPG

A, B

latStiffX/Y

int>0, stiffness per unit of lateral slip in radians, (PhysX)

These two properties help define Wheel traction when turning.

"latStiffX" & "latStiffY" describe "tire lateral stiffness". They create a simple virtual graph describing the tire's lateral (side-to-side) stiffness. Roughly speaking, higher values are supposed to create better turning ability.

PhysX-stiffness-graph.JPG

A, B, C

longitudinalStiffnessPerUnitGravity

int>0, stiffness per unit of longitudinal slip in radians, (PhysX)

Influences braking & acceleration performance.

Tire longitudinal (front-back) stiffness. Higher roughly = more responsive braking & acceleration.

A, B

mass

int>0, kg, (PhysX)

Weight of this Wheel in kilograms.

Appears to be redundant with "weight" property. Used somehow in the PhysX simulation.

See also: #weight

A, B

maxBrakeTorque

int>0, Newton-meters?, (PhysX)

Wheel braking power.

This is the maximum braking power. Appears to be roughly equal to peakTorque * 2 in some BI configs.

A, B

maxDroop

float>0, meters, (PhysX)

The maximum distance the wheel will hang (by its suspension) down from the body of the vehicle.

(Imagine picking the vehicle up off the ground with a crane: how far do the wheels hang down?).

See also: #maxCompression.

A, B

maxCompression

float>0, meters, (PhysX)

The maximum distance the wheel can get pushed up into the body of the vehicle when it is being compressed.

See also: #maxDroop.

A, B

MOI

int>0, kg square meters, (PhysX)

Related to the mass of the Wheel, this property influences spin-slippage and acceleration (as well as tank max speed somehow).

"Moment of Inertia". Low = wheels spin & slip easily, high = wheels spin more slowly and slow acceleration. This property is used (somehow<?>) with dampingRateInAir to determine maximum speed for tanks. Technically you can derive MOI = Mass * (radius in meters)^2, but BI recommends you use this only as a starting point. (See "dampingRateInAir").

A

side

string, "left"/"right", (PhysX)

Which side of the vehicle the wheel is on. ("left" = port side?)<?>

A

springDamperRate

int>0, (PhysX)

How fast the suspension loses energy as it bounces.

You can derive the "damping ratio" using this formula:

damping ratio = springdamperRate / [2*SQRT(springStrength * sprungMass) ]

Use it to determine whether a spring is over-damped (>1), just-damped (1), or under-damped (<1); BI says a typical family car is slightly over-damped with a damping ratio of just over 1.0.

See also: #springStrength, #sprungMass.

A, B

springStrength

int>0, Newtons/meter, (PhysX)

Strength of the suspension spring.

You can derive the "natural frequency" (bounces per second) of the spring using this formula:

natural frequency = SQRT(springStrength / sprungMass)

BI says a typical family car has a natural frequency of 5-10.

A, B

sprungMass

int>0, kg, (PhysX)

Mass supported by the suspension spring.

Total vehicle mass is distributed across all the wheels/springs. Note that if the vehicle's center of mass is not at its midpoint, some springs should carry more mass than others.

A, B

steering

bool, (PhysX)

Whether or not the Wheel turns when driver turns the steering-wheel. True = turns, false = does not turn.

A

weight

int>0, kg, (PhysX), [obsolete?]

Weight of this Wheel in kilograms.

Appears to be redundant with "mass" property (given same value). Not clear whether this property is actually used, while "mass" does appear to play a role in the PhysX simulation.

See also: #mass.

A, B]

Model.cfg

A game model is defined by its P3D file and an associated model.cfg config file that describes the model's components. It consists of two classes: CfgSkeletons & CfgModels.

[ A, B, C, D ]

CfgSkeletons

CfgModels

class Animations

A, B

type

string

The type of animation that will occur. Choose from one of the preset animation types (rotation, translation, hide, etc.)

A, B

source

string

What property the animation is dependent on. This may be one of the many preset sources tracked by the game (damage, speed, etc.). Or it may be a custom source defined in config.cpp>CfgVehicles >AnimationSources. A custom source can be something as simple as another bone with its own standard preset source, or as complex as a user script. However, the most common use of a 'custom' source in CfgVehicles is for the purpose of hiding a damaged hit location (e.g. vehicle glass) link.

A, B

selection

string

The thing which is animated. This must be a bone defined in CfgSkeletons (along with corresponding geometry in an identically Named Selection in the P3D).

A

axis

string

The Named Selection of the axis for the animation. An axis is defined by two vertices within a Named Selection in the P3D file's "Memory" LOD. (Think of this as defining the axis of a bone that's been defined in CfgSkeletons. Incidentally, the first vertex placed when the axis is created indicates the +ve 'direction' of the axis for translation animation <? See link B>).

Remember, Arma's modeler (aka Oxygen) is not as advanced as standard 3D modeling software. In the later, you would define a hierarchy of bones visually, and each bone automatically gets an axis created along with it. In Arma you define only the bone hierarchy in CfgSkeletons; the bone axes and positions must be defined in Oxygen using vertices in the "Memory" LOD.

A, B

hideValue

A

unHideValue

A

ARMOR/MATERIAL Configs

BISURF properties

BISURF material files are assigned to fire geometry in a vehicle's P3D file. They define the physical properties of whatever geometry they've been assigned to. Critical among these properties is armor value as defined by bulletPenetrability (or bulletPenetrabilityWithThickness & Thickness).

A

bulletPenetrability

int>0

Material strength in terms of how well it resists penetration: lower is stronger.

This is based on how far in mm a BI-standard "7.62mm NATO round" travelling at 1000m/s will penetrate the material. For example, RHA = 15.

bulletPenetrabilityWithThickness

int>0

If the material has a "thickness" property specified, put its bulletPenetrability value here instead. (See "bulletPenetrability").

deflection

??

<?> Speculation: refines the ricochet system by letting materials affect the final deflection probability. (See CfgAmmo "deflecting").

A (new undocumented property as of 11-6-2014 devbranch)

Density

dust

(possibly related only to the movement/physX sim--nothing to do with ballistics/armor)

friction

(possibly related only to the movement/physX sim--nothing to do with ballistics/armor)

impact

isWater

restitution

rough

(possibly related only to the movement/physX sim--nothing to do with ballistics/armor)

soundEviron

soundHit

Thickness

int>0

Sets a thickness ceiling to the geometry (the purpose being to make it easier to model small or thin pieces of fire geometry).

If the fire geometry is thinner than the Thickness value, the actual geometry thickness is used instead. If the fire geometry is thicker, the Thickness value overrides it and is used. The game does take into account LOS thickness by evaluating an incoming projectile's angle-of-incidence (relative to the geometry normal).

EFFECTS Configs

CfgCloudlets

CfgCloudlets is BI's odd name for a particle definition class. By default, it is found exclusively in a3\data_f\ParticleEffects\config.cpp.

A, B, C