Hi, Philip here. 15 is 15. Or is it? Are numbers really numbers? Does anything really exist?
Smash that subscribe button to find out.
In week 3 of Operation Broken Fang, there’s a mission to get kills from a range of at
least 15 metres. But people are finding problems with it! Some kills greater than that don’t
count, while others below, do. There are 2 nicely upvoted examples of this over on Reddit
right now. It seems like the game can’t decide on whether something is greater or
less than 15. It’s doing 2 calculations per shot, and what’s being shown on-screen
doesn’t match up with how the shots are registering.
Computers are great at maths aren’t they. This is one of those problems that SHOULDN’T
exist. Well, today I’m going to investigate why 15 metres isn’t always 15 metres. I’ll
be honest: I don’t really know WHY this specific bug is happening, but by the end
of this video you’ll be amazed the problem isn’t bigger than it is. I’d be more surprised
if these kinds of problems DIDN’T happen! What if there’s a difference between how
far apart the player models are, and how far the bullet travels to reach them? Player positions
are measured as a single, infinitely tiny ‘point’. But their bodies balloon out
in all directions, invading the map in all 4 dimensions. What if this is what’s causing
the variances? Like if the mission is calculating it based on your distance from the enemy by
your central points, while the information it shows on-screen is the bullet’s distance
travelled to the enemy’s hitbox? I guess to know this, we’ll need to know how much
variance there is between different parts of the body being hit. The figures shown on
Reddit are pretty close to the 15 metre mark!
Slothsquadron, CS:GO’s weapon expert, knows the maths behind every shot fired. By getting
the weapon’s base damage, and by adjusting it for armour penetration, distance travelled
and so on, he can work out the EXACT amount of damage that any shot should deal.
But my results have never matched with his! Because when I test these things in practice,
the numbers are always slightly different. Here, allow me to carry out one of my scientific
tests.
The P2000 has a base damage of 35. Headshots cause quadruple damage, and since this person
wasn’t wearing armour, and I shot him at point-blank, the damage dealt SHOULD be 35
x 4… 140. BUT IT’S ONLY 139! WHY?!
Well, thanks to the console command ‘cl_weapon_debug_print_accuracy 1’
I can see why. I was .6 metres away from him. Apparently. So that’s enough distance for
the bullet to have lost some of its energy by the time it reaches the target. Even though
I’m so close to the enemy that I can’t physically get any closer to him without this
game becoming an 18. This damage difference isn’t a one-off occurrence.
EVERY time I test this I’m always slightly out from the damage and distances I SHOULD
be testing. When I say an enemy’s 512 units away, they’re not really that far away cos
they stick out a bit, and bullets take strange journeys to their destination in CS:GO. Some
people have nightmares about school or work, but I wake up with a cold sweat, terrified
that I’m feeding people tiny bits of misinformation with every weapon damage analysis. These differences
don’t sound like much, but one day it’s going to lead to something serious. Like the
DISTANCES NOT MATCHING UP IN A MISSION LIKE THIS ONE.
So how is a point-blank shot to the face .6 metres out, exactly?
Clearly, we need to work out two things: where exactly the bullet is fired from, and where
it’s ending up. The distance should be the distance between these two points.
You’d think bullets in CS:GO should be fired from the gun. Rookie mistake. Bullets in CS:GO
are fired out of your FACE. This makes more sense than you think it should. If you’re
only just able to see over a box and you see an enemy and you fire, you want your bullet
to hit the enemy, otherwise you’d feel cheated, wouldn’t you. But in reality, the bullet
would have been stopped by the box, since your gun is usually down a lot lower than
your FACE is. You can argue the pros and cons of this, but CS:GO has decided that bullets
should be shot out of your FACE, and that’s that.
…but where are they ending up? In this situation, you’d quite rightly expect that shooting
an enemy’s face would be closer than if you were firing at his foot. And you’d be
right- there you go, his face is .6 metres away, and his foot is 1.6 metres away. So
it SEEMS like it’s hitting the player model where it should be.
But that’s when you’re close to the enemy. This sort of discrepancy should diminish as
you travel further away from the enemy, since the vertical component becomes less important,
the greater the horizontal distance is. Remember Pythagoras’ theorem? This distance here
is equal to the square route of the other 2 distances squared and added together? Yeah,
I know you learn this at school and wonder when you’re ever going to be using it as
an adult, but it turns out it’s remarkably useful if you’re going to become a CS:GO
youtuber. Thanks to Pythagoras’ theory, if you’re
literally at your destination and shooting at a floor 1 metre away, that bullet will
have travelled a distance of 1 metre. But if you shoot at the floor 100 metres away…
that’s just 100.005 metres! How does that work? I know the maths, but I still had to
double-check because it seems mad that a bullet travelling 100 metres this way and 1 whole
metre this way has only travelled 100.005 metres. It’s almost like it’s managed
to travel 1 metre down in like, only .005 metres. It’s like magic. Maybe somebody
could use this quirk of nature to create a teleport, or perpetual motion of some kind.
Or, even less likely, a road that goes straight to your destination.
Like, bear with me here. Say I want to get a bus from Plymouth to Cologne for a Counter-Strike
tournament. How can it take a DAY to do that? It’s absolutely ridiculous, especially if
you’re sleep deprived one way and hungover the other. There needs to be an easier way
of getting there. I’m not saying to build a road all the way there. But there’s got
to be some way of going in a straight line from A to B. The sea might be a problem, but
what if they invent some way of going OVER the sea? Strap some jets onto it and you could
probably do that journey in just an hour or so. If they can do all that then I’d use
it, no problem. Provided it’s as cheap as the bus.
Sorry. Side-tracked there. But it means we can effectively remove the vertical component
in the calculation by shooting at players much further way, like THIS.
…And even with this, different parts of the enemy are different distances away! Those
who didn’t listen at school will be surprised to hear that the enemy’s FOOT is now the
closest bit of the body to me, even though I’m shooting at it from head-level! The
back foot, which sticks back a lot further, is the furthest away, and the head is somewhere
between. And so is the groin. So there you go- bodies in CS:GO aren’t
points, or flat surfaces. They’re lumpy, bumpy and shots hitting them will register
different distances depending on all sorts of factors, even if the two of you are stood
‘the same distance apart’. Let’s see the differences this can cause
when stood 15 metres away from the enemy. According to Valve’s developer wiki, 512
units is roughly 10 metres. So 15 metres SHOULD be 768 units away. But… when I tested this
in-game, it was actually just 590.5 units. So I placed myself 590.5 units away from an
enemy, and a headshot was 14.8 metres away, and a back-foot shot was as far as 15.2 metres
away. And that’s without even considering situations like where one player is stood
above the other, which could make these variances even greater, even if technically the two
player models, if measured from their central points, are the same distance from each other.
So if anything, the fact that these ‘problem’ distances in practice are SO CLOSE to 15 metres
amazes me. Well done CS:GO, you’ve impressed me by being less wrong than I thought you
would be. Or maybe I’m overthinking this here, and
the reason is much simpler. Sv_showimpacts 1
Shows where your shots are landing. But there’s not just one location- there are 2; the red
one is client-side, and the blue one is server-side. A lot of the time, these aren’t in the exact
same place. This was done to make cheats less effective, but I honestly think a lot of it’s
down to variables like lag, tickrate and hitbox interpolation, and it could be the difference
between THESE two that’s causing the problems here. Maybe the blue, server-side one determines
whether a shot counts as 15 metres, while the client-side one calculates the value shown
on-screen. Given the how small the variances are in the
reported cases, I suspect it’s more likely to be this than the lumpy, bumpy nature of
player models. But it still shouldn’t be happening.
Valve, pls fix.