rust-parser
s2prot
rust-parser | s2prot | |
---|---|---|
2 | 3 | |
1 | 51 | |
- | - | |
10.0 | 4.8 | |
over 1 year ago | 6 days ago | |
Rust | Go | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
rust-parser
-
Show HN: Rust nom parsing Starcraft2 Replays into Arrow for Polars data analysis
This is insanely cool! Very impressed you managed to implement a full parser in Rust.
I implemented a basic one in Rust a while back: https://github.com/ZephyrBlu/rust-parser
And a full one in Python with a few bells and whistles ages ago: https://github.com/ZephyrBlu/zephyrus-sc2-parser
Don't maintain either of them though :(, and the Rust one is super rough.
SC2 is a very interesting area for data analysis, but at the same time I found it very challenging. There is so much nuance and inconsistency across games it can be really hard to do accurately do things like categorize builds or measure build timings.
The area I ended up focusing on was builds, and I feel like I did some interesting stuff there: https://sc2.gg/reports/top-openings-2022/.
I found personal statistics less interesting than aggregate statistics. Even pro games are very volatile, ladder games even more so. Extremely hard to get reliable signal out of them if you're trying to track things across games. Even simple things like Collection Rate are poor indicators without significant categorization work (Matchup, build, opponent build, etc).
- I redesigned and open-sourced my SC2 search engine! Now featuring interactive filtering, fuzzy matching and search categories
s2prot
-
Show HN: Rust nom parsing Starcraft2 Replays into Arrow for Polars data analysis
SC2 replays are MPQ files, which is a proprietary format created and used by Blizzard. It's an archive that may contain multiple files stored with different compression and optionally encrypted. I wrote a lib to parse MPQ files that embodies SC2Replays: https://github.com/icza/mpq. I also wrote an SC2 replay parser that is more or less a port of the official s2protocol: https://github.com/icza/s2prot
-
Rust 2024 the Year of Everywhere?
vm = virtual machine/memory?
I'm porting this Python library to Rust: https://github.com/Blizzard/s2protocol.
For the shitty, first pass prototype code I've written so far I've seen a ~30-40x speedup compared to the Python implementation and a ~2x speedup compared to a Go implementation by someone else: https://github.com/icza/s2prot.
That is why I chose Rust over a GC language like Go. It's a lot faster out of the box, even without me having a strong understanding of memory operations.
- Could humans theoretically read the code of a SC-replay?
What are some alternatives?
s2protocol-rs - Starcraft 2 Protocol Replay Reader
parse-rosetta-rs - Comparing parser APIs
zephyrus-sc2-parser - A parser for .SC2Replay files
Tims-PackageServer - Lightweight Package Server for WoltLab Community Framework
mpq - Decoder/parser of Blizzard's MPQ archive file format
nom - Rust parser combinator framework
pdx-tools - View maps, graphs, and tables of your save and compete in a casual, evergreen leaderboard of EU4 achievement speed runs. Upload and share your save with the world.
search