There are lots of Dota 2 replay parsers, I’ve picked up Manta (opensourced by Dotabuff) and I’m trying to build upon it to allow replay analysis at a natural level.

Here are some things I hope you’ll agree with:

  • Dota 2 is a game of strategy, skilled players make conscious, calculated moves to tilt (ha!) the odds in their favor, the effects of which snowball over time.

  • Execution of these tactics can be flawless, non-existant, or somewhere inbetween. Current companion sites provide a good summary of the statistics, but make no attempt to offer any particular reasons for success/failure.

  • One of the fastest ways to learn a mechanic is to imitate how better skilled players execute under similar circumstances. Typically, this is done by a post-mortem of downloaded replays.

  • Most of the sites tend to focus on analysis of professional/e-sport matches, but the overwhelming majority of Dota games are “pub” games played by normal people. I think the pub meta is beautiful and full of fun ideas waiting to be discovered. (please email me if you agree that HoD Invoker should become mainstream)

For example, some heroes have a higher attack range than others and can abuse this to attack their enemy from such a distance that they are unable to retaliate. A good player would take advantage of this; and my goal is to provide a parser which can identify a player as being skilled at this (and other) mechanics.

I’m trying to build something which can look for these behaviors without diving into the level of Source engine entities.

The playback at the top is a sneak peek, this replay was pre-parsed and is being streamed from an Amazon EC2 instance (when heroes are damaged, the circles turn reddish). I’m currently using Flask+MongoDB/PyMongo for user registration and views, Go for the parsing, and Node.js to stream a parsed replay.

I anticipate I would have to cache parsed replays, and think of a good way to store them. An alternative option would be to have the parsing take place on the client side, but this might not be as nice.


For now, user registration and login is working, and that can be used to authorize access to the ‘viewer’. Hopefully will have more updates soon!