RiotGames / developer-relations

Riot Games Developer Ecosystem Bug Reporting
http://developer.riotgames.com
746 stars 44 forks source link

[BUG] [Match V5] Incorrect match duration in some matches (and incomplete timeline) #538

Open trebonius0 opened 3 years ago

trebonius0 commented 3 years ago

Hey guys

I've noticed that some matches have an incorrect game duration (and an incorrect timeline), like this one : LA2_1080735012

For this match, on match v4, the duration is 1121s, on match v5 it's 1929s In the timeline, the last frame (which corresponds to the end game score) also has this incorrect duration

It affects at least 2000 matches in the past 24h (from what i can see with my monitoring). I'm adding more monitoring to get a clear pictures of how many matches are affected

Thanks

trebonius0 commented 3 years ago

@RiotTuxedo I'm estimating that it's affecting 6k matches per day (I got 3k hits in 12 hours)

Also, I've found that for some matches (EUN1_2923071475) for instance, the timestamp of the GAME_END event is 2457041, whereas the gameDuration is 2631700

So a 4 minutes difference, which seems to be a bug also. (I have no metric on this "new" issue yet, i'm still investigating it)

This is important to fix, as have an incorrect game duration leads to incorrect "per minute" computations (gold/min ...)

mrdoowan commented 3 years ago

I think the property "timePlayed" in each participant is what you're looking for.

I have yet to check if "timePlayed" is the same value for all matches, but it seems to be so far.

leotianlizhan commented 3 months ago

Is this fixed? is the match-v5 API docs on gameDuration referring to this bug?

Prior to patch 11.20, this field returns the game length in milliseconds calculated from gameEndTimestamp - gameStartTimestamp. Post patch 11.20, this field returns the max timePlayed of any participant in the game in seconds, which makes the behavior of this field consistent with that of match-v4. The best way to handling the change in this field is to treat the value as milliseconds if the gameEndTimestamp field isn't in the response and to treat the value as seconds if gameEndTimestamp is in the response.