What I DON'T know, does the offset offset ALL the scatter? or just the probabilistic center? If so, higher offset weapons can be used more reliably due to shot clustering.
Yes you're right about this one. Minus slipped there. Corrected in the OP, thanks for pointing out!
While we're at it turning this thread into a CoH3 wishlist:
I would love to see CoH3 have buyable planes. You buy one like a normal unit and then call it in like an off-map.
You could even potentially pay mun for each run, or pay mun if you want to change weapons from AI cannons to AT rockets or something, and the player has to manually target units. The plane then has a timer after which it goes back to base if it did not get shot down.
This would of course mean that the whole game design must incorporate AA better than CoH2 did
Great guide, as usual! I was actually planning on doing something like this but you beat me to it.
Some points you might want to consider adding:
FoW scatter: Units firing into the FoW suffer a penalty that increases the area of the scatter cone in which shots may land. This is basically a multiplier (for most units 1.25, or 25%, but for certain units this is significantly larger, e.g 2.5 for the ISU-152) that acts on distance_scatter_ratio and scatter_angle, but not on distance_scatter_max. Hence, for most tanks the scatter cone only gets wider when firing into the FoW due to distance_scatter_max still acting as a hard cap, but not longer. Also, distance_scatter_ratio also appears to be capped at 1 (obviously, since for values greater 1 a shot fired in front of the tank could in theory scatter behind it), but some tanks like the SU-76 or the ISU-152 can be affected by this.
Moving scatter: This one is another modifier that in contrast to FoW scatter increases both angular and horizontal scatter, by doubling distance_scatter_ratio (again still capped at 1), distance_scatter_max and scatter_angle. Hence, stopping before a shot not only increases the chance to hit due to higher accuracy, but also by greatly decreasing scatter.
Veterancy: While scatter reduction through Vet was removed for all Tiger variants in the latest patch, quite a few other units, such as the King Tiger, PzIV J or T-70 will still gain a bonus to scatter when vetting up. This again acts on distance_scatter_ratio, distance_scatter_max and scatter_angle and thus greatly reduces the area of the resulting scatter cone. Very powerful especially against infantry, but obviously also increasing the odds to connect that lucky scatter shot at max range.
Thanks for the info! I thought about adding a quick side note but forgot. I will just link your post, there's all the info one could need about this.
I meant that overshots (technically flying higher than undershots) will always connect with vehicles because their hitboxes are very tall. In the same way that the IL-2 or the Sturmtiger rockets will connect with vehicles even if they visually overshoot it. So the same overshot that would fly past infantry and hit somewhere behind them will connect with a vehicle, increasing the chances for scatter hits.
Yes that's also what I meant.
Overshots on tank will always hit (only super rare exceptions).
Great post. I guess this (the scatter_offset) explains why tanks seem to overshoot more often than any of the other three directions. Any idea why they added this (the "ghost point")? To get more scatter hits on vehicles (because overshots will still connect due to the vehicle's height)?
On the topic of scatter, it might also be very interesting to dissect how much influence the scatter values have when shooting at infantry versus shooting at tanks. For example, giving the heavy tanks smaller scatter has resulted in them also being a lot more accurate against vehicles. It would be an interesting discussion whether or not it would've been better to use different scatter values based on the target that is being engaged, or to introduce a modifier of some sort. Not that we could change anything for CoH2 at this point, but in the case Relic ever decides to make a CoH3, as part of the lessons learned.
Thanks!
I have no idea why scatter_offset exists. A theory could be that one: Vehicles will shoot as soon as a part of the target is in range. So if you target the front edge of an angled tank, your chances to scatter hit it are quite slim. Maybe the offset corrects for that. Also a slight offset will likely help vs infantry, since usually the front model is targeted. So a slight overshot will land in the middle of the squad. And yes, you are right: While it is possible to really make a tank shoot above another one, it practically never happens.
I can imaagine that scatter_offset can act as a means to balance a unit differently vs infantry and vehicles. Extremely high offset values will cause large overshots, giving more effective range, but it also means that scatter shots will hit vehicles more often. Contrary, the vehicle will hit infantry less often, but this obviously depends on the unit spacing.
I have written a program to basically simulate scatter shots vs vehicles, but it lacks the in-game hit box sizes. So although scatter shots are simulated correctly, the result is not 100% true to the game as long as I can't fix this. It's hard to make general rules about scatter values and how it will affect AI and AT performance differently. In general I would say lower angle scatter will mostly help vs vehicles (especially small ones), while lower distance_scatter_max should probably increase AI performance more than AT. But this is just guesswork if I am honest.
As far as I know scatter angle return a value of length calculated by the distance to target. That could mean that scatter distance left or right is set regardless of distance the projectile travels and will land at that perpendicular distance (unless it collides before). That is why in my sketch the line are parallel.
Without knowing exactly if this is true, I also imagined it that way and that's how I calculate it, but then again this article is meant mostly for explanation how it generally works. But it is easier and more intuitive for understanding if we just take the circle sections.
My gun has 80% accuracy vs your vehicle at max range. It misses the accuracy roll, but does the shot still connect due to scatter?
First roll is for accuracy, the shot will then always connect. If accuracy fails then the shot will scatter randomly to some point in the area. If it hits the hull of the enemy you still got a hit.
For the sake of the argument, if we assume that the enemy basically covers half of the scatter area, you have a 80+10% chance to hit and 10% chance to miss.
And yes, no idea about this lul-shots that travel across half the map. In the game there seems to be something like a vertical angle of the cannon, but neither the attribute editor nor any other source comment on this. You can also shoot above a target and miss it by that, but these shots happen only once in a couple of games. I think this is more of a glitch than an actual feature, every other stat in the editor seems to be tailored towards the model I explained.
or: Why you have been ground-targeting wrong for seven years
Scatter calculations have always been quite obscure and I have noticed that many in the community do not know how they properly work. Vipper has a guide that covers scatter a bit, but also there is not much in-depth information. After focusing a lot on scatter and scatter simulation, I thought it might be neat to share this knowledge. I tried to make it an easy read by using a lot of schemes.
In this post you will learn:
- what the scatter stats mean and how they function
- how scatter is properly calculated
- why your ground targeting has been wrong the whole time
- and how to improve it
To understand scatter, we have to understand four stats of a weapon. These stats are "scatter_ratio", "distance_scatter_max", "scatter_offset" and "scatter_angle" and will now be explained in detail.
In our example, a T34 is ground targeting a point 40 meters in front of it. The question now is: Where will the shots land? You already experienced that the shot can land both short and far, as well as left and right to the targeted spot. So we note that scatter has two components: horizontal scatter, so in the direction of the shot, and angle scatter, which causes the shot to go left or right.
The first thing the game checks is the maximum distance the shot can land far (or short) from the intended spot. This is simply calculated by the distance of the target multiplied with the "scatter_ratio" value. This gives the distance how much shorter or farther the shot can land, so the actual deviation is twice this value.
horizontal_scatter = distance * scatter_ratio
The T34 has a scatter_ratio of 1, so does this mean the shot can land up 40 meters away from the target? Initially, yes. This is where "distance_scatter_max" comes into play: It caps that value. In our example, the T34's horizontal scatter is therefore capped by its distance_scatter_max of 6,9 meters. So why is there then the initial calculation with the scatter ratio? For most tanks and basically all units using a scatter_ratio of 1, the first calculation is meaningless unless you fight in a range closer than the distance_scatter_max value. What is basically done is: We take whatever is smaller - either the distance_scatter_max or the distance * scatter_ratio. As a rule of thumb, all tanks use the value of 1. However, some units like howitzers use scatter_ratios smaller than 1. To sum it up, in our example the T34 has a horizontal scatter of +/- 6,9 meters due to the hard cap.
horizontal_scatter gets capped by distance_scatter_max!
Horizontal scatter scheme (as all schemes not to scale)
Now we already know what half of these obscure values do. But what are the others? First off, we have "scatter_offset". This value pushes the point from which horizontal scatter is calculated further back. It can also pull it closer if it's negative, but it usually is positive. You can approximately imagine it that way: While you ordered your T34 to shoot at a specific spot, your tank will actually target a "ghost point" further away. And this is controlled by scatter_ratio. For the T34, scatter_offset has a value of 0,25. To calculate this "ghost point", which I term "scatter center", the horizontal scatter we calculated in the previous paragraph is multiplied by the scatter_offset.
For us, this means that our targeted point at 40 meters is moved by 6,9 * 0,25 = 2,4 meters to the back and creates the scatter center at 42,4 meters. Around this center, the shot can land 6,9 meters short or far.
Scatter center scheme
We're almost done now! The only missing thing is the scatter_angle and this is pretty straight forward. This the angle of the "cone" in front of the T34, so the actual angle to the left OR to the right is half the scatter angle. For the T34, the scatter_angle value is 7,5°, which means it shoots up to 3,75° left or right.
This gives us the complete scatter area:
You can see the target spot in magenta, scatter center in orange and the potential area where the shot might scatter to in light orange. The exact scatter angle and horizontal scatter are randomly picked and evenly distributed, making every spot in the area equally likely to be hit. However, since the two sections to the left have less area than the two sections to the right, the shot density is higher.
To sum it up, the complete formula to calculate the scatter area and therefore be able to compare units at a given distance (slightly simplified) is:
These stats can be further modified if the shooting unit is moving or if you do not have direct visual on the target (this means the target is in the fog of war). Briefly, both increase the scatter area so you want to avoid it if possible. MMX has summed it up in great and concise detail in his post.
Finally, I promised you one thing: To show that your ground targeting has been off for the last seven years. From what I saw on Twitch, even pro Players do not seem to know this.
Let's imagine a standard situation: You get pushed by a Puma. You immediately turn your AT gun around a sight blocker and surprise the Puma from closer range. The OKW player then pops his "Oh shit!" smoke which breaks sight, but is still in range. The only chance to get it is a ground attack. So you select your AT gun and continuously order it to shoot at the spot where you think the Puma should be. But that's wrong.
Why? You should have clicked at the maximum range behind the Puma, and that is why:
Obviously this example is a bit exaggerated, but: the further away you order your unit to shoot, the better. If the shot lands to the left or right, that's tough luck and you can't do much about it. But if the shot lands short, that's completely on you. Since the horizontal scatter is hard capped, you can make a shot never land short if you just shoot far enough behind the target.
Thanks for the information.
I'll give the attribute editor a chance.
I tried that as well, but my experience is that they frequently don't match. So you might be lucky and it's up to date, but there's a decent chance it's not.