|
First of all, stay calm as this shouldn't affect balance.
TL;DR: 300 hp structure died due to a total of 299.7893 damage because the damage formula ignored the 0.2107 shield points.
Full story:
Quantic Massan's reddit thread with a cannon dropping from 4 to 1 life due to a zergling attack started my research.
Direct link to the video.
Some facts that you should know (most people don't seem to know this): - Structures don't reduce incoming damage with their armor while being constructed - Minimum damage dealt is 0.5 (just like Broodwar) - Protoss' shields start to regenerate after a timer. This is set to have a duration of 10 game seconds. Receiving damage resets this timer immediately. - 1 game second consists out of 16 game frames - The life display rounds down unless the value is <1. Then it will round up to avoid displaying 0/... for an alive unit. - Regeneration/construction adds life/shields in fractions on each game frame rather than a whole point every few game frames.
Due to how the life display works, the only reason why the cannon's life dropped from 4 to 1 was, that it had something like 4.123 hp and received 4 damage resulting in 0.123 hp which are displayed as 1/...
First, you expect that the shields regenerated over time, but Massan provided a (replay file) that showed how this situation unfolded: the cannon did not regenerate shields as it was consecutively attacked. But it revealed that it was being constructed which explains why the life points hit "4" instead of the expected "6" in the video with only zerglings attacking the cannon.
Since structures don't have armor while being constructed, the armor couldn't have created this odd situation. So, I suspected the construction process to add too much hp, but tests always resulted in the correct amount of HP being added to the unit.
The only chance to understand what was going wrong was trying to recreate the situation that was in the reddit post's video. My test map has 2 lings attacking a cannon that was warping in. The cannon had to finish shortly before its destruction. Then I tracked the damage dealt to the unit and output the sum of the damage and the currently remaining shield and life points of the cannon on the screen.
The result was:
You can see that the cannon dies without even receiving 300 damage in total. The damage formula ignored the 0.2107 shield points that were added last by the construction process.
Here is the map that I created for testing. Just start it and watch.
As a reminder, this shouldn't affect balance at all as the minimum damage dealt is 0.5. I posted this mainly for a teaching purpose and because it's a small funny bug/issue in sc2.
I've created a bug report for this bug/problem already.
edit: update: I've had a case of the ignored shield points being > 0.5. So this has a tiny chance to affect balance as the building can die to weak damage instead of surviving it. For example, the third bounce damage of a Mutalisk deals low enough damage for these ignored shield points to matter.
screenshot:
update 2: Warped in units have the same problem. For example, my zealot was ignoring 0.6226 shield points.
update 3:
New knowledge acquired due to tests: If shield points < 1, then shields are ignored in the damage calculations.
|
the image isnt working for me.. nice research, looks interessting
|
On July 22 2013 09:37 Paljas wrote: the image isnt working for me.. nice research, looks interessting Now it worked with the image hosting service I normally use. I crashed the service twice before that with my first image. :X You should now see both screenshots.
|
yep, works now. thanks for doing this research and posting it!
|
So THIS is why Protoss was so UP for most of sc2 history!!!
|
Interesting factoid, but the percentage of games where this ends up mattering in any way must be infintesimal.
|
I love these kinds of threads
|
meh normally I like these small quirky things but this is so small I can't care.
|
"First of all, stay calm as this shouldn't affect balance. update: it possibly can"
no it cant, the effect is too small, even if you even notice it. In the case it has an effect on the outcome of a game (which would near never happen anyways), the effect of the game on balance statistics will be 0 with any decent sample size.
|
Well, still can't be sure it's a true bug and not some kind of front end error since in both cases you showed the damage would have killed the structure even if the shields had been added. You would need a situation of the form x shields, y hp, and z damage. Where x <1, and x+y > z (i suppose y should be > x as well) to test if this is really relevant and not a problem with the editor display.
|
Zerg OP
User was warned for this post
|
I CANT BELIEVE I DIDNT FIND THIS OUT ON MY OWN YET! :O Nice find lol, though I don't pretend to understand :D
|
On July 22 2013 10:10 Yorbon wrote: "First of all, stay calm as this shouldn't affect balance. update: it possibly can"
no it cant, the effect is too small, even if you even notice it. In the case it has an effect on the outcome of a game (which would near never happen anyways), the effect of the game on balance statistics will be 0 with any decent sample size. Persuaded. :D
Still, it could play a role in some rare occasions as it could decide if a cannon attacks one more time or not versus Mutalisks attacking a stack of cannons. It's nothing huge, but it's still a problem in the game. Warped in units might have the same problem.
edit: I just tested it and yes, warped in units have the same problem.
|
Zergs will be like.... 'AWMAGAD THEY'RE NERFING US AGAIN. HERPY-DERPY, MUTALISK ALREADY WEAK AND SHIT" ~_~
On the other hand, it's rly surprising that it took us so long to find it but still good job finding the bug and even researching everything about it. Gj, gj!
User was warned for this post
|
Interesting, this should apply to warping in units too, so my poor gateway units are more fragile then I thought when warped in while attacked! So shields below shown 1 gets ignored in the damage formula and damage gets applied to the hull completely and if the hull goes to 0 the unit dies disregarding that there was some shields left.
|
On July 22 2013 11:15 synd wrote: Zergs will be like.... 'AWMAGAD THEY'RE NERFING US AGAIN. HERPY-DERPY, MUTALISK ALREADY WEAK AND SHIT" ~_~
On the other hand, it's rly surprising that it took us so long to find it but still good job finding the bug and even researching everything about it. Gj, gj! Yeah man, stick it to the zerg players!
|
On July 22 2013 10:10 Yorbon wrote: "First of all, stay calm as this shouldn't affect balance. update: it possibly can"
no it cant, the effect is too small, even if you even notice it. In the case it has an effect on the outcome of a game (which would near never happen anyways), the effect of the game on balance statistics will be 0 with any decent sample size.
Cannon finishes with 1 health, proceeds to kill expo, would otherwise have died.
HT warps in with 1 health, proceeds to feedback full medivac and save base (okay, this is a little ridiculous).
Still, it's a bug and should be fixed. No reason to leave something detrimental in the game for no reason even if it is very small.
|
Hmm, so shield points <1 round down to 0 logically, unlike health that always rounds up to 1.
Neat find, ultimately results in protoss units having at (very) most 1 health point fewer than designed during warp in and after recharging partially.
|
I've addressed this issue with blizzard a few years ago mainly during 6pools when a 4hp ling would live a probe hit. I never really got past them looking into it now that i think about it, kind of forgot since 6pools were less common.
(happens with all zerg units)
|
On July 22 2013 12:22 Msr wrote: I've addressed this issue with blizzard a few years ago mainly during 6pools when a 4hp ling would live a probe hit. I never really got past them looking into it now that i think about it, kind of forgot since 6pools were less common.
(happens with all zerg units) Zerg units allways regen hp whether they're in combat or not right?
|
|
|
|