AmidKnight

Weapons Import Guide

Rifles, pistols, launchers, and attachments

Create Checklist

Required Mods & Dependencies

CBA_A3 (Community Base Addons)

Foundation library used by most modern Arma 3 mods. Required for scripted features, keybinds, and compatibility macros.

Subscribe on Steam Workshop, enable in Arma 3 Launcher before your mod.

ACE3

Optional

Advanced Combat Environment — needed if your assets use ACE ballistics, medical, or interaction systems.

Only required when inheriting ACE classes or using ACE-specific config.

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)

Optional

Optional but common dependency when retexturing or extending RHS assets.

Subscribe to the RHS packs your project extends; list in requiredAddons[].

CUP Weapons / Vehicles / Units

Optional

Community Upgrade Project — optional base for CUP-compatible retextures.

Step-by-Step Process

1

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
Arma 3 ToolsObject BuilderTexView 2Addon Builder
2

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)
3

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
CBA_A3
4

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
5

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
Blender or 3ds MaxObject Builder
6

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)
7

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
TexView 2
8

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
9

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
Addon Builder
10

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
11

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
12

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
13

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
14

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
15

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