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
Cannot parse 1.21 replays #8
Comments
You can download older versions of the Can you try if you can parse these replays with the old version? |
Absolutely. Both 1.0.0 and 1.0.1 return the same error: |
I looked into it more deeply, and the replay format changed. It will take unknown time to reverse engineer the changes and implement parsing them. |
Understandable. Thanks for looking into it. |
I am also looking forward to a fixed version. Thanks. |
So Blizzard changed replay format completely? Or it's just a few changes that need to be reverse engineered? |
No, it's not a "complete" change, but the replay file header changed and new commands have been added for sure. |
jca2 has updated his BwChart to parse 1.21 replays |
Well, in that thread jca2 himself claims it's still a work in progress, and at the end of that thread users claim it is broken again. |
In the developer update at the end up 2017, they stated that one of the priorities for 2018 was to get the BWAPI working again. Hopefully that comes with a little more transparency about replay parsing? |
Yes, hopefully. The BWAPI project also contain(ed) a replay parser, but it hasn't been updated a while. |
jca2 released Version 2.00C, Build 2.
We could just ignore unknown actions until we get to know them. APM count will be not very accurate, but still. Or if it's not the way it would be great if we could just read replay header at least (player names, races, etc). That would help much. |
Will look into it when I have time. BWChart is not open source though, so it's not that big of help... |
I tried something..
|
Hello, what if i contact Bwchart creator and try to get a source code of some bwchart (of course i will tell him that i am willing to help out this project). Will it be helpful? |
Yes, it would be helpful. Also, the source code is not even needed, if you can get the new replay format (or what has changed in the latest 1.21 version), that would be enough for me to update the library to support 1.21 replays. |
For what it's worth, this is the creator of bwchart's TL page: http://www.teamliquid.net/forum/profile.php?user=jca2 |
Asked JCA to share the 1.21 changes here. Would you consider working on it once you have them? Alternatively could you provide some straightforward instructions? There's no Go source for replay parsing at the moment, and it would enable some interesting use cases. |
Yes, sure, if I know the changes, I will implement them. I just don't have the time to reverse engineer it myself. |
The format seems to be as follows:
Compression format is zlib.
Haven't gotten any reply from TL yet. Hopefully this is enough to salvage the parsing that already exists? Surely there's some new actions that will be unknown. |
@marianogappa I'm not sure this is enough, but better than nothing. I'll start working with it. |
Statud report: started working on 1.21 support a few days ago, development takes place on the dev branch. So far parsing succeeds with the replay header, but new commands are not yet supported. |
This is great news @icza! Thank you. Were the instructions enough? If not, can you please provide the steps somewhere? |
@marianogappa Actually the only change between the existing modern parser (1.16+) and what you've described for 1.21+ replays was the in-between block between the sections, the rest is the same for replays 1.16-1.20 and was already implemented. One change you didn't mention was the content of the replay ID section, it is changed from New commands are yet to be reverse engineered. |
@icza Thank you. Are the changes you mention pushed to the dev branch? Because I've run |
I did the above within the latest |
@marianogappa I pushed another commit to dev yesterday, it does not fail now. When a new, unknown command is encountered, it stops parsing that block. Best that can be done without knowing anything more about them. Besides the commands section, everything else can be parsed as with previous replays. |
Good news fellas! I've finished parsing new, 1.21 commands, working code is on dev. I make some tests, and if all good, I will merge it into master and create a new binary release. |
@icza sounds great!
I've just pulled
I'm running:
Games were played this week; tried many. |
I'm trying "old" 1.21 replays. If I'm not mistaken, current SC version is 1.22? Could it be Blizzard changed something again? Yes, please send me 1.22 replays (e.g. to my email, same username as here, and it's a gmail address). P.S.: Yes, current version is 1.22.2 (patch notes). |
@icza I've sent you around 5 replays, each named by the date it was played, up to yesterday. This way you can test against different versions including the current one. |
Also just found a bug report, that even SC itself can't play replays: https://us.battle.net/forums/en/starcraft/topic/20770507009 |
@marianogappa Also sorry, user name in my email is iczaaa (the rest is the same as detailed above). Please resend replays. |
Email bounced. Are you sure about that email address? Note that your username is "icza". |
Resent. |
@marianogappa Got the replays, thanks. The version on the dev branch is capable of parsing all your replays without errors. Are you sure you used the dev branch for your tests? |
I still think it's something else; probably something silly which just needs some log debugging, because I can't parse any replays spanning from September to date:
|
The "dev" in the log I'm showing is the branch I'm on. |
Please include the output of |
|
|
You haven't updated everything I guess. It prints parser version v1.2.0 for me. This is the full output for me:
|
Ah, got it. I'm updated but the screp.go is using the library that I originally cloned and was compiled only the first time. Let me see. |
There seems to be a compiler error on |
|
The reason that doesn't work is because go is using the cached copy of the imports. Let me clean that. |
FWIW this is the line to do that:
|
FYI, there is |
Thanks. I got it working! Awesome. |
Coolio. Then I proceed with merge and release. Thanks for all the feedback and help. |
Ok from my point of view you're good to close this after you do the master merge. |
Thank you! This is a very useful tool. |
Here it is, v1.1.0 binary releases: https://github.com/icza/screp/releases/tag/v1.1.0 Merry Christmas and Happy New Year to Everyone! |
@icza: awesome, nice job! FYI I looked deeper into my issue because the pkg explanation didn't make sense to me. The root cause was that my cloned version of the repo wasn't in the GOPATH, and I also had an outdated version on the GOPATH. So the imports went off the outdated GOPATH version. Whoops, sorry. |
Wow @icza I just want to say thanks, and great job! I opened this issue over a year ago, and you're still rocking it over here. Really appreciate what you've done with this package and this problem!! |
@regexpressyourself Sorry it took so long to add support for 1.21+ replays, the changes were non-trivial, and I was hoping someone with the knowledge would come forward so I don't have to invest my time to reverse engineer the changes myself (unfortunately this wasn't the case, although I received some help). |
No need to apologize -- definitely non-trivial. I'm just glad it was figured out! |
Hi icza,
I am trying out your tool, and am having a problem parsing replays from the 1.21 update. I am pretty sure I was able to properly parse 1.20 update replays, so it must be a change with the most recent patch.
Here is a link to the replay file I am using.
I am running:
The error message is:
It looks like BWChart had a problem with 1.21 replays as well.
I'm not a Go dev, but I'm happy to help in any way I can.
Thanks in advance!
The text was updated successfully, but these errors were encountered: