Units & Equipment
This page documents the unit data model, weapon and ammunition schemas, and catalogs of available equipment across all eras.
Unit Data Model
Units are defined in YAML files and validated by pydantic. The engine defines behaviors; YAML parameterizes instances.
Unit YAML Schema
unit_type: "m1a2_abrams" # unique identifier
display_name: "M1A2 Abrams" # human-readable name
domain: ground # ground | air | naval_surface | naval_subsurface | ...
category: armor # armor | infantry | artillery | air_defense | ...
crew: 4
speed_m_s: 18.0 # maximum speed in m/s
armor_mm: 600 # effective armor thickness (mm RHA equivalent)
armor_type: composite # rha | composite | reactive | spaced | none
health: 100.0
signature_profile: m1a2_sig # reference to signature YAML
training_level: 0.8 # 0.0–1.0 crew/unit proficiency (veteran)
equipment:
weapons:
- weapon_type: m256_120mm # reference to weapon YAML
mount: turret
sensors:
- sensor_type: commanders_sight
mount: turret
comms:
- comms_type: sincgars
Key Fields
| Field |
Type |
Description |
unit_type |
str |
Unique identifier used in scenario references |
display_name |
str |
Human-readable name |
domain |
str |
Operational domain |
category |
str |
Unit category within domain |
crew |
int |
Number of crew members |
speed_m_s |
float |
Maximum speed (meters/second) |
armor_mm |
float |
Effective armor thickness |
armor_type |
str |
Armor material type |
health |
float |
Hit points |
signature_profile |
str |
Reference to signature definition |
training_level |
float |
Crew/unit proficiency (0.0–1.0). Scales effective skill via base_skill * (0.5 + 0.5 * training_level). Typical values: Elite 0.9, Veteran 0.8, Regular 0.7, Green 0.6, Conscript 0.5, Poor 0.3–0.4 |
equipment |
dict |
Weapons, sensors, comms references |
Modern Units
Ground Domain
| Unit Type |
Display Name |
Category |
Speed (m/s) |
Key Weapon |
m1a2_abrams |
M1A2 Abrams |
armor |
18.0 |
M256 120mm |
t72b3 |
T-72B3 |
armor |
16.7 |
2A46M 125mm |
t90a |
T-90A |
armor |
16.7 |
2A46M-5 125mm |
leopard_2a6 |
Leopard 2A6 |
armor |
19.4 |
Rh-120 L/55 |
challenger_2 |
Challenger 2 |
armor |
16.5 |
L30A1 120mm |
m2a3_bradley |
M2A3 Bradley |
infantry |
18.3 |
M242 25mm + TOW |
bmp2 |
BMP-2 |
infantry |
18.0 |
2A42 30mm |
btr80 |
BTR-80 |
infantry |
22.2 |
KPVT 14.5mm |
rifle_squad |
Rifle Squad |
infantry |
1.5 |
Small arms |
insurgent_squad |
Insurgent Squad |
infantry |
1.1 |
AK-47 + RPG-7 |
javelin_team |
Javelin ATGM Team |
infantry |
1.5 |
FGM-148 Javelin |
kornet_team |
Kornet ATGM Team |
infantry |
1.5 |
9M133 Kornet |
civilian_noncombatant |
Civilian Noncombatant |
civilian |
1.4 |
None |
engineer_squad |
Engineer Squad |
support |
1.4 |
Small arms |
m109_paladin |
M109A6 Paladin |
artillery |
16.0 |
M284 155mm |
mlrs |
M270 MLRS |
artillery |
17.9 |
M26 rockets |
mortar_team |
81mm Mortar Team |
artillery |
1.4 |
M252 81mm |
Air Domain
| Unit Type |
Display Name |
Category |
Speed (m/s) |
Key Weapon |
f16c |
F-16C Fighting Falcon |
fixed_wing |
590 |
AIM-120 AMRAAM |
a10c |
A-10C Thunderbolt II |
fixed_wing |
210 |
GAU-8 30mm |
su27s |
Su-27S Flanker |
fixed_wing |
680 |
R-27/R-73 |
mig29a |
MiG-29A Fulcrum |
fixed_wing |
650 |
R-73/R-77 |
j10a |
J-10A |
fixed_wing |
620 |
PL-12 |
b52h |
B-52H Stratofortress |
fixed_wing |
260 |
AGM-86 ALCM |
a4_skyhawk |
A-4 Skyhawk |
fixed_wing |
300 |
Mk 12 20mm |
ea18g |
EA-18G Growler |
fixed_wing |
530 |
AGM-88 HARM |
ah64d |
AH-64D Apache |
rotary_wing |
80 |
AGM-114 Hellfire |
uh60 |
UH-60 Black Hawk |
rotary_wing |
76 |
Door guns |
mi24v |
Mi-24V Hind |
rotary_wing |
83 |
AT-6 Spiral |
c17 |
C-17 Globemaster III |
transport |
260 |
None |
Air Defense
| Unit Type |
Display Name |
Category |
Key Weapon |
patriot |
MIM-104 Patriot |
air_defense |
PAC-3 missile |
s300pmu |
S-300PMU |
air_defense |
48N6 missile |
sa6_gainful |
SA-6 Gainful (2K12 Kub) |
air_defense |
3M9 missile |
sa11_buk |
SA-11 Buk |
air_defense |
9M38 missile |
manpads |
MANPADS Team |
air_defense |
Stinger/Igla |
Naval Domain
| Unit Type |
Display Name |
Category |
Key Weapon |
arleigh_burke |
Arleigh Burke DDG |
surface |
SM-2/Harpoon/Mk 45 |
sovremenny |
Sovremenny DDG |
surface |
SS-N-22 Sunburn |
ticonderoga |
Ticonderoga CG |
surface |
SM-2/Tomahawk |
los_angeles |
Los Angeles SSN |
subsurface |
Mk 48 torpedo |
kilo_636 |
Kilo-636 SSK |
subsurface |
53-65 torpedo |
Historical Units by Era
WW2
| Domain |
Units |
| Armor |
Tiger I, Panther, Sherman M4A3, Panzer IV, T-34/85 |
| Infantry |
US rifle squad, Soviet rifle squad, Wehrmacht rifle squad |
| Air |
P-51D Mustang, Bf 109G, B-17G Flying Fortress, A6M Zero, Spitfire Mk IX |
| Naval |
Essex CV, Bismarck BB, Fletcher DD, Type VII U-boat, Shokaku CV |
| Artillery |
105mm howitzer, Katyusha BM-13, Nebelwerfer 41 |
WW1
| Domain |
Units |
| Infantry |
British rifle section, German Stosstruppen, French poilu squad |
| Artillery |
QF 18-pounder, 15cm sFH 13 |
| Air |
SPAD XIII, Fokker Dr.I, SE.5a |
| Naval |
HMS Dreadnought, SMS Konig, HMS Iron Duke |
Napoleonic
| Domain |
Units |
| Infantry |
French ligne, British line infantry, Austrian grenadier, Prussian musketeer, Russian jager |
| Cavalry |
French cuirassier, British light dragoon, Cossack irregular, Polish lancer |
| Artillery |
French 6-pounder, British 9-pounder, Austrian 12-pounder |
| Naval |
1st rate ship of the line, 3rd rate ship of the line, frigate |
Ancient & Medieval
| Domain |
Units |
| Infantry |
Greek hoplite, Roman legionary, Carthaginian infantry, Viking huscarl, English longbowman |
| Cavalry |
Companion cavalry, cataphract, Numidian cavalry, medieval knight, Mongol horse archer |
| Siege |
Trebuchet, battering ram, siege tower |
| Naval |
Greek trireme, Roman quinquereme, Viking longship, medieval cog |
Weapon Data Model
Weapon YAML Schema
weapon_type: "m256_120mm"
display_name: "M256 120mm Smoothbore"
caliber_mm: 120
range_m: 4000
rate_of_fire_rpm: 6.0
guidance: none # none | command | semi_active | active | ir | gps
domain: ground
ammunition_types:
- m829a3_apfsds
- m830a1_heat
- m1028_canister
Key Fields
| Field |
Type |
Description |
weapon_type |
str |
Unique identifier |
caliber_mm |
float |
Bore diameter |
range_m |
float |
Maximum effective range |
rate_of_fire_rpm |
float |
Rounds per minute |
guidance |
str |
Guidance type |
ammunition_types |
list[str] |
Compatible ammo types |
Ammunition Data Model
Ammo YAML Schema
ammo_type: "m829a3_apfsds"
display_name: "M829A3 APFSDS-T"
category: ap # ap | heat | he | smoke | illum | guided | ...
caliber_mm: 120
muzzle_velocity_m_s: 1555
penetration_mm: 750 # at reference range
blast_radius_m: 0
pk_direct: 0.85 # Pk given hit (direct fire)
Key Fields
| Field |
Type |
Description |
ammo_type |
str |
Unique identifier |
category |
str |
Ammunition category |
muzzle_velocity_m_s |
float |
Launch velocity |
penetration_mm |
float |
Armor penetration capability |
blast_radius_m |
float |
Area effect radius (HE/frag) |
pk_direct |
float |
Kill probability given hit |
Doctrine Templates
Doctrine templates define AI behavior patterns and are assigned per-side in scenario YAML.
| Doctrine |
Faction |
Category |
Key Traits |
| US Attack Deliberate |
US |
Offensive |
Mission command, combined arms |
| US Defend Area |
US |
Defensive |
Area defense, counterattack |
| US Movement to Contact |
US |
Offensive |
Advance to find, fix, finish |
| Russian Deep Ops |
Russia |
Offensive |
Massed fires, correlation of forces |
| Russian Defense in Depth |
Russia |
Defensive |
Layered defense, counterattack |
| NATO Collective Defense |
NATO |
Defensive |
Standardized, multinational |
| PLA Active Defense |
China |
Defensive |
Asymmetric, A2/AD focus |
| IDF Preemptive |
Israel |
Offensive |
Speed, surprise, initiative |
| Airborne Vertical Envelopment |
Generic |
Offensive |
Rapid deployment, hold at all costs |
| Amphibious Ship to Shore |
Generic |
Offensive |
Phased approach, naval fire support |
| Naval Sea Control |
Generic |
Naval |
Sea denial, force projection |
| Combined Arms Attack |
Generic |
Offensive |
Multi-arm coordination |
| Combined Arms Defense |
Generic |
Defensive |
Integrated defensive fires |
| Delay |
Generic |
Defensive |
Trading space for time |
| Retrograde |
Generic |
Defensive |
Organized withdrawal |
| Guerrilla Hit and Run |
Unconventional |
Insurgent |
Ambush, disengage, disperse |
| Insurgency Campaign |
Unconventional |
Insurgent |
Population-centric subversion |
| COIN Kinetic |
Unconventional |
COIN |
Direct action, enemy-focused |
| COIN Population-Centric |
Unconventional |
COIN |
Hearts and minds, security |
| PMC Security |
Unconventional |
PMC |
Contractual ROE, asset protection |
| Scorched Earth Denial |
Unconventional |
Denial |
Destroy infrastructure, deny resources |
Commander Profiles
Commander personalities affect OODA cycle speed, decision quality, and risk assessment.
| Profile |
Risk Tolerance |
Aggression |
Adaptability |
Style |
| Cautious Infantry |
Low |
Low |
Medium |
Deliberate planning, minimal risk |
| Aggressive Armor |
High |
High |
High |
Rapid action, accepts casualties |
| Balanced Default |
Medium |
Medium |
High |
Flexible response to situation |
| Joint Campaign |
Medium |
Medium |
Medium |
Multi-domain coordination focus |
| Naval Surface |
Medium |
Medium-High |
High |
Sea-based power projection |
| Naval Aviation |
Medium-High |
High |
High |
Carrier strike group operations |
| Air Superiority |
High |
High |
Medium |
Air dominance, DCA/OCA focus |
| SOF Operator |
High |
Medium |
Very High |
Special operations, unconventional |
| Logistics Sustainment |
Low |
Low |
Medium |
Sustainment priority, methodical advance |
| Ruthless Authoritarian |
High |
Very High |
Low |
Scorched earth, no restraint |
| Desperate Defender |
Medium |
Medium |
High |
Last stand, extreme sacrifice |
| Insurgent Leader |
Medium |
Medium |
High |
Asymmetric, population-centric |
| PMC Operator |
Medium |
Medium |
Medium |
Contractual ROE, profit-driven |
Commander personality traits modulate:
- OODA phase durations (aggressive commanders decide faster)
- Risk tolerance in COA selection
- Willingness to accept casualties
- Adaptation speed to changing situations
- Doctrinal school influence weights