R3vo/Sandbox – User

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Replaced content with "{{Feature|important|The content of this page was generated by script. Manual edits might get lost.}} {| class="wikitable sortable" border="1" style="border-collapse:collap...")
Tag: Replaced
 
(61 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Feature|important|The content of this page was generated by script. Manual edits might get lost.}}
{{TOC|side}}
{| class="wikitable sortable" border="1" style="border-collapse:collapse; font-size:80%;" cellpadding="3px"
If you have ever wondered why you scenario is running so badly, performance profiling is the way to find it out. It allows you to find bottlenecks and slow code by capturing a "slow" frame.
! Preview !! Class !! Name !! Inventory description !! Magazines !! Accessories !! Used by
The captured data can then be viewed and analysed.
 
== Getting the correct Version ==
Profiling is enabled in the following {{arma3}} versions
* arma3profiling_x64.exe - '''Part of the Performance Profiling Build'''
* arma3diag_x64.exe - '''Part of the Development Build'''
 
Read [[Arma_3: Steam Branches]] for a guide on how to access these branches.
 
{{Feature|informative|It is recommended to use the '''Performance Profiling Build''' (arma3profiling_x64.exe) for performance profiling because:
* Has tools that might not make it into development build
* Has all the profiling related commands that ''arma3diag_x64.exe'' has
* Its performance is closer to the default ''arma3_x64.exe''}}
 
== Frame Capturing ==
There are several commands that allow you to capture a frame.
* [[diag_captureFrame]]
* [[diag_captureSlowFrame]]
* [[diag_logSlowFrame]] - not available in Arma 3 :(
* [[diag_captureFrameToFile]]
In most cases you do not want to capture any or all frames, you just want to capture "slow" frames. A slow frame is a frame that takes longer than the average frame and slows down the game.
 
== How to Use ==
# Run a mission
# Execute a scripted command <sqf inline>diag_captureSlowFrame ["total", 0.3];</sqf> using any means ([[Arma 3: Debug Console|Debug Console]], mission radio trigger...)
# Once a slow frame is detected, a window will open
# In the window you will be able to browse a lot of performance-related data, which can be interesting
# To export the gathered information for sharing with others:
## Select Main Thread (if not selected yet)
## Press the Copy button
## Open an external text editor
## Paste the text into a new file
## Save the file
 
== Capture Frame UI ==
[[File: arma3-capture frame ui overview.png]]
 
# {{Wiki|TODO}}
# {{Wiki|TODO}}
# {{Wiki|TODO}}
# {{Wiki|TODO}}
# {{Wiki|TODO}}
# {{Wiki|TODO}}
# {{Wiki|TODO}}
# {{Wiki|TODO}}
# {{Wiki|TODO}}
 
== External Viewer ==
* chrome://tracing
* https://ui.perfetto.dev/
 
[[File:Performance_Profiling_04.png|thumb|diag_captureFrame sample output with custom subtree]]
== Creating Your Own Subtree ==
 
When Profiling Per-Frame Eventhandlers (PFH), [[diag_captureFrame]] only shows one blob called siFEH that contains all PFH's so you can't see what part of that is caused by your PFH.<br>
You can create your own subtree inside siFEH by wrapping your function call inside a [[isNil]] CODE statement like this:<br>
Turn your old call which may look like this:
<sqf>
addMissionEventHandler ["EachFrame", {
call myPFHFunction
}];
</sqf>
 
Into something like this:
<sqf>
addMissionEventHandler ["EachFrame", {
isNil { call myPFHFunction } // isNil creates the subtree
}];
</sqf>
 
Now when you run [[diag_captureFrame]] inside of siPFH you will have a subtree called gsEva and behind that you can see the first line of code inside the isNil statement.<br>
It will only show a part of the first line of that code so you should put something descriptive into the [[isNil]] statement.<br>
You can use the same to create a subtree for any function you like. This will also work inside [[Scheduler#Scheduled_Environment|Scheduled]] ([[spawn]]ed) scripts. <br>
But using this method to "subtree" a function with return values requires a little bit of trickery to get the return value out.
 
 
== Notes ==
 
* 0.3 is a time in second used to determine what duration of a frame you consider abnormal, and first such frame will be captured.
* 0.3 is definitely something you should not see in a normal game.
* If you do not capture any frames with 0.3, try lowering it to 0.2 or 0.1.
* If it triggers too early, before the main slowdown happens, increase it to a higher value, e.g. 1.0.
 
== Scopes ==
{| class="wikitable sortable"
|-
! Technical Name !! Descriptive Name !! Description
|-
| Main
|
|
|-
| total
|
|
|-
| fsPHa
|
|
|-
| winMs
|
|
|-
| dlcSim
|
|
|-
| steamCbk
|
|
|-
| input
|
|
|-
| wSimu
|
|
|-
| docSim
|
|
|-
| wSimDisp
|
|
|-
| MFDManager
|
|
|-
| wDisp
|
|
|-
| EventPrcs
|
|
|-
| gsEva
|
|
|-
| gbFrm
|
|
|-
| memLo
|
|
|-
| siScr
|
|
|-
| scrVM
|
|
|-
| wsSet
|
|
|-
| sLand
|
|
|-
| simSW
|
|
|-
| cLWObj
|
|
|-
| oTemp
|
|
|-
| FPres
|
|
|-
| waitSnd
|
|
|-
| job
|
|
|-
| sound
|
|
|-
| ssAdv
|
|
|-
| snCmt
|
|
|-
| play
|
|
|-
| ARTCpl
|
|
|-
| rendr
|
|
|-
| drwVi
|
|
|-
| txHLi
|
|
|-
| txPMM
|
|
|-
| dsr2t
|
|
|-
| wPrep
|
|
|-
| dPr
|
|
|-
| fmiRun
|
|
|-
| fmiWait
|
|
|-
| fmiMDrw
|
|
|-
| fmiSIns
|
|
|-
| wPrepFtr
|
|
|-
| clPrp
|
|
|-
| oPrep
|
|
|-
| sceAC
|
|
|-
| oSplt
|
|
|-
| sceACTA
|
|
|-
| sceACPrx
|
|
|-
| lodUL
|
|
|-
| PrxObj
|
|
|-
| manAn
|
|
|-
| ppdOT
|
|
|-
| flProx
|
|
|-
| PrxObjTransport
|
|
|-
| oSoSL
|
|
|-
| oSoJE
|
|
|-
| oSoJE1
|
|
|-
| oSoJE2
|
|
|-
| oSo1OFOv
|
|
|-
| oSo1ON
|
|
|-
| sceCLsHSH
|
|
|-
| prpAMCt
|
|
|-
| oSoJEw
|
|
|-
| pDrwFNP
|
|
|-
| oSoSLu
|
|
|-
| lPGCl
|
|
|-
| pdDrw
|
|
|-
| lDGnd
|
|
|-
| lGSMM
|
|
|-
| recCB
|
|
|-
| mtPmj
|
|
|-
| cuDrw
|
|
|-
| prepT
|
|
|-
| drwCB
|
|
|-
| oPasD
|
|
|-
| o1Drw
|
|
|-
| lckDnBf
|
|
|-
| prpTx
|
|
|-
| inst
|
|
|-
| stpSctnTL
|
|
|-
| o1ShV
|
|
|-
| scSVI
|
|
|-
| oPas3
|
|
|-
| sssmC
|
|
|-
| sbDrw
|
|
|-
| aniMt
|
|
|-
| ppSSSM
|
|
|-
| drwROM
|
|
|-
| drwIn
|
|
|-
| wDraw
|
|
|-
| lDPGT
|
|
|-
| oSDrw
|
|
|-
| oPasO
|
|
|-
| lDSky
|
|
|-
| swRdr
|
|
|-
| ppSWDD
|
|
|-
| swRdGeom
|
|
|-
| swRdGeomVB
|
|
|-
| swFillV
|
|
|-
|-
| [[File:Gear_MP40_X_ca.png|150px]]
| oPasA
| SPE_MP40
|  
| ''MP 40''
|  
| ''Submachine Gun<br />Caliber: 9x19 mm
|-
 
| ppShrpn
The standard-issue German submachine gun was the MP 38/MP 40. Sometimes erroneously called the Schmeisser by Allies. The MP 38 was replaced by the MP 40, a simplification of the manufacturing process. The MP 40 is chambered in 9x19 parabellum and fed from a 32-round stick magazine. The MP 40 operates from an open bolt and is blowback operated. Although fully automatic only, it can be fired accurately in short bursts with its low rate of fire. Platoon and squad leaders often carried the MP 40, as well as paratroopers, pioneers, and designated soldiers in the infantry squads.''
|
|
|
* SPE_32Rnd_9x19
|-
* SPE_32rnd_9x19_t
| lDWat
* SPE_32rnd_MUZZLE_FAKEMAG
|
|
|
|
|-
* SPE_FFI_Fighter_MP40
| oPas2
|
|
|-
| o2Drw
|  
|
|-
| oPas5
|
|
|-
| o5Drw
|
|
|-
| EDraw3D
|
|
|-
| MEventPrcs
|
|
|-
| cLGSY
|
|
|-
| stpAll
|
|
|-
| stpCB
|
|
|-
| stpTxtCS
|
|
|-
| stpUAVsCS
|
|
|-
| ppHDRCL
|
|
|-
| ppGSB
|
|
|-
| ppDOF
|
|
|-
| ppGlwNw
|
|
|-
| ppGLu
|
|
|-
| stpCBUpd
|
|
|-
| ppQWt
|
|
|-
| ppCMAA
|
|
|-
| hudDr
|
|
|-
| 3DEN_UI_OnDraw
|
|
|-
| 3DEN_PrepareDraw
|
|
|-
| clObL
|
|
|-
| 3DEN_Drawing
|
|
|-
| stpTxtGS
|
|
|-
| txt2D
|
|
|-
| mapDr
|
|
|-
| mapSeaAndNormal
|
|
|-
| mapPM
|
|
|-
| lndPM
|
|
|-
| MapObjectsPrepTask
|
|
|-
| mapSeaAndNormalDraw
|
|
|-
|-
| [[File:Gear_M3_GreaseGun_X_ca.png|150px]]
| mapCntDraw
| SPE_M3_GreaseGun
|  
| ''M3A1 Grease Gun''
|  
| ''Submachine Gun<br />Caliber: .45 ACP
 
The M3 Grease Gun began to replace the Thompson submachine guns during World War II. It shares the same .45 ACP round but fed from a different 30-round box magazine. The M3 Grease gun was the result of an effort to provide a replacement for the Thompson that was easier to manufacture. The M3 was nicknamed the `Grease Gun` or `Greaser` by troops in the field due to its resemblance to the mechanic's tool.''
|
* SPE_30Rnd_M3_GreaseGun_45ACP
* SPE_30Rnd_M3_GreaseGun_45ACP_t
* SPE_30rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M3_Suppressor_45acp
|
{| class="wikitable mw-collapsible mw-collapsed"
! Objects
|-
|-
|
| mapObjectsDraw
* SPE_FFI_Fighter_M3
|
* SPE_FR_SquadLead
|  
* SPE_US_SquadLead
* SPE_US_Second_Lieutenant
* SPE_US_Tank_Crew
* SPE_US_Tank_Sergeant
* SPE_US_Tank_camo
* SPE_US_Tank_camo2
* SPE_US_Tank_HBT_Legging
* SPE_US_Tank_medic
* SPE_US_Tank_medic_camo
* SPE_US_Rangers_second_lieutenant
* SPE_US_Rangers_engineer
* SPE_US_Rangers_engineer_bangalore
* SPE_US_HBT44_HalfTrack_Driver
* SPE_US_HBT44_Second_Lieutenant
* SPE_US_Smgunner
* SPE_FR_SMGunner
|}
|-
|-
| [[File:Gear_Sten_Mk2_X_ca.png|150px]]
| mapForestShape
| SPE_Sten_Mk2
|  
| ''Sten Mk II''
|  
| ''Submachine Gun<br />Caliber: 9x19 mm
 
The Sten, or Sten gun, is a widely fielded sub-machine gun utilized by the United Kingdom. It features a distinct nine o'clock mounted 32-round detachable box magazine. It's chambered in the 9x19 parabellum round. The MkII was easily produced with an extremely simplified design featuring a wire frame stock.''
|
* SPE_32Rnd_9x19_Sten
* SPE_32rnd_MUZZLE_FAKEMAG
|
|
* SPE_FFI_Fighter_Sten
* SPE_FFI_TeamLeader_Sten
|-
|-
| [[File:Gear_M1A1_Thompson_X_ca.png|150px]]
| mapGrid
| SPE_M1A1_Thompson
|  
| ''M1A1 Thompson''
|  
| ''Submachine Gun<br />Caliber: .45 ACP
 
The Thompson was the standard issue Sub-machine gun for the US Army at the time of entering World War II. It was replaced by the much simpler and easier-to-manufacture M3 Grease gun close to the end of World War II. Commonwealth forces also saw widespread use of the Thompson sub-machine during the early parts of WW2. The design dates back to the end of WW1, the Thompson first saw notoriety in the hands of law enforcement and gangsters. The Thompson is chambered in .45 ACP and fed from 20 or 30-round magazines. The M1928 and M1928A1 sub-machine guns were also capable of accepting 50-round drum magazines. Those earlier models were replaced with the M1 and M1A1 Thompson submachine guns.''
|
* SPE_30Rnd_Thompson_45ACP
* SPE_30Rnd_Thompson_45ACP_t
* SPE_20Rnd_Thompson_45ACP
* SPE_20Rnd_Thompson_45ACP_t
|
|
* SPE_FR_Tank_Crew
* SPE_FR_Tank_Sergeant
* SPE_FR_Tank_Second_Lieutenant
* SPE_US_Captain
* SPE_US_Rangers_SquadLead
* SPE_US_Rangers_captain
* SPE_US_HBT44_SquadLead
* SPE_US_Rangers_Smgunner
|-
|-
| [[File:Gear_K98_X_ca.png|150px]]
| drwFn
| SPE_K98
|  
| ''Kar 98k''
|  
| ''Bolt-Action Rifle<br />Caliber: 7.92x57 mm Mauser
 
Karabiner 98 Kurz, or Kar 98k, is a bolt action rifle that was used by the German army during World War II. It's chambered in 7.92 by 57 mm Mauser, also known as 8 mm Mauser. Fed from 5-round stripper clips. The Kar 98k can accept a bayonet or rifle grenade adaptor. Kar 98ks with higher-than-normal accuracy were fitted with a telescopic sight and used as sniper rifles.''
|
* SPE_5Rnd_792x57
* SPE_5Rnd_792x57_t
* SPE_5Rnd_792x57_sS
* SPE_5Rnd_792x57_SMK
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_K98_Bayo
* SPE_ACC_GW_SB_Empty
|
|-
|-
| [[File:Gear_M1903A3_Springfield_X_ca.png|150px]]
| dtTot
| SPE_M1903A3_Springfield
|  
| ''M1903A3 Springfield''
|  
| ''Bolt-Action Rifle<br />Caliber: .30-06
 
The M1903 Springfield was the standard issue US service rifle leading into World War II. The Springfield is a bolt action rifle chambered in 30-06 and fed by 5-round stripper clips. A bayonet can be mounted. It was used by United States Marines during the early conflicts before being replaced by the semi-automatic M1 Garand. The M1903A4 continued to see service as the standard issue sniper rifle during the remainder of World War II. The M1903A4 is equipped with a 2.75x telescopic sight.''
|
* SPE_5Rnd_762x63
* SPE_5Rnd_762x63_t
* SPE_5Rnd_762x63_M1
* SPE_5Rnd_762x63_M2_AP
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M1_Bayo
* SPE_ACC_GL_M1
* SPE_ACC_M1905_Bayo
|
* SPE_FR_Soldier_base
* SPE_FR_Soldier_HBT
* SPE_FR_Soldier_HBT_trop
* SPE_FR_Tank_Coverall
* SPE_FR_Tank_Coverall_trop
* SPE_FR_Rifleman
* SPE_FR_Medic
* SPE_FR_Radioman
* SPE_FR_Rifleman_Universal
|-
|-
| [[File:Gear_G43_X_ca.png|150px]]
| wFram
| SPE_G43
|  
| ''Gewehr 43''
|  
| ''Semi-Automatic Rifle<br />Caliber: 7.92x57 mm Mauser
 
The Gewehr 43, or Karabiner 43, was a successor to the Gewehr 41. Its intended role was to increase the firepower of the individual riflemen who were using bolt-action Kar 98k rifles at the time. The Gewehr 43 improved on the G41 by adding a detachable 10-round box magazine, which could still be fed from Kar 98k stripper clips when required. Captured SVT-38s and SVT-40s were reverse-engineered to develop the gas operating system used for the Gewehr 43, replacing the bang system used on the early G41.''
|
* SPE_10Rnd_792x57
* SPE_10Rnd_792x57_T
* SPE_10Rnd_792x57_T2
* SPE_10Rnd_792x57_sS
* SPE_10Rnd_792x57_SMK
* SPE_32rnd_MUZZLE_FAKEMAG
|
|
* SPE_FFI_Fighter_G43
* SPE_GER_lehr_Assist_SquadLead
* SPE_GER_ober_rifleman
* SPE_GER_scout_ober_rifleman
* SPE_sturmtrooper_ober_rifleman
|-
|-
| [[File:Gear_M1_Garand_X_ca.png|150px]]
| 3dSwp
| SPE_M1_Garand
|  
| ''M1 Garand''
|  
| ''Semi-Automatic Rifle<br />Caliber: .30-06
 
The M1 Garand is the standard issue service rifle of the US Army. Adopted into service in 1936, the M1 replaced the bolt action M1903 Springfield as the US service rifle. The M1 Garand is a .30-06 caliber semi-automatic rifle fed from 8-round en-bloc clips. The clips are ejected automatically when empty creating a distinctive 'ping' noise. The M1 10-inch bayonet can be fitted on the Garand. Alternatively, the M7 grenade launcher adapter can be mounted to allow the rifle to fire rifle-grenades.''
|
* SPE_8Rnd_762x63
* SPE_8Rnd_762x63_t
* SPE_8Rnd_762x63_M1
* SPE_8Rnd_762x63_M2_AP
* SPE_8rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M1_Bayo
* SPE_ACC_GL_M7
* SPE_ACC_M1905_Bayo
|
{| class="wikitable mw-collapsible mw-collapsed"
! Objects
|-
|-
|
| preLd
* SPE_US_Soldier_base
|
* SPE_FFI_Fighter_Garand
|  
* SPE_US_Private_late
* SPE_US_Private_1st
* SPE_US_Corporal
* SPE_US_Sergeant
* SPE_US_Technician
* SPE_US_Med
* SPE_US_Med_late
* SPE_US_Rifleman
* SPE_US_Assist_Autorifleman
* SPE_US_Medic
* SPE_US_Radioman
* SPE_US_CC_EM
* SPE_US_CC_EM_roll
* SPE_US_CC_EM_trop
* SPE_US_CC_EM_trop_roll
* SPE_US_CC_HBT_EM
* SPE_US_CC_HBT_EM_roll
* SPE_US_CC_HBT_EM_trop
* SPE_US_CC_HBT_EM_trop_roll
* SPE_US_CC_HBT_camo
* SPE_US_CC_HBT_camo_roll
* SPE_US_CC_HBT_camo_trop
* SPE_US_CC_HBT_camo_trop_roll
* SPE_US_CC_2LT
* SPE_US_CC_1LT
* SPE_US_CC_CPT
* SPE_US_Rifleman_Universal
* SPE_US_Rangers_M41_HBT
* SPE_US_Rangers_M41_HBT_PFC
* SPE_US_Rangers_M41_HBT_Corporal
* SPE_US_Rangers_M41_HBT_Sergeant
* SPE_US_Rangers_M41_HBT_Technician
* SPE_US_Rangers_M41_HBT_medic
* SPE_US_Rangers_rifleman
* SPE_US_Rangers_Rifleman_AmmoBearer
* SPE_US_Rangers_Assist_Autorifleman
* SPE_US_Rangers_medic
* SPE_US_Rangers_radioman
* SPE_US_Rangers_rifleman_Universal
* SPE_US_Pilot_Base
* SPE_US_B10
* SPE_US_B10_glove
* SPE_US_B10_boot
* SPE_US_6552
* SPE_US_6552_glove
* SPE_US_6552_boot
* SPE_US_S31A
* SPE_US_S31A_glove
* SPE_US_S31A_boot
* SPE_US_S31_erla
* SPE_US_S31_erla_glove
* SPE_US_S31_erla_boot
* SPE_US_HBT44
* SPE_US_HBT44_Med
* SPE_US_HBT44_Trop
* SPE_US_HBT44_roll
* SPE_US_HBT44_late
* SPE_US_HBT44_late_roll
* SPE_US_HBT44_Half
* SPE_US_HBT44_FrogSkin_Jungle
* SPE_US_HBT44_FrogSkin_Jungle_trop
* SPE_US_HBT44_FrogSkin_Jungle_roll
* SPE_US_HBT44_FrogSkin_Jungle_Half
* SPE_US_Tank_Coverall
* SPE_US_Tank_Coverall_trop
* SPE_US_Tank_Coverall_legging
* SPE_US_HBT44_Rifleman
* SPE_US_HBT44_Medic
* SPE_US_HBT44_Radioman
* SPE_US_HBT44_Rifleman_Universal
* SPE_US_AMGunner
* SPE_US_Rangers_FC_Rifleman
* SPE_US_Rangers_Amgunner
* SPE_US_HBT44_FC_Rifleman
|}
|-
|-
| [[File:Gear_M1_Carbine_X_ca.png|150px]]
| preLV
| SPE_M1_Carbine
|  
| ''M1 Carbine''
|  
| ''Semi-Automatic Rifle<br />Caliber: .30 Carbine
 
The M1 Carbine is a personal defense weapon that was standard issue to support personnel in the US Army. Adopted into use in 1941 to supplement the M1 Garand for troops not directly involved in front-line combat, such as radiomen, bazooka gunners, mortar men, or truck drivers. The M1 Carbine is chambered in .30 Carbine and fed from a 15-round detachable box magazine. It's semi-automatic only and lacks the stopping power and range of full-sized rifle rounds, although it's smaller, lighter, and easier to handle. In order to easily exit aircraft, US paratroopers were issued an M1A1 Carbine with a folding stock.''
|
* SPE_15Rnd_762x33
* SPE_15Rnd_762x33_t
* SPE_32rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_GL_M8
|
{| class="wikitable mw-collapsible mw-collapsed"
! Objects
|-
|-
|
| actObjPrld
* SPE_FFI_Fighter_Carbine
|
* SPE_FFI_Sapper
|  
* SPE_FR_Rifleman_Carbine
* SPE_FR_Assist_SquadLead
* SPE_FR_Captain
* SPE_FR_Assist_Autorifleman
* SPE_FR_AHMGunner
* SPE_FR_HMG_AmmoBearer
* SPE_FR_Mortar_Gunner
* SPE_FR_Mortar_AGunner
* SPE_FR_Mortar_AmmoBearer
* SPE_FR_AT_Soldier
* SPE_FR_Engineer
* SPE_US_Driver
* SPE_US_Rifleman_AmmoBearer
* SPE_US_Assist_SquadLead
* SPE_US_First_Lieutenant
* SPE_US_AHMGunner
* SPE_US_HMG_AmmoBearer
* SPE_US_Mortar_Gunner
* SPE_US_Mortar_AGunner
* SPE_US_Mortar_AmmoBearer
* SPE_US_AT_Soldier
* SPE_US_Engineer
* SPE_US_Guncrew
* SPE_US_Guncrew_Sergeant
* SPE_US_Rangers_Assist_SquadLead
* SPE_US_Rangers_first_lieutenant
* SPE_US_Rangers_AHMGunner
* SPE_US_Rangers_AT_soldier
* SPE_US_HBT44_Assist_SquadLead
* SPE_US_HBT44_AHMGunner
* SPE_US_HBT44_Engineer
* SPE_US_HBT44_AT_Soldier
* SPE_US_FC_Rifleman
* SPE_US_Rangers_Corporal
* SPE_US_HBT44_Corporal
* SPE_FR_Corporal
|}
|-
|-
| [[File:Gear_STG44_X_ca.png|150px]]
| hashChk
| SPE_STG44
|  
| ''StG 44''
|  
| ''Assault Rifle <br/>Caliber: 7.92x33 mm Kurz
 
The Maschinenpistole 44, later renamed the Sturmgewehr 44, was a revolutionary new design that can be considered the first assault rifle. It combined the accuracy and stopping power of a rifle with the rate of fire and magazine capacity of a submachine gun. Intended to replace the Kar 98k, MP 40s, and G43s in service, although it never fully did. The Sturmgewehr 44 utilized a new cartridge, the 7.92 x 33 mm Kurz, which was in itself a shortened rifle round. The Sturmgewehr 44 is select fire with Semi and fully automatic. It's fed from 30-round detachable box magazines.''
|
* SPE_30Rnd_792x33
* SPE_30rnd_792x33_t
* SPE_30rnd_MUZZLE_FAKEMAG
|
|
* SPE_GER_stggunner
* SPE_GER_scout_SquadLead
* SPE_sturmtrooper_stggunner
* SPE_sturmtrooper_SquadLead
* SPE_GER_Scout_Unterofficer
* SPE_Sturmtrooper_Unterofficer
|-
|-
| [[File:Gear_MG42_X_ca.png|150px]]
| sSim
| SPE_MG42
|  
| ''MG 42''
|  
| ''Light Machine Gun<br />Caliber: 7.92x57 mm Mauser
 
The MG 42 was the result of an effort to produce an easier-to-manufacture and lighter machine gun for the German military. The allies nicknamed the MG 42 the buzzsaw due to the sound it made while firing at a high rate of fire. The MG 42 shares many characteristics with its predecessor, the MG 34, but is lighter and has a higher rate of fire. The MG 42 can only utilize the 50-round drum magazines in the light role. The MG 42 couldn't replace the MG 34 as a machine gun for tanks due to its barrel change procedure.''
|
* SPE_50Rnd_792x57
* SPE_50Rnd_792x57_SMK
* SPE_50Rnd_792x57_sS
* SPE_50Rnd_792x57_Tracer
|
|
|-
|-
| [[File:Gear_MG34_X_ca.png|150px]]
| enfWorkShort
| SPE_MG34
|  
| ''MG 34''
|  
| ''Light Machine Gun<br />Caliber: 7.92x57 mm Mauser
 
The MG 34 introduced a new concept, the universal machine gun. The MG 34 could be used as a light machine gun when fired from the bipod, a medium machine gun when mounted on a tripod for sustained fire, or mounted on vehicles on pintle mounts or in tanks as the coaxial machine gun. The MG 34 fires 7.92 x 57 mm Mauser rounds in non-disintegrating metal-linked belts. When used in the light role, it used a 50-round Gurttrommel, also known as a 'Belt Drum.'''
|
* SPE_50Rnd_792x57
* SPE_50Rnd_792x57_SMK
* SPE_50Rnd_792x57_sS
* SPE_50Rnd_792x57_Tracer
|
|
|-
|-
| [[File:Gear_M1919A4_X_ca.png|150px]]
| updAttPos
| SPE_M1919A4
|  
| ''M1919A4''
|  
| ''Machine Gun<br />Caliber: .30-06
 
The M1919 was the standard medium machine gun used by the US Army during World War II. It saw use as a medium machine gun in the A4 configuration and was later upgraded to operate as a light machine gun in the A6 configuration. It was also mounted on vehicles as hull machine guns, coaxial machine guns, and pintle mounts. The M1919 is chambered in 03-06 and fed from cloth belts. The A4 can be fired from a handheld position but isn't very effective unless mounted on a tripod. The A6 version can be fired from the shoulder or deployed on the bipod but can't be mounted on the tripod.''
|
* SPE_50Rnd_762x63
* SPE_50Rnd_762x63_M1
* SPE_50Rnd_762x63_M2_AP
* SPE_50Rnd_762x63_Tracer
* SPE_50rnd_MUZZLE_FAKEMAG
|
|
* SPE_FR_HMGunner
* SPE_US_HMGunner
* SPE_US_Rangers_HMGunner
|-
|-
| [[File:Gear_M1918A2_BAR_X_ca.png|150px]]
| oSo1AN
| SPE_M1918A2_BAR
|  
| ''M1918A2 BAR''
|  
| ''Automatic Rifle <br/>Caliber: .30-06
 
Although the weapon did see some action in World War I, the BAR didn't become standard issue in the US Army until 1938, when it was issued to squads as a portable light machine gun. The BAR is chambered in 30-06 and fed from 20 round box magazines. Bipod legs were provided, although troops found them somewhat cumbersome and unwieldy and occasionally removed them in the field. The BAR fulfilled US Army requirements but wasn't able to provide the sustained firepower of other light machine guns field by other nations at the time. The US doctrine allowed for this shortcoming with the increased firepower of the individual rifleman fielding semi-automatic rifles. The BAR is large and difficult to shoulder but more manageable compared to other LMGs.''
|
* SPE_20Rnd_762x63
* SPE_20Rnd_762x63_M1
* SPE_20Rnd_762x63_M2_AP
* SPE_20rnd_MUZZLE_FAKEMAG
|
* SPE_M1918A2_BAR_Handle
* SPE_M1918A2_BAR_Bipod
|
* SPE_US_Autorifleman
* SPE_US_Rangers_Autorifleman
* SPE_US_HBT44_Autorifleman
* SPE_US_Mgunner
* SPE_US_Rangers_Mgunner
* SPE_US_HBT44_MGunner
|-
|-
| [[File:Gear_FM_24_M29_X_ca.png|150px]]
| prpAMCf
| SPE_FM_24_M29
|  
| ''FM Mle. 1924 M29''
|  
| ''Automatic Rifle <br/>Caliber: 7.5x54 mm
 
After the First World War, the French army sought a replacement for the rapidly developed and produced Chauchat. With lessons learned from the Chauchat's development and the war, Lieutenant Colonel Reibel, with the backing of the Manufacture d'Armes de Châtellerault, proposed a weapon partially derived from the BAR. This weapon featured a new 7.5 mm cartridge, integrated bipod, and pistol grip and was fed from a top-mounted 25-round detachable box magazine. It featured two separate triggers, the front for semi-automatic fire and the rear for automatic fire. The new machine gun was accepted and adopted in 1924 as the Fusil-Mitrailleur Mle 1924, entering production in 1925. In 1929, problems with the new ammunition being too similar in dimension to the 7.92x57 Mauser led to the cartridge being modified to 7.5x54 mm, and re-barreled guns were renamed Fusil-Mitrailleur Mle 1924 M29, which continued to see service well into the 1960s.''
|
* SPE_25Rnd_75x54
* SPE_25Rnd_75x54_35P_AP
* SPE_25rnd_MUZZLE_FAKEMAG
|
|
* SPE_FFI_Autorifleman
* SPE_FR_Autorifleman
* SPE_FR_MGunner
|-
|-
| [[File:Gear_K98ZF39_X_ca.png|150px]]
| prpAMCSlt
| SPE_K98ZF39
|  
| ''Kar 98k (ZF39)''
|  
| ''Sniper Rifle<br />Caliber: 7.92x57 mm Mauser
 
Karabiner 98 Kurz, or Kar 98k, is a bolt action rifle that was used by the German army during World War II. It's chambered in 7.92 by 57 mm Mauser, also known as 8 mm Mauser. Fed from 5-round stripper clips. The Kar 98k can accept a bayonet or rifle grenade adaptor. Kar 98ks with higher-than-normal accuracy were fitted with a telescopic sight and used as sniper rifles.''
|
* SPE_5Rnd_792x57
* SPE_5Rnd_792x57_t
* SPE_5Rnd_792x57_sS
* SPE_5Rnd_792x57_SMK
* SPE_5rnd_MUZZLE_FAKEMAG
|
|
* SPE_FFI_Sniper
|-
|-
| [[File:Gear_M1903A4_Springfield_X_ca.png|150px]]
| prpSDM
| SPE_M1903A4_Springfield
|  
| ''M1903A4 Springfield''
|  
| ''Sniper Rifle<br />Caliber: .30-06
 
The M1903 Springfield was the standard issue US service rifle leading into World War II. The Springfield is a bolt action rifle chambered in 30-06 and fed by 5-round stripper clips. A bayonet can be mounted. It was used by United States Marines during the early conflicts before being replaced by the semi-automatic M1 Garand. The M1903A4 continued to see service as the standard issue sniper rifle during the remainder of World War II. The M1903A4 is equipped with a 2.75x telescopic sight.''
|
* SPE_5Rnd_762x63
* SPE_5Rnd_762x63_t
* SPE_5Rnd_762x63_M1
* SPE_5Rnd_762x63_M2_AP
* SPE_5rnd_MUZZLE_FAKEMAG
|
|
* SPE_FR_Sniper
* SPE_US_Sniper
* SPE_US_Rangers_sniper
* SPE_US_HBT44_Sniper
|-
|-
| [[File:Gear_Sten_Mk2_Suppressed_X_ca.png|150px]]
| locL
| SPE_Sten_Mk2_Suppressed
|  
| ''Sten Mk II (Suppressed)''
|  
| ''Submachine Gun<br />Caliber: 9x19 mm
 
The Sten, or Sten gun, is a widely fielded sub-machine gun utilized by the United Kingdom. It features a distinct nine o'clock mounted 32-round detachable box magazine. It's chambered in the 9x19 parabellum round. The MkII was easily produced with an extremely simplified design featuring a wire frame stock.''
|
* SPE_32Rnd_9x19_Sten
* SPE_32rnd_MUZZLE_FAKEMAG
|
|
* SPE_FFI_Saboteur
|-
|-
| [[File:Gear_M3_GreaseGun_X_ca.png|150px]]
| mapSeaAndNormalWork
| SPE_M3_GreaseGun_Suppressed
|  
| ''M3A1 Grease Gun''
|  
| ''Submachine Gun<br />Caliber: .45 ACP
 
The M3 Grease Gun began to replace the Thompson submachine guns during World War II. It shares the same .45 ACP round but fed from a different 30-round box magazine. The M3 Grease gun was the result of an effort to provide a replacement for the Thompson that was easier to manufacture. The M3 was nicknamed the `Grease Gun` or `Greaser` by troops in the field due to its resemblance to the mechanic's tool.''
|
* SPE_30Rnd_M3_GreaseGun_45ACP
* SPE_30Rnd_M3_GreaseGun_45ACP_t
* SPE_30rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M3_Suppressor_45acp
|
* SPE_FFI_Saboteur_M3A1
|-
|-
| [[File:Gear_K98_X_ca.png|150px]]
| mapObjectsPrepWork
| SPE_K98_Bayonet
|  
| ''Kar 98k''
|  
| ''Bolt-Action Rifle<br />Caliber: 7.92x57 mm Mauser
 
Karabiner 98 Kurz, or Kar 98k, is a bolt action rifle that was used by the German army during World War II. It's chambered in 7.92 by 57 mm Mauser, also known as 8 mm Mauser. Fed from 5-round stripper clips. The Kar 98k can accept a bayonet or rifle grenade adaptor. Kar 98ks with higher-than-normal accuracy were fitted with a telescopic sight and used as sniper rifles.''
|
* SPE_5Rnd_792x57
* SPE_5Rnd_792x57_t
* SPE_5Rnd_792x57_sS
* SPE_5Rnd_792x57_SMK
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_K98_Bayo
* SPE_ACC_GW_SB_Empty
|
|-
|-
| [[File:Gear_K98_X_ca.png|150px]]
| drwIdxPrm
| SPE_K98_GW
|  
| ''Kar 98k''
|  
| ''Bolt-Action Rifle<br />Caliber: 7.92x57 mm Mauser
 
Karabiner 98 Kurz, or Kar 98k, is a bolt action rifle that was used by the German army during World War II. It's chambered in 7.92 by 57 mm Mauser, also known as 8 mm Mauser. Fed from 5-round stripper clips. The Kar 98k can accept a bayonet or rifle grenade adaptor. Kar 98ks with higher-than-normal accuracy were fitted with a telescopic sight and used as sniper rifles.''
|
* SPE_5Rnd_792x57
* SPE_5Rnd_792x57_t
* SPE_5Rnd_792x57_sS
* SPE_5Rnd_792x57_SMK
* SPE_1Rnd_G_SPRGR_30
* SPE_1Rnd_G_PZGR_30
* SPE_1Rnd_G_PZGR_40
* SPE_1Rnd_G_NBGR_42
* SPE_1Rnd_G_FLGR
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_K98_Bayo
* SPE_ACC_GW_SB_Empty
|
* SPE_GER_lehr_grenadier
* SPE_GER_ober_grenadier
* SPE_GER_scout_ober_grenadier
|-
|-
| [[File:Gear_K98_Late_X_ca.png|150px]]
| oSo3
| SPE_K98_Late
|  
| ''Kar 98k (1944)''
|  
| ''Bolt-Action Rifle<br />Caliber: 7.92x57 mm Mauser
 
Karabiner 98 Kurz, or Kar 98k, is a bolt action rifle that was used by the German army during World War II. It's chambered in 7.92 by 57 mm Mauser, also known as 8 mm Mauser. Fed from 5-round stripper clips. The Kar 98k can accept a bayonet or rifle grenade adaptor. Kar 98ks with higher-than-normal accuracy were fitted with a telescopic sight and used as sniper rifles.''
|
* SPE_5Rnd_792x57
* SPE_5Rnd_792x57_t
* SPE_5Rnd_792x57_sS
* SPE_5Rnd_792x57_SMK
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_K98_Bayo
* SPE_ACC_GW_SB_Empty
|
* SPE_FFI_Tankhunter
* SPE_GER_lehr_LAT_Rifleman
* SPE_GER_LAT_Rifleman
* SPE_GER_LAT_30m_Rifleman
* SPE_GER_LAT_Klein_Rifleman
* SPE_sturmtrooper_LAT_rifleman
* SPE_sturmtrooper_LAT_30m_Rifleman
* SPE_sturmtrooper_LAT_Klein_Rifleman
|-
|-
| [[File:Gear_K98_Late_X_ca.png|150px]]
| lsCVB
| SPE_K98_Late_Bayonet
|  
| ''Kar 98k (1944)''
|  
| ''Bolt-Action Rifle<br />Caliber: 7.92x57 mm Mauser
 
Karabiner 98 Kurz, or Kar 98k, is a bolt action rifle that was used by the German army during World War II. It's chambered in 7.92 by 57 mm Mauser, also known as 8 mm Mauser. Fed from 5-round stripper clips. The Kar 98k can accept a bayonet or rifle grenade adaptor. Kar 98ks with higher-than-normal accuracy were fitted with a telescopic sight and used as sniper rifles.''
|
* SPE_5Rnd_792x57
* SPE_5Rnd_792x57_t
* SPE_5Rnd_792x57_sS
* SPE_5Rnd_792x57_SMK
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_K98_Bayo
* SPE_ACC_GW_SB_Empty
|
|-
|-
| [[File:Gear_K98_Late_X_ca.png|150px]]
| oSo5
| SPE_K98_Late_GW
|  
| ''Kar 98k (1944)''
|  
| ''Bolt-Action Rifle<br />Caliber: 7.92x57 mm Mauser
 
Karabiner 98 Kurz, or Kar 98k, is a bolt action rifle that was used by the German army during World War II. It's chambered in 7.92 by 57 mm Mauser, also known as 8 mm Mauser. Fed from 5-round stripper clips. The Kar 98k can accept a bayonet or rifle grenade adaptor. Kar 98ks with higher-than-normal accuracy were fitted with a telescopic sight and used as sniper rifles.''
|
* SPE_5Rnd_792x57
* SPE_5Rnd_792x57_t
* SPE_5Rnd_792x57_sS
* SPE_5Rnd_792x57_SMK
* SPE_1Rnd_G_SPRGR_30
* SPE_1Rnd_G_PZGR_30
* SPE_1Rnd_G_PZGR_40
* SPE_1Rnd_G_NBGR_42
* SPE_1Rnd_G_FLGR
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_K98_Bayo
* SPE_ACC_GW_SB_Empty
|
* SPE_FFI_Grenadier
* SPE_sturmtrooper_ober_grenadier
|-
|-
| [[File:Gear_M1903A3_Springfield_X_ca.png|150px]]
| oSo2CL
| SPE_M1903A3_Springfield_M1_Bayonet
|  
| ''M1903A3 Springfield''
|  
| ''Bolt-Action Rifle<br />Caliber: .30-06
 
The M1903 Springfield was the standard issue US service rifle leading into World War II. The Springfield is a bolt action rifle chambered in 30-06 and fed by 5-round stripper clips. A bayonet can be mounted. It was used by United States Marines during the early conflicts before being replaced by the semi-automatic M1 Garand. The M1903A4 continued to see service as the standard issue sniper rifle during the remainder of World War II. The M1903A4 is equipped with a 2.75x telescopic sight.''
|
* SPE_5Rnd_762x63
* SPE_5Rnd_762x63_t
* SPE_5Rnd_762x63_M1
* SPE_5Rnd_762x63_M2_AP
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M1_Bayo
* SPE_ACC_GL_M1
* SPE_ACC_M1905_Bayo
|
|-
|-
| [[File:Gear_M1903A3_Springfield_X_ca.png|150px]]
| oSo1AF
| SPE_M1903A3_Springfield_M1905_Bayonet
|  
| ''M1903A3 Springfield''
|  
| ''Bolt-Action Rifle<br />Caliber: .30-06
 
The M1903 Springfield was the standard issue US service rifle leading into World War II. The Springfield is a bolt action rifle chambered in 30-06 and fed by 5-round stripper clips. A bayonet can be mounted. It was used by United States Marines during the early conflicts before being replaced by the semi-automatic M1 Garand. The M1903A4 continued to see service as the standard issue sniper rifle during the remainder of World War II. The M1903A4 is equipped with a 2.75x telescopic sight.''
|
* SPE_5Rnd_762x63
* SPE_5Rnd_762x63_t
* SPE_5Rnd_762x63_M1
* SPE_5Rnd_762x63_M2_AP
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M1_Bayo
* SPE_ACC_GL_M1
* SPE_ACC_M1905_Bayo
|
|-
|-
| [[File:Gear_M1903A3_Springfield_X_ca.png|150px]]
| Visualize
| SPE_M1903A3_Springfield_M1_GL
|  
| ''M1903A3 Springfield''
|  
| ''Bolt-Action Rifle<br />Caliber: .30-06
 
The M1903 Springfield was the standard issue US service rifle leading into World War II. The Springfield is a bolt action rifle chambered in 30-06 and fed by 5-round stripper clips. A bayonet can be mounted. It was used by United States Marines during the early conflicts before being replaced by the semi-automatic M1 Garand. The M1903A4 continued to see service as the standard issue sniper rifle during the remainder of World War II. The M1903A4 is equipped with a 2.75x telescopic sight.''
|
* SPE_5Rnd_762x63
* SPE_5Rnd_762x63_t
* SPE_5Rnd_762x63_M1
* SPE_5Rnd_762x63_M2_AP
* SPE_1Rnd_G_Mk2
* SPE_1Rnd_G_M9A1
* SPE_1Rnd_G_M2_AN_M14
* SPE_1Rnd_G_M2_ANM8
* SPE_1Rnd_G_M2_M18_Red
* SPE_1Rnd_G_M2_M18_Green
* SPE_1Rnd_G_M2_M18_Yellow
* SPE_1Rnd_G_M2_M18_Violet
* SPE_1Rnd_G_M17A1
* SPE_1Rnd_G_M19A1
* SPE_1Rnd_G_M21A1
* SPE_1Rnd_G_M51A1
* SPE_5rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M1_Bayo
* SPE_ACC_GL_M1
* SPE_ACC_M1905_Bayo
|
* SPE_US_Grenadier
|-
|-
| [[File:Gear_M1_Garand_X_ca.png|150px]]
| visul
| SPE_M1_Garand_Bayonet
|  
| ''M1 Garand''
|  
| ''Semi-Automatic Rifle<br />Caliber: .30-06
 
The M1 Garand is the standard issue service rifle of the US Army. Adopted into service in 1936, the M1 replaced the bolt action M1903 Springfield as the US service rifle. The M1 Garand is a .30-06 caliber semi-automatic rifle fed from 8-round en-bloc clips. The clips are ejected automatically when empty creating a distinctive 'ping' noise. The M1 10-inch bayonet can be fitted on the Garand. Alternatively, the M7 grenade launcher adapter can be mounted to allow the rifle to fire rifle-grenades.''
|
* SPE_8Rnd_762x63
* SPE_8Rnd_762x63_t
* SPE_8Rnd_762x63_M1
* SPE_8Rnd_762x63_M2_AP
* SPE_8rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M1_Bayo
* SPE_ACC_GL_M7
* SPE_ACC_M1905_Bayo
|
|-
|-
| [[File:Gear_M1_Garand_X_ca.png|150px]]
| txMLo
| SPE_M1_Garand_M1905_Bayonet
|  
| ''M1 Garand''
|  
| ''Semi-Automatic Rifle<br />Caliber: .30-06
 
The M1 Garand is the standard issue service rifle of the US Army. Adopted into service in 1936, the M1 replaced the bolt action M1903 Springfield as the US service rifle. The M1 Garand is a .30-06 caliber semi-automatic rifle fed from 8-round en-bloc clips. The clips are ejected automatically when empty creating a distinctive 'ping' noise. The M1 10-inch bayonet can be fitted on the Garand. Alternatively, the M7 grenade launcher adapter can be mounted to allow the rifle to fire rifle-grenades.''
|
* SPE_8Rnd_762x63
* SPE_8Rnd_762x63_t
* SPE_8Rnd_762x63_M1
* SPE_8Rnd_762x63_M2_AP
* SPE_8rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M1_Bayo
* SPE_ACC_GL_M7
* SPE_ACC_M1905_Bayo
|
|-
|-
| [[File:Gear_M1_Garand_X_ca.png|150px]]
| oSo2Srt
| SPE_M1_Garand_M7
|  
| ''M1 Garand''
|  
| ''Semi-Automatic Rifle<br />Caliber: .30-06
 
The M1 Garand is the standard issue service rifle of the US Army. Adopted into service in 1936, the M1 replaced the bolt action M1903 Springfield as the US service rifle. The M1 Garand is a .30-06 caliber semi-automatic rifle fed from 8-round en-bloc clips. The clips are ejected automatically when empty creating a distinctive 'ping' noise. The M1 10-inch bayonet can be fitted on the Garand. Alternatively, the M7 grenade launcher adapter can be mounted to allow the rifle to fire rifle-grenades.''
|
* SPE_8Rnd_762x63
* SPE_8Rnd_762x63_t
* SPE_8Rnd_762x63_M1
* SPE_8Rnd_762x63_M2_AP
* SPE_1Rnd_G_Mk2
* SPE_1Rnd_G_M9A1
* SPE_1Rnd_G_M2_AN_M14
* SPE_1Rnd_G_M2_ANM8
* SPE_1Rnd_G_M2_M18_Red
* SPE_1Rnd_G_M2_M18_Green
* SPE_1Rnd_G_M2_M18_Yellow
* SPE_1Rnd_G_M2_M18_Violet
* SPE_1Rnd_G_M17A1
* SPE_1Rnd_G_M19A1
* SPE_1Rnd_G_M21A1
* SPE_1Rnd_G_M51A1
* SPE_8rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_M1_Bayo
* SPE_ACC_GL_M7
* SPE_ACC_M1905_Bayo
|
* SPE_US_Rangers_grenadier
* SPE_US_HBT44_Grenadier
|-
|-
| [[File:Gear_M1_Carbine_X_ca.png|150px]]
| oSoSdw
| SPE_M1_Carbine_M8
|  
| ''M1 Carbine''
|  
| ''Semi-Automatic Rifle<br />Caliber: .30 Carbine
 
The M1 Carbine is a personal defense weapon that was standard issue to support personnel in the US Army. Adopted into use in 1941 to supplement the M1 Garand for troops not directly involved in front-line combat, such as radiomen, bazooka gunners, mortar men, or truck drivers. The M1 Carbine is chambered in .30 Carbine and fed from a 15-round detachable box magazine. It's semi-automatic only and lacks the stopping power and range of full-sized rifle rounds, although it's smaller, lighter, and easier to handle. In order to easily exit aircraft, US paratroopers were issued an M1A1 Carbine with a folding stock.''
|
* SPE_15Rnd_762x33
* SPE_15Rnd_762x33_t
* SPE_1Rnd_G_Mk2
* SPE_1Rnd_G_M9A1
* SPE_1Rnd_G_M2_AN_M14
* SPE_1Rnd_G_M2_ANM8
* SPE_1Rnd_G_M2_M18_Red
* SPE_1Rnd_G_M2_M18_Green
* SPE_1Rnd_G_M2_M18_Yellow
* SPE_1Rnd_G_M2_M18_Violet
* SPE_1Rnd_G_M17A1
* SPE_1Rnd_G_M19A1
* SPE_1Rnd_G_M21A1
* SPE_1Rnd_G_M51A1
* SPE_32rnd_MUZZLE_FAKEMAG
|
* SPE_ACC_GL_M8
|
* SPE_FR_Grenadier
|-
|-
| [[File:Gear_M2_Flamethrower_X_ca.png|150px]]
| prpAMCbsi
| SPE_M2_Flamethrower
|  
| ''M2 Flamethrower''
|  
| ''Flamethrower<br />Caliber: Napalm
 
The M2 Flamethrower was an American man-portable backpack flamethrower that was used in World War II. The flamethrower consists of a handheld nozzle, a backpack fuel tank, and fuel inside the tank. The fuel flows from the tank through the hose through the nozzle and is propelled 20-30 m. An igniter in the wand sets the fuel on fire as it leaves the wand. The stream of fire causes significant damage to infantry and can burn out fortified positions.''
|
* SPE_M2_Flamethrower_Mag
* SPE_Flamethrower_Mag_Empty
|
|
* SPE_FR_Flamethrower_Operator
* SPE_US_Flamethrower_Operator
* SPE_US_Rangers_Flamethrower_Operator
* SPE_US_HBT44_Flamethrower_Operator
|-
|-
| [[File:Gear_Flammenwerfer41_X_ca.png|150px]]
| prpAMCp
| SPE_Flammenwerfer41
|  
| ''Flammenwerfer 41''
|  
| ''Flamethrower<br />Caliber: Flammöl 19
 
The Flammenwerfer41, or FW41, was the standard flamethrower used by Germany during the Second World War. It was intended to replace the older, heavier FW35, but both were used concurrently up until the end of the war. The flamethrower consists of a handheld nozzle with a hydrogen torch attached above it, with a hose connecting to the propellant and fuel tanks carried on the back of the soldier. The hydrogen torch included a small battery-powered igniter system and would ignite the stream of propellant and fuel.<br /><br />Later versions of the FW41 removed the hydrogen torch and instead opted for a 'cartridge' system for fuel ignition similar to that of the Soviet and American flamethrowers. The stream of fire goes out to around 30-40 m and causes significant damage to infantry and can burn out fortified positions.''
|
* SPE_Flammenwerfer41_Mag
* SPE_Flamethrower_Mag_Empty
|
|
* SPE_GER_Flamethrower_Operator
* SPE_sturmtrooper_Flamethrower_Operator
|-
|-
| [[File:Gear_M1919A6_X_ca.png|150px]]
| Render
| SPE_M1919A6
|  
| ''M1919A6''
|  
| ''Light Machine Gun<br />Caliber: .30-06
 
The M1919 was the standard medium machine gun used by the US Army during World War II. It saw use as a medium machine gun in the A4 configuration and was later upgraded to operate as a light machine gun in the A6 configuration. It was also mounted on vehicles as hull machine guns, coaxial machine guns, and pintle mounts. The M1919 is chambered in 03-06 and fed from cloth belts. The A4 can be fired from a handheld position but isn't very effective unless mounted on a tripod. The A6 version can be fired from the shoulder or deployed on the bipod but can't be mounted on the tripod.''
|
* SPE_50Rnd_762x63
* SPE_50Rnd_762x63_M1
* SPE_50Rnd_762x63_M2_AP
* SPE_50Rnd_762x63_Tracer
* SPE_32rnd_MUZZLE_FAKEMAG
|
|
* SPE_US_HBT44_HMGunner
|-
|-
| [[File:Gear_Fusil_Mle_208_12_X_ca.png|150px]]
| bgD3D
| SPE_Fusil_Mle_208_12
|  
| ''Fusil Mle. 208 12G''
|  
| ''Side-by-side Shotgun <br/>Caliber: 12x65 mm
 
The Fusil Mle. 208 'Robust' is a double-barrel shotgun that traces its lineage to an extremely popular design of French long guns that have been built since 1913. It was available in many different calibers, sizes, and fitting arrangements, and various versions of it continued to be made well into the 1980s.''
|
* SPE_2Rnd_12x65_Pellets
* SPE_2Rnd_12x65_Slug
* SPE_2Rnd_12x65_No4_Buck
|
|
* SPE_FFI_Militia_Shotgun
|-
|-
| [[File:Gear_Fusil_Mle_208_12_Sawedoff_X_ca.png|150px]]
| stpTxtVS
| SPE_Fusil_Mle_208_12_Sawedoff
|  
| ''Fusil Mle. 208 12G (Sawed-Off)''
|  
| ''Side-by-side Shotgun <br/>Caliber: 12x65 mm
 
The Fusil Mle. 208 'Robust' is a double-barrel shotgun that traces its lineage to an extremely popular design of French long guns that have been built since 1913. It was available in many different calibers, sizes, and fitting arrangements, and various versions of it continued to be made well into the 1980s.''
|
* SPE_2Rnd_12x65_Pellets
* SPE_2Rnd_12x65_Slug
* SPE_2Rnd_12x65_No4_Buck
|
|
* SPE_FFI_Sapper_Mle208
|-
|-
| ppHBAOPlus
|
|
|}
|}
<sqf>
private _ctrlTV = ctrlparent (_this select 0) displayCtrl 101;
private _export = "{| class=""wikitable sortable"""  + endl + "|-" + endl;
_export = _export + "! Technical Name !! Descriptive Name !! Description";
private _fnc_logChilden =
{
    params ["_path"];
    for "_i" from 0 to ((_ctrlTV tvCount _path) - 1) do
    {
        private _text = _ctrlTV tvText (_path + [_i]);
        _text = _text splitString " " select 0;
        if !(_text in _export) then
        {
            _export = _export + endl + "|-" + endl + "| " + _text + endl + "| " + endl + "| ";
        };
        if (_ctrlTV tvCount (_path + [_i]) > 0 ) then
        {
            [_path + [_i]] call _fnc_logChilden;
        };
    };
};
[[]] call _fnc_logChilden;
copyToClipboard (_export + endl + "|}" + endl);
</sqf>
== See Also ==
* [[Code Optimisation]]
* [[Mission Optimisation]]
[[Category:Arma Scripting Tutorials]]

Latest revision as of 18:23, 4 November 2024

If you have ever wondered why you scenario is running so badly, performance profiling is the way to find it out. It allows you to find bottlenecks and slow code by capturing a "slow" frame. The captured data can then be viewed and analysed.

Getting the correct Version

Profiling is enabled in the following Arma 3 versions

  • arma3profiling_x64.exe - Part of the Performance Profiling Build
  • arma3diag_x64.exe - Part of the Development Build

Read Arma_3: Steam Branches for a guide on how to access these branches.

It is recommended to use the Performance Profiling Build (arma3profiling_x64.exe) for performance profiling because:
  • Has tools that might not make it into development build
  • Has all the profiling related commands that arma3diag_x64.exe has
  • Its performance is closer to the default arma3_x64.exe

Frame Capturing

There are several commands that allow you to capture a frame.

In most cases you do not want to capture any or all frames, you just want to capture "slow" frames. A slow frame is a frame that takes longer than the average frame and slows down the game.

How to Use

  1. Run a mission
  2. Execute a scripted command diag_captureSlowFrame ["total", 0.3]; using any means (Debug Console, mission radio trigger...)
  3. Once a slow frame is detected, a window will open
  4. In the window you will be able to browse a lot of performance-related data, which can be interesting
  5. To export the gathered information for sharing with others:
    1. Select Main Thread (if not selected yet)
    2. Press the Copy button
    3. Open an external text editor
    4. Paste the text into a new file
    5. Save the file

Capture Frame UI

arma3-capture frame ui overview.png

  1. 🚧
    TODO: this must be updated.
  2. 🚧
    TODO: this must be updated.
  3. 🚧
    TODO: this must be updated.
  4. 🚧
    TODO: this must be updated.
  5. 🚧
    TODO: this must be updated.
  6. 🚧
    TODO: this must be updated.
  7. 🚧
    TODO: this must be updated.
  8. 🚧
    TODO: this must be updated.
  9. 🚧
    TODO: this must be updated.

External Viewer

diag_captureFrame sample output with custom subtree

Creating Your Own Subtree

When Profiling Per-Frame Eventhandlers (PFH), diag_captureFrame only shows one blob called siFEH that contains all PFH's so you can't see what part of that is caused by your PFH.
You can create your own subtree inside siFEH by wrapping your function call inside a isNil CODE statement like this:
Turn your old call which may look like this:

addMissionEventHandler ["EachFrame", { call myPFHFunction }];

Into something like this:

addMissionEventHandler ["EachFrame", { isNil { call myPFHFunction } // isNil creates the subtree }];

Now when you run diag_captureFrame inside of siPFH you will have a subtree called gsEva and behind that you can see the first line of code inside the isNil statement.
It will only show a part of the first line of that code so you should put something descriptive into the isNil statement.
You can use the same to create a subtree for any function you like. This will also work inside Scheduled (spawned) scripts.
But using this method to "subtree" a function with return values requires a little bit of trickery to get the return value out.


Notes

  • 0.3 is a time in second used to determine what duration of a frame you consider abnormal, and first such frame will be captured.
  • 0.3 is definitely something you should not see in a normal game.
  • If you do not capture any frames with 0.3, try lowering it to 0.2 or 0.1.
  • If it triggers too early, before the main slowdown happens, increase it to a higher value, e.g. 1.0.

Scopes

Technical Name Descriptive Name Description
Main
total
fsPHa
winMs
dlcSim
steamCbk
input
wSimu
docSim
wSimDisp
MFDManager
wDisp
EventPrcs
gsEva
gbFrm
memLo
siScr
scrVM
wsSet
sLand
simSW
cLWObj
oTemp
FPres
waitSnd
job
sound
ssAdv
snCmt
play
ARTCpl
rendr
drwVi
txHLi
txPMM
dsr2t
wPrep
dPr
fmiRun
fmiWait
fmiMDrw
fmiSIns
wPrepFtr
clPrp
oPrep
sceAC
oSplt
sceACTA
sceACPrx
lodUL
PrxObj
manAn
ppdOT
flProx
PrxObjTransport
oSoSL
oSoJE
oSoJE1
oSoJE2
oSo1OFOv
oSo1ON
sceCLsHSH
prpAMCt
oSoJEw
pDrwFNP
oSoSLu
lPGCl
pdDrw
lDGnd
lGSMM
recCB
mtPmj
cuDrw
prepT
drwCB
oPasD
o1Drw
lckDnBf
prpTx
inst
stpSctnTL
o1ShV
scSVI
oPas3
sssmC
sbDrw
aniMt
ppSSSM
drwROM
drwIn
wDraw
lDPGT
oSDrw
oPasO
lDSky
swRdr
ppSWDD
swRdGeom
swRdGeomVB
swFillV
oPasA
ppShrpn
lDWat
oPas2
o2Drw
oPas5
o5Drw
EDraw3D
MEventPrcs
cLGSY
stpAll
stpCB
stpTxtCS
stpUAVsCS
ppHDRCL
ppGSB
ppDOF
ppGlwNw
ppGLu
stpCBUpd
ppQWt
ppCMAA
hudDr
3DEN_UI_OnDraw
3DEN_PrepareDraw
clObL
3DEN_Drawing
stpTxtGS
txt2D
mapDr
mapSeaAndNormal
mapPM
lndPM
MapObjectsPrepTask
mapSeaAndNormalDraw
mapCntDraw
mapObjectsDraw
mapForestShape
mapGrid
drwFn
dtTot
wFram
3dSwp
preLd
preLV
actObjPrld
hashChk
sSim
enfWorkShort
updAttPos
oSo1AN
prpAMCf
prpAMCSlt
prpSDM
locL
mapSeaAndNormalWork
mapObjectsPrepWork
drwIdxPrm
oSo3
lsCVB
oSo5
oSo2CL
oSo1AF
Visualize
visul
txMLo
oSo2Srt
oSoSdw
prpAMCbsi
prpAMCp
Render
bgD3D
stpTxtVS
ppHBAOPlus

private _ctrlTV = ctrlparent (_this select 0) displayCtrl 101; private _export = "{| class=""wikitable sortable""" + endl + "|-" + endl; _export = _export + "! Technical Name !! Descriptive Name !! Description"; private _fnc_logChilden = { params ["_path"]; for "_i" from 0 to ((_ctrlTV tvCount _path) - 1) do { private _text = _ctrlTV tvText (_path + [_i]); _text = _text splitString " " select 0; if !(_text in _export) then { _export = _export + endl + "|-" + endl + "| " + _text + endl + "| " + endl + "| "; }; if (_ctrlTV tvCount (_path + [_i]) > 0 ) then { [_path + [_i]] call _fnc_logChilden; }; }; }; [[]] call _fnc_logChilden; copyToClipboard (_export + endl + "|}" + endl);

See Also