Analyzing Italian Heavies, DPM, and the “Compensation” Mechanic

(My earlier post was incomplete and misleading so I removed it)

Today, QuickyBaby posted a video (starting at 0.58) visually explaining the brand new mechanic. I highly recommend watching at least that part of the video. Here, I am diving deeper into the numbers and gameplay implications.


Mechanic Description

If your clip isn't empty and you accidentally fire before a shell finishes loading, about half of your reload time is carried over to the next shell, meaning it loads that much faster.

The first 4s (for the intraclip) and last 2s (the "grace period") do not count. The rest of the reload time is recoverable, of which you will receive half.

For example, if a shell's reload time is 16s and you fire during the grace period, a total of 10s is recoverable, meaning the next shell's reload will be reduced by 5s.

(Watch QB's video, it explains it better and with pictures)

The way the math works, if you fire during the grace period, the next shell will load faster than if you didn't. However, this is at the cost of one shell from your clip.

At first glance, this is a nice quality-of-life feature but not something you can take advantage of. Well… that's exactly right. However, I was convinced that some edge-case existed, and in proving myself wrong, I went way too far and deconstructed the entire mechanic.

DPM: A Misunderstood Metric

I could write an entire post on this. Inherently, DPM (Damage Per Minute) is flawed because damage is done in chunks, not continuously. Also, tanks usually start fights with their guns loaded – a T57 Heavy has ~3100 base DPM, but can do 3200dmg in 37 seconds.

DPM doesn't actually mean "damage per minute". Well, the acronym does, but it's really a synthetic statistic, derived from alpha / reload. "Time to fire X shots" is a better metric.

Autoreloaders make this harder to calculate, but we can pick whichever strategy gives the best answer. The compensation mechanic makes my life hell adds to the fun!

Maximizing Damage Output

I am too stupid to figure out the formulas, so I wrote a Python script to exhaustively test every strategy and identify the fastest way to fire X shots, given how many shells are in the clip and the current partial reload. These were my findings:

  • The compensation mechanic doesn't change anything. The optimal strategy is still to load your clip until it's full, use it in single-shot mode, and empty your clip to finish them off.
  • Never intentionally delay an interrupt. The decision should be "do I fire now" or "do I load this shell".
  • After five seconds, let a shell finish reloading. Before the 2s mark, there are a few cases where firing immediately is better, and it's only after 5s that making the "wrong" choice is noticeable.
  • Switching ammo types is really gonna suck.
  • When firing only 1-5 shots, all of the reasonable strategies perform similarly. Fire a quick burst whenever you need to, as long as it won't interrupt a reload. You're saving fractions of a second by keeping your clip full.

There are plenty of scenarios in which you need to do damage sooner, so it's comforting to know doing so won't sacrifice too much damage output. As currently set up, the Rinoceronte's autoreloading mechanic is surprisingly forgiving.

If you really want to minmax… if your clip isn't full, only fill it if you're firing more than 5 shots. If you only need to do 2 shots, do not store them, just fire right away. Both of these are only true if you have less than 2s of progress towards your next reload.

In More Depth

This section is only for those who really like numbers and analysis. Most of y'all should scroll to the comments section.

The current base reload times are 20/17/15.7 seconds. The maximum compensation that can be received is 5.5s for firing the second shell early, and 4.85s for firing the third shell early. Thus, 20/17/15.7s is a loose lower bound – the actual lower bound is 14.5/12.15/15.7s.

Don't get too excited though – this ruins your rate-of-fire. The fact that you can simultaneously improve reload time and worsen rate-of-fire is exactly why these things are so tricky to analyze.

Why is Compensation not worth using? My intuition misled me at first, but consider these cases and you'll understand why.

Say my shell is almost loaded and is now entering the grace period – should I fire? Think two shells ahead, not one. Yes, you'll fire the first one right away, but the next one will take at least 10 seconds. The alternative is waiting 2 seconds for one, then 4 seconds for the next. There's no comparison.

Okay, say I plan on firing early – should I wait a bit longer (say 5s) to get more compensation time? It would make the reload 2.5s shorter, but firing now means you'd start loading 5s sooner. You're actually losing 2.5s this way.

Compensation is sometimes neutral, but is never better than either firing at full speed, or fully loading every shell.


To expand on this a bit: statistics like "DPM" and "time to fire X shots" are hierarchical. We have a broad, general question which is too complex to answer. So, we simplify it until we can answer it. Do it too little and the question's still too hard; do it too much, and the question's now too different to be useful.

What we really want to know is "how likely am I to win this fight". We can boil this down to "how long will it take me to deal X damage". That's a question we can answer exactly, e.g. "A% of the time it takes 4 shots, B% of the time it takes 5 shots…". However, that requires knowing the damage distribution, which I do not, so I have to keep going.

The next step down is "how long will it take to fire X shots". This still doesn't apply to many real-world scenarios, like using cover and trading one-for-one, but it gives us a pretty useful upper bound on damage output.

DPM is a further step down, as in order to get a single clean answer, it assumes that rate-of-fire is stable (generally true) and vehicles start without the gun loaded (generally false). There's no quick fix: allowing the gun to start loaded introduces time as a variable, so instead of a number you have a 2D function. Adding "burst DPM" doesn't help – a Char Futur 1 has 7800 burst DPM while unloading its magazine, but that tells us very little.

DPM is not a bad metric, but it requires proper context.

Maximizing Damage Output

I tried several different approaches for analysis, before concluding that I was too stupid to figure it out, so I wrote a script to do it for me. I tested literally every strategy, hoping that I could fit a coherent strategy to it later. Thankfully, I could.

Both of the "minmax" exceptions happen because of the intraclip – firing an extra shell from the clip incurs an extra 4s delay. For firing 2 shots, in all situations, firing now and getting a worse reload beats having a better reload then the intraclip. The same logic applies for firing 3-5 shells.

I considered a strategy that maximized compensation, by firing as soon as the grace period starts. From a full clip, you will fire 4 shells in 38.5s (0s, 13.7s, 10.15s, 14.5s) before emptying it. By comparison, if you dumped the entire clip right away, then stayed in the slowest single-shot mode, you'd fire 4 shells in 28 seconds. Yikes.

<insert table comparing the different strategies and how similar they perform for the first 5 shots>

I have clearly run out of steam at this point.

My output logs are not Reddit-friendly, but if enough people wanted, I could throw together some graphs and show how the different strategies work.


leave a comment

Your email address will not be published. Required fields are marked *