Each cell is the result of a cost-balanced battle simulation between two unit types — not a 1-vs-1 duel, but player vs player where both have spent the same amount of resources.
Both sides get the same budget. Number of units = budget ÷ unit cost. Cost is by default raw total resources (food + wood + gold treated equally). Turn on “gold-weighted” to count gold ×1.4 (gold is scarcer) — this changes the unit counts per side and therefore some cells.
Damage per hit = base damage × volley − armour (melee subtracts melee armour, ranged subtracts ranged armour), plus bonus damage vs armour class (e.g. spear +28 vs cavalry). Volleys/bursts are counted (e.g. Zhuge Nu fires 3 bolts). DPS = damage ÷ attack time. Charge attacks are excluded (one-off, not sustained).
Ranged units are assumed to kite optimally, with a smooth effect based on both speed and range, both against melee and against other ranged units with shorter range.
clamp(0.25 − 1.6 × [(shooter speed − melee speed) + 0.07 × (range − 5)], 0.12–0.9). So a Longbowman (range 7) kites Spearmen even though it is slower; a Handcannoneer (short range, slow) gets run down by cavalry.netAdv = 0.18 × (rangeA − rangeB) + 0.9 × (speedA − speedB). If netAdv > 0.03, the attacker's kiting factor = clamp(0.85 − netAdv, 0.20–0.95). A Longbowman (range 7, slow) still kites a Zhuge Nu (range 4.5, same speed), but a fast Mangudai (range 3.5, 1.56 t/s) roughly cancels out an Archer's range advantage (range 5, 1.25 t/s) — neither kites the other.High ranged armour still neutralises the shooter (e.g. Archer vs Man-at-Arms). Fast mounted archers (Mangudai, Horse Archer, Camel Archer) now get credit for their mobility in ranged duels — they can kite slow units like Crossbowman effectively.
The fight is simulated in time steps with focus fire (damage is concentrated on the front unit until it dies) — this is where the “more cheap units” advantage (the square-law effect) emerges naturally. For melee there is an engagement width: only a front line can attack at a time, so numeric superiority for melee is dampened realistically. Ranged units have no such limit.
After the fight, we measure how one-sided the resource trade was (log2 of value destroyed one way divided by the other). Thresholds: clear advantage/outmatched (±±) when the trade is ≳3× skewed; advantage/disadvantage (±) for moderate skew; even when it is close.
When enabled, each unit receives unit-specific bonuses approximating maximum Imperial upgrades (Veteran + Elite + all blacksmith tiers). Per-unit estimates: Spearman/MAA: +3 atk, +3 armor, +22% HP; Knight: +3 atk, +3 armor, +22% HP; Archer/Crossbowman: +3 atk, +3 ranged armor, +22% HP; Longbowman: +4 atk (incl. Fire Arrows), +3 ranged armor, +22% HP; Mangudai: +3 atk (incl. Fire Arrows), +2 armor, +20% HP; Horseman: +3 atk, +2 armor, +20% HP; Keshik/Camel units: +2 atk, +2 armor, +18% HP; Mounted archers/Streltsy/Zhuge Nu: +2 atk, +2 armor, +15% HP; Handcannoneer/Janissary: +2 atk, +2 armor, +10% HP; War Elephant: +2 atk, +2 armor, +5% HP. These are modelled estimates — exact values vary by civilization and technology.
Healing, splash beyond volley, transformations, terrain, formation, line of sight. Blacksmith and technology upgrades are approximated by the ‘Fully upgraded’ toggle above. Signature units are civ-locked — the matrix compares unit types across civilizations, not actual civ-vs-civ battles. This is a model to guide intuition, not ground truth.
Source: AoE4World open unit data (data.aoe4world.com; age 4 for the matrix, all ages in the unit panel). The page recomputes everything locally each time it loads or you change a setting.