Fixing Vehicle Balance with Non-Linear Target Size Scaling – v2.0
NLTSS is easier to say, right?
If you don’t want to read this 5 page / 2,082 word post, skip to “Target Scaling” and “A Much More Intricate Formula – NLTSS v2.0.”
Preface
As pointed out by Sander93 in the other thread, this change would require an incredible effort by the balance team; it involves changing the target sizes of every vehicle, changing the close/mid/far accuracies of every AT-type weapon, as well as extensive testing to ensure nothing is broken.
With that said, I still think its worth at least discussing, if not for a possible implementation into CoH2 (maybe one day?), but possibly for “CoH3”, if that ever happens. Additionally, someone else may figure out an easier way to implement this, and can then propose their idea. Either way, it’s a fun thought experiment.
Overview
Right now, many would say CoH2 has a problem with vehicle balance. I think most players will agree that the current state of vehicles and AT is not conducive to ‘medium tank play’; either due to the current prevalence of TD and Heavy use, due to the power of ATGs and AT infantry, or due to other reasons. From discussions in multiple threads, it seems that the main issue is that AT units are far too generalist; most are simply excellent against all ‘classes’ of vehicles - heavies, mediums, light, etc.
The problem is, balancing a unit so that it excels against heavies and premium mediums, but not against regular mediums is exceedingly challenging. For an AT-unit to excel against heavy tanks it needs high penetration values; which means it will almost certainly penetrate mediums 100% of the time. The AT unit also needs to do significant damage, since heavies have high HP pools; this causes problems since mediums can often only survive 3 shots from these TDs, meaning they are forced to retreat after 2 hits – or one salvo, if there are multiple AT units (as is often the case). Additionally, due to salvos being entirely ‘alpha’ damage (reload isn’t considered), Rate of Fire adjustments won’t necessarily address this issue.
This leaves us with only one stat to play with: accuracy – and that is the topic of this post.
The Problem With Accuracy, Target Sizes, and Value Ranges
As it is currently implemented in the game, accuracy and target sizes are directly connected. The formula is (mostly) as follows:
Target Size x Accuracy = Chance to Hit
Due to scatter, moving accuracy, and a few other values, this isn’t the entire formula, but for this discussion, it is accurate enough.
At face value, this formula seems fairly straight forward; if you want something to be easy to hit, make it big – and if you want something to hit things more easily, make its accuracy high. However, this isn’t the full picture; we also need to discuss value ranges.
First, let’s look at target sizes. This number simply describes how “big” a unit is – it (seemingly) does so in whole numbers, and the range is (from my understanding) anywhere from 0 to infinity (there is likely a max value, but I’m unaware of it). Initially, this seems fine; there are an infinite number of whole numbers, so just space out units a lot; a Tiger could have a size of 100, a Kubel a size of 10, and so on. However, this is not the case; in CoH2, vehicles currently range from a size of 14 (Kubel, etc.) to 26 (JT, etc.). This means that are 12 values we can currently assign to vehicles in the game; this is a problem.
Let’s take, for example, the current match-up between an M36 (USF’s ‘heavy’ TD) and the newly adjusted Panzer 4 and Tiger. The M36 has an accuracy of 0.035 at ’60’ range, the Panzer 4 has a target size of 20, and the Tiger has a target size of 26. This gives the M36 a 70% chance to hit the Panzer 4, and a 91% chance to hit the Tiger. This seems fine, but what if we wanted to adjust the M36 to miss against the Panzer 4 more often; for example, a hit rate of 60%? This would mean giving the M36 an accuracy of 0.03; but now it would only hit the Tiger 78% of the time. We could, instead, attempt to lower the Panzer 4’s target size to 17, but this also causes problems. We’ve achieved our 60% chance to hit the Panzer 4 while keeping the chance to hit the Tiger at 91%, but now the Panzer is actually harder to hit than the ‘222’ Scout Car (target size 18).
We’ve run into the issue with value ranges. Having a range of 14-26 leaves us with 12 ‘steps’, and gives us a “middle” target size of 20 (conveniently, the size of most mediums); the biggest unit can only be 30% bigger than a Panzer 4, and the smallest only 30% smaller. This is incredibly restrictive when balancing units, as it means that accuracy and target size can’t really be used to create drastic differences in the chance to hit vehicles of different ‘classes’.
Graph
With the current values, the M36 firing at a Kubel has a 49% chance to hit, firing at a Medium a 70% chance to hit, and at a Heavy a 91% chance to it.
What if we could change that?
Target Size Scaling, and Non-Linear Advantages
This is where the idea of scaling target sizes comes in. If we want more values to work with, we can simply scale the target sizes; for example, if we scaled everything by 2, we now have 24 ‘steps’ to work with, and if we halve the accuracy values of AT units, unit interactions remain the same:
Current Game: 0.035 x 20 = 70% chance to hit
2x Size/Half Acc: 0.0175 x 40 = 70% chance to hit
There is, of course, a problem with that. While the number of values we can work with has doubled, the difference between units hasn’t. A medium tank would now have a size of 40, and a heavy tank would have a size of 52 – which is still only a difference of 30%. This is the core of this idea; scaling unit sizes non-linearly gives us a much larger usable value range to work with.
In my previous post, I suggested scaling units by the following formula:
Size Increase = 2x(old size/26)
What this formula does is scale everything by a non-fixed ratio; for a kubel, with a size of 14, it has its target size increase by only 8%, to a size of 15, for a medium (20) its size increases by 54% to 31, and a heavy (26) is increase by 100% to 52.
Kubel: 2x(14/26) = 2x(0.538) = 1.08
Medium: 2x(20/26) = 2x(0.77) = 1.54
Heavy: 2x(26/26) = 2x(1) = 2.00
Graph
If we use our ‘halved’ accuracy value for the M36 (0.0175), we now have new hit chances: A kubel (now size 15) has a 26% chance to be hit, a Medium (now size 31) has a 54% chance to be hit, and a Heavy (now size 52) has a 91% chance to be hit. If we refer back to our ‘live’ values, we have changed our chance to hit by -23%, -16% and 0%.
While we’ve successfully lowered the chance to hit a medium while keeping the chance to hit a heavy the same, we now have the problem (Sander93 pointed out), where very small vehicles are incredibly hard to hit.
This is indeed the biggest problem with this particular scaling formula. However, there are two things we can do to fix this: firstly, we could try scaling accuracy, and secondly, we could use a much more intricate formula.
Accuracy Scaling
With our new target size scaling, we can start to use accuracy values to tune unit performance more finely; this is something I suggested in my original post. Let’s assume we want our chance to hit mediums to be a bit higher than above; for example, 65% - while still using the new unit sizes. To do this, the M36’s accuracy would need to increase to 0.021, from 0.0175.
Graph
We now slightly improved hit chances: A kubel has a 31% chance to be hit, a Medium has a 65% chance to be hit, and a Heavy has a 100% chance to be hit. Compared to the current game, that’s -18%, -5% and +9%.
I believe this is a step in the right direction; Mediums are harder to hit and Heavies are easier to hit; but light vehicles are still a problem – but we can do better.
A Much More Intricate Formula – NLTSS v2.0
While I was happy with the general outcome of the formula above, Sander93’s comment is still accurate:
However, there are several implications (the smallest vehicles becoming very hard to hit for example) and it would require a tremendous amount of work and time to finetune everything.
Smaller vehicles become too hard to hit, and it requires an incredible amount of work to implement – arbitrarily changing 3 accuracy values per unit on top of changing the target sizes on every vehicle.
What we need is a formula to change target sizes in a way that smaller vehicles don’t become harder to hit, mediums do become harder to hit, heavies become easier to hit (or stay the same), and to do it in such a way that accuracy values don’t need to be manually fine-tuned (other than halving them). Essentially, we want to keep that 30% difference between small and medium vehicles, but we want to drastically increase the 30% difference between medium and heavy vehicles. This is my formula:
New Size = 2 x ((Old Size/26)^6) x Old Size) x 0.47 + 28
Now, you might be thinking: What is that?
Graph
With these new target sizes, the M36 at half its current accuracy (0.0175) now has the following hit chances: Firing at Kubel its 49%, firing at a medium its 56%, and firing at a heavy its 91%. Compared to the current ‘live’ values, we have changed our chance to hit by 0%/-14%/0%.
Additionally, the formula is scalable; the central exponent (the 6), can be increased or decreased to create a steeper or more shallow curve without changing the chance to hit the smallest and biggest vehicles. We can also stretch the height of the curve using the multiplier (0.47); this allows us to increase the chance to hit larger vehicles, with little change to mediums, and no changes to small vehicles.
As an example, let’s say we want small vehicles to stay the same as they are now, we want mediums to be 10% harder to hit, and we want heavies to be 5% easier to hit:
New Size = 2 x ((Old Size/26)^4) x Old Size) x 0.53 + 27
Graph
Now an M36 with 0.0175 accuracy has a 49% chance to hit a light vehicle, 60% to hit a medium, and 96% to hit a heavy – precisely what we wanted.
Of course, this also works with other unit matchups; let’s take a half-accuracy Pak40 (0.02 from 0.04), and apply the scaling formula again. The chance to hit a UC goes from 60% to 58%, the chance to hit a medium goes from 80% to 68%, and the chance to hit a heavy remains at 100%.
On paper, at least, this seems to work.
Conclusion
While it would be a fair bit of work to implement, I think that the above changes could solve the problem of Medium tanks being less viable in competitive play. By increasing the range of values we can use for target sizes, and halving the accuracy of all AT weapons, we can use a formula to systemically adjust target sizes to produce the desired hit chances.
Addendum
While writing this, it was pointed out that this would likely cause a lot of issues with SP units. If decimal values are permitted for target sizes (as infantry uses), then the proposed changes could be “halved”; this would allow the accuracies to remain exactly as they are now, and it shouldn’t impact SP too much, while still having the desired changes in MP. However, I don’t know if this is possible.