The unit's almost got a built in humor function lol at first the tank won't shoot without the vision, so the moment you get vision is like the punchline moment lol
From a programming standpoint, I think the way it works is if the tank is in range of EVEN A SINGLE PIXEL of the hit circle of the enemy target, then it can shell it (the animation always hits the center of the target, which is why this looks weird).
The distance function is also very simple. To avoid taking the square root, it uses a piecewise linear approximation. This approximation is worst at odd multiples of 45° angles from vertical (i.e. NE, NW, SW, and SE) and best at multiples of 90° (E, N, W, and S). Moreover, the sprites for some buildings do not match their collision perfectly. The case of a Nexus warping in is particularly extreme, since it looks like a little ball but is in fact a large trapezoid.
@@EebstertheGreatDo you have source that hacks were done to avoid taking the square root? Because to check if something is in range, you don’t even need to calculate the distance. Just take the squared distance from tank to the unit, and compare that against the squared of the tank range. Or just store the squared value of the tank range in the first place and compare against that. I’d understand if they wanna use distance specifically since it is required for some other game logic, but not solely to avoid square roots.
@@khoavo5758 They use a very basic distance calculation in a lot of places in the code, such as the crappy_move_to_target function and especially the xy_length function. You're right that in the case of calculating range, it's not necessary: they could just compare against squared range. They don't though; they just use xy_length. One possible reason to do this was for consistency with movement and target acquisition. The xy_length function looks like this: int xy_length(xy vec) const { unsigned int x = std::abs(vec.x); unsigned int y = std::abs(vec.y); if (x < y) std::swap(x, y); if (x / 4 < y) x = x - x / 16 + y * 3 / 8 - x / 64 + y * 3 / 256; return x; } So you get a distance of |x| if |x| > 4|y|, a distance of |y| if |y| > 4|x|, a distance of (59/64)|x| + (99/256)|y| if 4|y| > |x| > |y|, and a distance of (59/64)|y| + (99/256)|x| if 4|x| > |y| > |x|.
bruh you terran is weak and extremely hard, because it is, and even if seige tank range that long seige tanks can get killed easy as well. Plus all units can actually hit that long say something like a hydra right there are glitches that are possible
Well, it's not "farther than you can see". The game was designed and played on 4:3 monitors. This problem with vertical range came into play with the spread of widescreen monitors. "Right thumb rule" was - tank shoots in one screen range. But now vertically we have a smaller screens (instead of, for example, 1280*1024 we have 1280*720).
@@Roma_KR No, that's not correct. Tanks can literally shoot farther than they can see. A tank in siege mode has an attack range of 12 and a sight range of 10. So if a unit is 11 distance from a tank in siege mode and in the fog of war, the tank can't see it, so it won't attack. But if you then float a barracks or something over to spot for the tank, suddenly the tank will shoot it, because it was in attack range all along. It has nothing to do with aspect ratio, which doesn't affect fog of war anyway.
@@EebstertheGreat I guess you misunderstood me. I'm not talking about the fog of war. I'm talking just about clear range and the fact that vertically siege tanks shoots from outside of a screen.
This is why tvz is the only real matchup. Its also why if you play terran you need to not be stupid and leave a couple defensive tanks on the high grounds in your bases.
@@Esteban-ss6wq in TvZ, command center is the most TESAGI. Like nothing can hit air in late game which makes command center basically invincible in TvZ.
Siege tank's range is so humongous that even people who spent 15-20 years playing this game professionaly still get amazed by it's range
The unit's almost got a built in humor function lol at first the tank won't shoot without the vision, so the moment you get vision is like the punchline moment lol
From a programming standpoint, I think the way it works is if the tank is in range of EVEN A SINGLE PIXEL of the hit circle of the enemy target, then it can shell it (the animation always hits the center of the target, which is why this looks weird).
The distance function is also very simple. To avoid taking the square root, it uses a piecewise linear approximation. This approximation is worst at odd multiples of 45° angles from vertical (i.e. NE, NW, SW, and SE) and best at multiples of 90° (E, N, W, and S). Moreover, the sprites for some buildings do not match their collision perfectly. The case of a Nexus warping in is particularly extreme, since it looks like a little ball but is in fact a large trapezoid.
@@EebstertheGreatDo you have source that hacks were done to avoid taking the square root?
Because to check if something is in range, you don’t even need to calculate the distance.
Just take the squared distance from tank to the unit, and compare that against the squared of the tank range.
Or just store the squared value of the tank range in the first place and compare against that.
I’d understand if they wanna use distance specifically since it is required for some other game logic, but not solely to avoid square roots.
@@khoavo5758 They use a very basic distance calculation in a lot of places in the code, such as the crappy_move_to_target function and especially the xy_length function. You're right that in the case of calculating range, it's not necessary: they could just compare against squared range. They don't though; they just use xy_length. One possible reason to do this was for consistency with movement and target acquisition. The xy_length function looks like this:
int xy_length(xy vec) const {
unsigned int x = std::abs(vec.x);
unsigned int y = std::abs(vec.y);
if (x < y) std::swap(x, y);
if (x / 4 < y) x = x - x / 16 + y * 3 / 8 - x / 64 + y * 3 / 256;
return x;
}
So you get a distance of |x| if |x| > 4|y|, a distance of |y| if |y| > 4|x|, a distance of (59/64)|x| + (99/256)|y| if 4|y| > |x| > |y|, and a distance of (59/64)|y| + (99/256)|x| if 4|x| > |y| > |x|.
Terran is the weakest race - Artosis
bruh you terran is weak and extremely hard, because it is, and even if seige tank range that long seige tanks can get killed easy as well. Plus all units can actually hit that long say something like a hydra right there are glitches that are possible
What a great compilation of moments this is hahaha thank you as always Jinjin!!!
2:18 that dragoon....
Hurts to see..
@@CanariasCanariass he lost 4 extra goons and didn't even get the tank kill because of him... painful
Tanksagi
I swear tank range is based on how big your current monitor you're using
I remember once JulyZerg said: " zerg is the best race if you can micro" . But I would rather exploit this terrans shenaningans better.
thanks for everything jinjin
Vertically, tanks will shoot off screen. It's amazing!
Imagine being able to shoot further than you can physically see. This is the reality of a Terran Siege Tank. Crazy AF.
Tesagi in it's finest form.
That is also how actual tanks work.
Well, it's not "farther than you can see". The game was designed and played on 4:3 monitors. This problem with vertical range came into play with the spread of widescreen monitors. "Right thumb rule" was - tank shoots in one screen range. But now vertically we have a smaller screens (instead of, for example, 1280*1024 we have 1280*720).
@@Roma_KR No, that's not correct. Tanks can literally shoot farther than they can see. A tank in siege mode has an attack range of 12 and a sight range of 10. So if a unit is 11 distance from a tank in siege mode and in the fog of war, the tank can't see it, so it won't attack. But if you then float a barracks or something over to spot for the tank, suddenly the tank will shoot it, because it was in attack range all along.
It has nothing to do with aspect ratio, which doesn't affect fog of war anyway.
@@EebstertheGreat I guess you misunderstood me. I'm not talking about the fog of war. I'm talking just about clear range and the fact that vertically siege tanks shoots from outside of a screen.
I even bugged out watching this as a Terran player wtf.
1:42 larva🤣🤣🤣🤣
Tank good unit
1:38 lol
10/10 thumbnail lol
Somewhere Artosis is feeling himself watching these pros react to tesagi range.
Arty knows he is lying, its just propaganda and clickbait, he also says he is the second best terran if not the best sometimes lol
Tesagi
This is why tvz is the only real matchup. Its also why if you play terran you need to not be stupid and leave a couple defensive tanks on the high grounds in your bases.
Omg
To be fair Terran have like 5 things more imbalanced than this. We can deal with it.
Vultures, mines, stimpack, siege tanks and scan
@@Esteban-ss6wq vessels, we can go on actually
@@Esteban-ss6wq in TvZ, command center is the most TESAGI. Like nothing can hit air in late game which makes command center basically invincible in TvZ.
tefork
yes, terran is fork.
Make tank
terran so weak that it can hit from 1 base to another, no need to move units :D
Tesagi