For several nations, particularly Germany, Russia, Japan, and the US, a large chunk of their strategy revolves around positioning their large stacks of units. A critical part of this maneuvering is determining if the enemy stack can crush your stack, or vice versa. Calculators make this really easy, but take a lot of time when playing in person. I aim to demonstrate a way to mentally calculate which stack would win, and by how much.
To start with, I want to emphasize that I know this game is a dice game. Dice are random. However, because dice tend to average out over larger numbers of throws, estimation is still possible and fairly accurate for large stacks. This method won’t work well for determining if 3 infantry will beat a tank - that battle has a lot of luck involved; but then again, you probably know the results of small battles without any calculations.
Finally, I know that some people will consider this cheating or against the spirit of the game. For me, little feels worse than for the US to have 6 hours of naval builds wiped out because I misjudged a stack!
Ok now that that’s out of the way, let’s get to the fun part. The foundation of this is in Lanchester’s Laws, which describe a set of equations for how 2 forces battle each other. The output is rather intuitive: In modern combat, with ranged units firing at each other from a distance, the guns can attack multiple targets and can receive fire from multiple directions. Lanchester determined that the power of such an army is proportional not to the number of units it has, but to the square of the number of units.
If you think about it, you probably already knew this. When 10 artillery attack 5 artillery, more than 5 attacking units survive, like we would expect if power was linear. It’s around 8.
“Suppose the blue army is three times the size of the red army. This means that it is concentrating three times as much firepower on red as red is firing. Just as importantly, red’s firepower is diluted over three times as many blue units. The combined effect of these two conditions is that blue is nine times as strong as red although it only has three times as many units. Similarly, the number of units remaining at the end of the battle is the square root of the difference between the squares of the numbers of units on each side. “ (quoted from gamasutra, which explains this far better than I would).
Going back to our 10 vs. 5 artillery example… if you plug that in to the formula, you see that sqrt(10^2 - 5^2) ~ 8 units!
Now, there is a key difference between AAA and Lanchester’s problem - Lanchester’s equations assume continuous combat, whereas AAA is discrete both in terms of time (each round of battle) and of units (you can’t have half a unit). However, we’re only looking to model large stacks with large numbers of units, so above a certain stack size (> 10) this doesn’t have a big impact.
The time bit has more of an impact. The way to think about it is that with discrete salvos (rounds of combat), the defender keeps more of its forces around longer than if it was a continuous fight. For a simple example, think about 10 fighters vs 1 fighter; in a continuous battle, that single fighter would be dead so quickly it wouldn’t get a shot off. But in AAA, it gets a full round of combat nonetheless, and will likely take out another fighter on its way out. The consequence is that the defender has a slight advantage over the model, and that advantage grows somewhat for higher defense values. Looking at the model vs actual AAA battles, it’s around 5%-10%. It’s not huge, and because it’s predictable we can somewhat take that into account though.
So far, we’ve been dealing with units of equal power attacking each other. Of course, there are multiple different units in AAA. Lanchester’s laws dictate that if A attacking units of strength α hit B defending units of strength β, the number of attacking units remaining is described by this formula: A_final = sqrt(A^2 - B^2 * β / α) . Here, α and β are just the unit attack/defense values, so an artillery is 2 and a tank is 3 etc, and an infantry is 1 on attack and 2 on defense.
So if 30 attacking infantry hit 15 defending artillery, we get:
sqrt(30^2 - 15^2 * 2 / 1) = 21 units surviving
In a AAA simulator, we see that the median occurrence is 20, which is pretty close. And remember, we were expecting to see a defender advantage of around 5% than the model.
An interesting thing you see with the square root is that a small change in MetaPower can make a big difference in the average outcome. If you’ve ever simulated a close Moscow with adding 1 or 2 infantry on either side, you know what a big impact they can make!
Before people start saying that they can’t do square roots in their head… if you just want to know if you’ll win, you can just calculate if α * A^2 > B^2 * β. Since A is number of units, and α is the unit’s power, then you can also calculate this as A * (α * A), where α * A is the Total Power of your units. This value is probably familiar, since it is displayed in the tripleA simulator - 2 tanks have 6 total power, 5 inf and 5 art have 20 total power, etc. With lack of a better term, I’ll define the quantity “MetaPower” = Number of Units * Total Power of Units. If your MetaPower is greater than their MetaPower, you’ll probably win. The nice part about this number is that it’s fairly easy to calculate, and has good predictive qualities.
You can do other things with MetaPower besides just seeing if you’d win. For example, your MetaPower will be different for attack and defense, so you can see if your stack would be better positioned to attack or defend. Also, you can see if adding 3 subs and 3 destroyers would help out to a giant Pacific battle more or less than a loaded carrier.
One note for ships - for 2 hit units like carriers and battleships, you would count the unit twice in the unit count, and only once in the power.
Now, one factor we’ve been ignoring is that compositions aren’t uniform. Intuitively, we know that this makes a difference - a tank and an inf is better than an inf and an art even though both have the same power, and we’ve all been burned when German bombers + mech decimated a larger Russian stack of infantry.
Unfortunately, this is the end of where math takes us. There’s no closed-form solution past this point. However, I modeled keeping power and number of units the same and changing composition, and I came up with the following bonuses to MetaPower based off composition:
No Distribution (all attacking/defending at same number): no bonus
Slight Distribution (equal 1s and 2s, or equal 2s and 3s): 5% bonus
Equal Distribution (equal 1s and 3s, equal 1s, 2s, 3s, and 4s): 10% bonus
Fodder Distribution (equal 1s and 4s): 15% bonus
- MetaPower = Number Units * Total Power of Units * (distribution bonus + defense bonus)
- If your MetaPower is higher, you have a good chance of winning
- Remaining Units after a battle ~- sqrt(MetaPower1 - MetaPower2)
Here are some examples:
Example 1: Can Russia safely move 35 inf and 20 art next to a german stack that can hit with 10 inf, 10 mech, 5 art, and 15 tanks, and 10 bombers?
German attack MetaPower = 50 units * 120 power + 10% dist bonus = 6600
Russian defense MetaPower = 55 units * 110 power + 5% def bonus = 6350
Remaining German units = sqrt(6600-6350) = 16
Sim results: mean case is 11 remaining German units, median case is 17 remaining German units. Probably a bad move for Russia.
Example 2: How many destroyers can I beat with 8 subs and 12 bombers?
MetaPower = (8+12) * (8*2 + 12 * 4) * (1 + 15%) = 1472
26 destroyers have MetaPower = 1420, and 27 have 1530, so I’d bet between 26 and 27.
Sim results: 26: 55% attacker win, 27 and it’s a 43% battle. Not too shabby a prediction.
Now… is this easier than plugging numbers into a simulator? It might depend how fast you are at math. I’m not sure how useful any of this is, but I find it interesting that with a little arithmetic and an algorithm used to model combat in WW1, you can get a decent handle on AAA combat.
For more info on Lanchester’s Laws: