akiver / cs-demo-manager

Companion application for your Counter-Strike demos.
https://cs-demo-manager.com
MIT License
1.45k stars 195 forks source link

Problem with recent GOTV (post 7 January 2020) demos from hltv.org ? #418

Closed k4b4l74 closed 4 years ago

k4b4l74 commented 4 years ago

Hello,

I'm using your DemoAnalyzer (and DemoInfo) to parse demos and integrate some datas in my application, it seems that all recent GOTV demos from 8 of January seems corrupted.

image

With CS:GO Demo Manager, it's the same result: image

When debugging DemoAnalyzer, some information are missing from the Header, players positions are empty, and so on... Do you know if Valve has updated their "network protocol" recently so DemoInfo needs an update somewhere ?

0BuRner commented 4 years ago

There was a CSGO update on 6th Jan., US timezone so maybe 7th on Europe as your screenshot seems to indicate. https://blog.counter-strike.net/index.php/category/updates/ It may causes that issue...

k4b4l74 commented 4 years ago

This is an "old" demos:

image

and this is a new demo:

image

As you see, all informations concerning Ticks, Times, etc... are empty... And the protocol version is different (13736 vs 13726).

0BuRner commented 4 years ago

Good catch ! This confirm our thought :)

You should open an issue here as it's the project on which this one is based on to analyze network protocol : https://github.com/StatsHelix/demoinfo

If you need a fast fix, you should look to other projects that implement the new CSGO network protocol and try to understand the differences if you have some coding knowledges adn some luck. I'll try to take a look this week if I find some time.

Weird that no one else reported this issue...

@k4b4l74 si on m'avait dit que j'allais converser avec une légende de CS sur Github, je n'y aurais pas cru :p haha

akiver commented 4 years ago

Hi,

I checked to be sure but nothing has changed, the problem is that these demos are corrupted. It used to happen quite often with ESEA demos too (didn't check if ESEA did something about it).

Recent demos from MM are working fine, I think it's related to how the GOTV / server has been stopped (force kill?). If you try to play one of the affected demos in the game, you will see that the game itself can't stop the playback since they are corrupted.

I'm sorry but I can't do anything about it. If you find a way to create a corrupted demo you should report it to the CSGO dev team so they may fix this issue.

akiver commented 4 years ago

https://liquipedia.net/counterstrike/DreamHack/2020/Leipzig/Europe/Open

The event organizer is ESEA, I'm not surprised that their demos are corrupted 😄

0BuRner commented 4 years ago

It explains why no one else reported the issue here nor on other projects. Thx akiver for the explain

k4b4l74 commented 4 years ago

hi thx a lot for your information akiver. Good to know it's corrupted demos ;).

I have applied some fix in my code + rewrite a little DemoAnalyzer to parse correctly corrupted demo. 1) Try with default detected Analyzer (cevo, valve, esea or ebot), if there is an exception during parsing or the score of last round is not a victory detection (aka ok=(16-x or 19-17), ko=(11-2, 19-18)), try again with another demo analyzer. Repeat until it's good. With a corrupted demo, Valve is always the default and it will crash.

2) If any vital information is missing (aka tickrate etc....), because freezetime is 15sec, we can calculate the tickrate from the first round ((round.freezetimeTickend - round.tick)/15) and then we can fix every missing duration everywhere.