Weapons Import Guide
Rifles, pistols, launchers, and attachments
- LOD
Resolution, Geometry, Memory, Fire Geometry, and Hit Points LOD types
- LOD Resolutions
Numeric LOD identifiers used by the engine (1e13, 1e15, etc.)
- Model Config
model.cfg — cfgModels, cfgSkeletons, Animations, and AnimationSources
- CfgVehicles Config Reference
Token reference for CfgVehicles parameters
- Creating an Addon
config.cpp, CfgPatches, and Addon Builder workflow
- Addon Builder
Packing, binarize, and file copy options
- Arma 3 Vehicle Configuration
Index of all vehicle config wiki pages
- Arma 3: Sound (category)
CfgSoundCurves, Shaders, Sets, Controllers, and processing types
- Sound: Sound Curves
volumeCurve / rangeCurve attenuation — relative 0–1 or absolute meters
- Sound: cfgSoundShaders
samples[], range, rangeCurve — closest/farthest audio layers
- Sound: SoundSet
Mixes SoundShaders; soundSetShot[] / vehicle SoundSets hook here
- Arma 3: CfgWeapons Weapons
Weapon class hierarchy and inheritance list
- Weapon Config Guidelines
Proxies, WeaponSlotsInfo, reload anims, and accessories
- CfgWeapons Config Reference
Full CfgWeapons token reference
- CfgMagazines Config Reference
Magazine and ammo definitions (separate from CfgWeapons in Arma 3)
- Sound: SoundControllers
rpm, camPos, engineOn — drive volume/frequency in playTrigger expressions
Required Mods & Dependencies
A3_Weapons_F (Base Game)
Vanilla weapons addon for weapon inheritance and attachment configs.
Included with Arma 3; use as parent class in CfgWeapons.
RHS (USAF / AFRF / GREF / SAF)
OptionalOptional but common dependency when retexturing or extending RHS assets.
Subscribe to the RHS packs your project extends; list in requiredAddons[].
CUP Weapons / Vehicles / Units
OptionalCommunity Upgrade Project — optional base for CUP-compatible retextures.
Step-by-Step Process
Install Arma 3 Tools
Install Arma 3 Tools from Steam. Object Builder, TexView 2, and Addon Builder are required for the full pipeline.
- Steam → Library → Tools → Arma 3 Tools → Install
- Verify Object Builder opens and can load .p3d files
- Addon Builder packs and binarizes — formerly known as BinPBO
Create Mod Folder Structure
Organize as @YourMod/addons/your_addon/. config.cpp must sit at the addon folder root.
- Create @YourMod/addons/ — packed .pbo files go here
- Each addon source folder needs its own config.cpp at root
- All model/texture paths use your addon prefix (e.g. mymod\data\texture.paa)
- model.cfg lives alongside the .p3d (see Model Config wiki)
Configure Arma 3 Launcher
Enable your local mod and every mod listed in requiredAddons[] before testing.
- Launcher → Mods → Add local mod → select @YourMod
- Enable CBA_A3 and all CfgPatches requiredAddons[] entries
- After each pack, restart the game or reload to pick up PBO changes
Plan LODs & Selections
Before modelling, plan every LOD the asset needs. LOD resolution numbers only determine sort order in Arma 3 — not view distance.
- Resolution LODs (0, 1, 2…): visual mesh — aim for ~50% triangle reduction per step
- Geometry (1×1e13): collision — required for physics interaction
- Geometry Phys (4×1e13): PhysX convex components for vehicles
- Memory (1×1e15): axes, memory points, proxies, and animation pivots
- View Geometry (6×1e15) & Fire Geometry (7×1e15): line-of-sight and ballistics
- Hit Points (5×1e15): vertices for damage sphere placement on vehicles
- Land Contact (2×1e15): ground contact points for placement
Proxied sub-models (turrets, weapons) switch resolution LOD independently of the parent
If Geometry LOD is missing, named properties fall back to the first resolution LOD
Model & Export to P3D
Build meshes in Blender/3ds Max, export via Object Builder. 1 unit = 1 metre in Arma.
- Triangulate before export; check face normals and UV seams
- Named selections for hiddenSelections[], hitpoints, and glass
- Memory LOD: place all axes and memory points here (not in resolution LODs)
- Validate each LOD in Object Builder before moving to config work
Write model.cfg
model.cfg links the P3D to cfgModels — sections, skeleton, and procedural animations. It takes precedence over config.cpp animation defs when both exist.
- cfgModels: class name matches model filename; define sections[] and skeletonName
- cfgSkeletons: skeletonBones[] parent→child bone hierarchy for skinning
- Animations: type (rotation, translation, hide), source controller, selection, axis
- Vehicle wheels use source="wheel"; dampers use source="damper" with offset0/offset1 ±0.5
- Weapons: reloadMagazine hide/unhideValue, hasOptics for folding sights, ammoRandom for muzzle flash rotation
- config.cpp AnimationSources (designer) maps user actions to model.cfg Animations (artist)
Several model.cfg files can chain via inheritance (folder model.cfg → vehicle model.cfg)
Damper axis length should match the moveable suspension travel
Convert Textures to PAA
Arma requires .paa textures. Convert PNG/TGA with TexView 2.
- Power-of-two sizes: 256, 512, 1024, 2048
- Suffixes: _co (colour), _no (normal), _as (ambient shadow), _smdi (specular)
- hiddenSelectionsMaterials[] paths must match rvmat and PAA locations
Write config.cpp
CfgPatches is mandatory. Token names in CfgVehicles/CfgWeapons are context-specific — always check the reference for your class.
- CfgPatches: units[], weapons[], requiredAddons[], requiredVersion
- CfgVehicles covers soldiers (Man), land/air/sea vehicles, backpacks, and statics
- CfgWeapons holds guns/launchers; CfgMagazines holds ammo (separate since Arma 3)
- CfgWeapons Items/Equipment/Glasses for NVGs, headgear, and facewear
- scope = 2 for editor visibility; inherit from the closest vanilla parent
Pack with Addon Builder
Binarize converts configs and embeds model.cfg. Non-.cpp files must be listed to copy.
- Source: addon folder containing config.cpp
- Destination: @YourMod/addons/
- Enable Binarize — catches config syntax errors during pack
- Copy list: *.p3d;*.paa;*.rvmat;*.ogg;*.wss;*.jpg;*.png (as needed)
- Project path should match source path — setting P:\ binarizes the entire drive
Test In-Game & Diagnostics
Verify in Eden Editor. Use BI diagnostics for hitpoint spheres and PhysX on vehicles.
- Check %localappdata%\Arma 3\*.rpt for binarize and runtime errors
- Vehicles: run hitpoint diagnostics to visualize radius spheres vs Fire Geometry
- Cars: epevehicle diag mode helps tune suspension and gearbox
- Test all crew positions, damage states, and wreck transition
Attachment Proxies & Memory Points
Slotable accessories require proxy points on the weapon model (BI Weapon Config Guidelines).
- MUZZLE proxy: \A3\data_f\proxies\weapon_slots\MUZZLE
- TOP (optics): \A3\data_f\proxies\weapon_slots\TOP
- SIDE (pointer/flashlight): \A3\data_f\proxies\weapon_slots\SIDE
- UNDERBARREL (bipod): \A3\data_f_mark\proxies\weapon_slots\UNDERBARREL
- Override per-weapon via WeaponSlotsInfo >> SlotName >> linkProxy
- Iron sights: ForeSight/BackSight selections with ForeSight_axis/BackSight_axis in Memory LOD
- Muzzle: zasleh selection, zaslehPoint memory point for flash origin
WeaponSlotsInfo & CfgMagazines
Arma 3 splits weapons and magazines. WeaponSlotsInfo defines inventory slots and compatible attachments.
- class WeaponSlotsInfo { mass; allowedSlots[]; class MuzzleSlot/CowsSlot/PointerSlot }
- allowedSlots[]: 701=vest, 801=uniform, 901=backpack
- compatibleItems[] lists attachable class names per slot
- Define magazines in CfgMagazines — not in CfgWeapons (OFP-style is deprecated)
- Suppressors: class ItemCore with ItemInfo >> MagazineCoef/AmmoCoef multipliers
- sounds[] = {StandardSound, SilencedSound}; soundTypeIndex selects which plays
Reload Animations & model.cfg
reloadAction can be set on weapon and/or magazine. model.cfg drives magazine hide/show timing.
- reloadAction on CfgWeapons — default reload gesture for that weapon
- Magazine reloadAction overrides weapon — enables different reloads per mag (e.g. UGL)
- model.cfg: magazine_hide with hideValue/unhideValue for asymmetric reload timing
- Optional magazine translation animation before hide for smoother reload
- Foldable sights: BackSight_optic rotation driven by hasOptics controller
- zeroing1/zeroing2 controllers sync UGL collimator to discreteDistance[] index
Weapon SoundSets & Muzzle Location
Arma 3 uses CfgSoundShaders → CfgSoundSets → soundSetShot[] on weapon modes. Audio emits from the muzzle memory point.
- Layer shots: close / mid / distant SoundShaders with different range + rangeCurve[]
- CfgSoundSets mixes shaders; volumeCurve scales the submix (use CfgSoundCurves or inline {{dist, vol}} pairs)
- class Single: soundSetShot[] = {"My_Shot_SoundSet"}; — inherited from parent weapon mode
- soundSetShotExt[] adds tail/reflection processing types for exterior shots
- Muzzle origin: zasleh selection + zaslehPoint memory point on weapon P3D (Weapon Config Guidelines)
- Suppressors: alternate SoundSet + SilencedSound class; soundTypeIndex selects array entry in sounds[]
- rangeCurve X values ascending; 0–1 = relative to shader range, or absolute meters up to range
Fire Modes (modes[] & burst)
CfgWeapons modes[] defines selectable fire patterns — FullAuto, burst classes, Manual/Single. Vehicle turrets use modes from weapons[] classes.
- modes[] = {"FullAuto","closeBurst","manual"} — names must match nested class names
- burst = N on burst modes — rounds per trigger; reloadTime = seconds between rounds in burst
- Autocannon: inherit closeBurst/mediumBurst/longBurst names from autocannon_30mm parent
- LMG: Manual (semi), Burst (6 rnd), FullAuto — see LMG_Mk200_F on CfgWeapons Weapons wiki
- Tank guns: Single only — AP vs HE via magazine scroll, not fire mode key
- Library template: weapon-firemodes-reference — copy-paste patterns for each weapon type