nuclearfurnace / rs-storm-parser

A Blizzard StormReplay parser in Rust.
1 stars 0 forks source link

This is really great work #3

Open ajbdev opened 6 years ago

ajbdev commented 6 years ago

Hi there,

I apologize for leaving this as an issue, but I'd really love to see development of this be continued. My rust experience isn't good enough to contribute right now, but I just wanted to say this is incredible work and a very worthy effort.

Having a cross platform binary replay parser (that's fast, too!) would be absolutely amazing.

Feel free to close this but if there is anything I can help out with from a documentation or maintenance perspective I would be glad to lend a hand.

tobz commented 6 years ago

Thanks!

Sorry, this is an incredibly late response. :)

I need to get back to this and freshen it up. There's still a lot of work to do in terms of documenting it as a library; the standalone binary usage is pretty straight-forward.

Generally speaking, it needs:

Beyond that, there's still functional changes to be made: we don't parse the lobby archive, IIRC. We also don't do a lot of the "fluff" things like Heroes.ReplayParser does for you... examining the events to figure out map position over time, who got what talents, KDA, damage, awards (like MVP).

There's also the question of how could we stay as close to the current client as possible? Heroes.ReplayParser, and rs-storm-parser as well, take the approach of conditional logic built in to incrementally parse the replays. Someone on the hotsapi gitter had the idea of using heroprotocol, and parsing the Python source itself, to generate some sort of intermediate language which then a faster program could use as the instruction set for how to parse the replay.

I'm not sure if that could work, because it sounds very duck typing/dynamic everything to me... but it would be a way to avoid having to constantly update the source to handle new changes, instead letting the intermediate language (which could be automated/CI'd) dictate the format to use.

ajbdev commented 6 years ago

Someone on the hotsapi gitter had the idea of using heroprotocol, and parsing the Python source itself, to generate some sort of intermediate language which then a faster program could use as the instruction set for how to parse the replay.

This is what heroprotocoljs does, see:https://github.com/nydus/heroprotocol/blob/master/postinstall.js