Skadi parses Dota 2 replay files.
Dota 2 runs on Valve's Source Engine, which has a very interesting way of broadcasting game information. With Dota 2, Valve opted for protobuf-based of game data. You can get replays of this data by downloading them through the game client.
Developers have been clamoring for game positional data in these replays. Skadi aims to provide chronological snapshots of game state. In the bin directory you will find a script which illustrates some usage.
Currently, skadi:
- parses 100% of replay data correctly
- has a friendly api for random access of full entity data
- scaffolds all known 'user messages' (ex. particle management, combat log, chat, and more)
It does not yet:
- relate all the different kinds of data in a replay coherently
- have adequate testing or optimization
- parse user messages or game events
Skadi will likely continue to change in terms of the API.
I am unable to provide instructions at this time, but to run skadi you will need the following libraries and python bindings:
- protobuf (the bedrock of the whole implementation)
- snappy (a quick compression library used to compress some replay data)
There is an additional python-only dependency:
- bitstring
I will use the pioneering edith project as a reference implementation for parsing packet entities. The author also has very helpful instructions on installing some of the dependencies skadi uses.
Special thanks to the folks in #dota2replay on quakenet. Feel free to stop by if you have any questions! Do hang out, though, since I'm only around sometimes.
Skadi is offered under the MIT license.
This license applies to all revisions of source code.
Visible (textual) attribution is kindly requested. I want Dota 2 fants to know about this project!