Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Replays] Permanent Status (BKB, invis, smoke) #53

Closed
teddybee-r opened this issue Jun 2, 2022 · 7 comments
Closed

[Replays] Permanent Status (BKB, invis, smoke) #53

teddybee-r opened this issue Jun 2, 2022 · 7 comments
Assignees

Comments

@teddybee-r
Copy link

Replays are bugged when you jump around the timeline which gets you stuck with permanent effects for things like BKB, smoke, invisbility, ...

Very annoying for any type of content creation (very often present in short clips by people on reddit/youtube) and simply just watching replays.

Experienced on Windows (DirectX) and Linux (Vulkan).

Example: Underlord currently is perma smoked.
image

@arkhanov
Copy link

arkhanov commented Jun 2, 2022

When you rewind or fast forward there's a huge burst of sound.

@jeffhill
Copy link
Contributor

jeffhill commented Jun 3, 2022

Can someone share a matchID with some good examples of this? I think this bug happens on each individual modifier/effect that has the problem and needs to be corrected in the code for each one, so some specific examples would be really helpful. Thank you!

@Dopwop
Copy link

Dopwop commented Jun 3, 2022

Game ID: 6582012262 (Which I also believe is the game shown in OP's screenshot.
Time -0:36 (before creeps spawn) - I will always refer to the time on the in-game clock, with negative values for when the clock is ticking down instead of up.

If you skip ahead past -0:36, either by adding +10s from -0:46 or by adding +60s from "-1:36", Underlord will appear to be permanently affected by Smoke. Note that in the unaltered replay, there is NO smoke used.
Note: "-1:36" is before the in-game clock is visible, -1:36 is exactly at the moment after TSM FTX's and OG's hero intro has played, which in my opinion is likely how this bug occurred the first time.

The bug in this instance applies a smoke effect to Underlord, Rubick and Windranger. This is present both visually on the hero model and as a buff on the HUD.
Underlord gains the Smoke buff at ~0:36 and loses the Smoke buff at 0:17 (53s later).
Rubick gains the Smoke buff at -0:36 and loses the Smoke buff at 0:18 (~54s later).
Windranger gains the Smoke buff at -0:36 and loses the Smoke buff at 1:18 (~1m54s later).

Additionally:
Underlord is also affected by Atrophy Aura at level 0, receiving 13 bonus damage.
Rubick is also affected by Spell Steal.
Kunkka does not get smoked, instead he gains a permanent Phase Boots buff, but no visual change.
Lina does not get smoked, instead she gains the Soul Ring Sacrifice buff, the Fiery Soul buff at 7 stacks level 0, and the Bottle Regeneration Buff with accompanying visuals.

I've tested this 3 times in the following way:

  1. Start Replay
  2. Press the 'Jump To Game"-button
  3. Wait until TSM FTX's hero intro and OG's hero intro has played
  4. Press the "+60"-button

Some thoughts: This bug seems to 'pull' buffs from some other time in the replay. I'd guess it's from the same time for all heroes, as multiple heroes are affected by Smoke at the same time. If we were to look through the replay for a game moment where all these heroes have these buffs organically, we could find where this bug is 'pulling' the buffs from, so to speak.

@Dopwop
Copy link

Dopwop commented Jun 3, 2022

I have looked through the replay and found the time at which these buffs occur organically.
Game ID: 6582012262 - Time: 14:24 (15m00s after the bug occurs)
For whatever reason, this bug pulls buffs from exactly 15 minutes later in the game.

Now for the final piece of this puzzle: If at any point in the replay, you decide to drag the timeline back all the way to the beginning, you will see the time -0:15:36. Seems familiar?

My attempt to visualize this:
[replay start]---------------------------------------[bug]--------------------------------------------------[buff source]
[-00:15:36]--------------------------------------[-00:00:36]----------------------------------------------[00:14:24] - game time
[00:00:00]---------------------------------------[00:15:00]-----------------------------------------------[00:30:00] - replay time

Summary: The start of the replay is at -15m36s game-time, If you skip towards -0:36 game-time, the replay bugs out and grants heroes a buff they should've received 15 minutes later.

Is there some piece code where the wrong 'variable' is used, game-time vs replay-time (in my terms)? I can't phrase this properly, unfortunately my programming MMR is Herald 5.

@teddybee-r
Copy link
Author

This should happen across every replay.
The easiest way to reproduce this is pro dota games (Recent major) and skim through the replay especially during fights.

This applies to visual effects like the ones mentioned and just the status icons (Invoker affected by 6wex, 2x Ring of Aquila)

@jeffhill
Copy link
Contributor

jeffhill commented Jun 3, 2022

Thank you so much for the repro cases and the analysis. Turns out I was wrong about the case-by-case nature of the bug - it was systemic.

This bug seems to 'pull' buffs from some other time in the replay.
That's exactly what was happening!

The buff network structure in a replay had data "from the future" that was incorrectly getting applied when you skipped around. Of course this is impossible during a normal game (modifiers from the future haven't been created on the server yet) so it only caused problems in replays. It's certainly possible there are more bugs here with modifiers vs. replays, but the ones mentioned in this issue are fixed locally with my change, and it certainly explains the behavior.

This fix will ship in the next hotfix (likely later today).

Thanks for the bug report!

@jeffhill jeffhill closed this as completed Jun 3, 2022
@Dopwop
Copy link

Dopwop commented Jun 3, 2022

Glad to help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants