Skip to content
Andrew edited this page Sep 12, 2013 · 22 revisions

Skadi

###What is Skadi?

Skadi is a Dota 2 replay parser. Skadi takes a replay of a Dota 2 game, processes the file and makes all the information available to use in plots & data analysis.

This project does not yet use semantic versioning. There is no public/private API distinction at this point, though we are increasingly resisting changes to the main demo/streaming interface. For now, best to use Skadi with some caution. It may not be production ready. For up-to-date information, join #dota2replay on Quakenet IRC.

Getting Started

Installation and Dependencies

The following packages are needed to run Skadi:

Skadi tutorial

TUTORIAL IS A WIP

This will be a quick run-through of how to parse some data using Skadi. All you'll need is a working installation and a dota 2 replay file (.dem). The first thing you'll want to do is construct a demo file.

from skadi import demo

demo_file = 'YOURDEMOPATH/298738006.dem'
demo_var = demo.construct(demo_file)
# demo_var specifies the demo file per Skadi

tick, user_messages, game_events, world, modifiers = demo_var.stream(tick=20000)
# a stream is a representation of the demo file at a certain tick.  
# It contains information about the game at that tick in various formats.

#Let's look at what kind of information is in the world.

This demo_var is the Skadi representation of the .dem file. In order to get some useful information out of this demo, we first need to know when we should look. Demos are reconstructed using ticks. You can think of ticks as frames in the replay. Every 1800 ticks, the demo contains a full tick, which details all aspects of the world. The ticks in between are delta ticks, which contain the changes from the previous tick.

What does Skadi enable?

Skadi enables many kinds of statistical analysis, plotting and comparisons of game data with 100% accuracy. Because the data is coming right from the replay file, you can calculate statistics on your own play, compare your creep score against others over the game, plot all net worths over time. Right now, skill shot analysis is being explored, such as a Pudge hook or Mirana arrow %.

*Dendi's Radiant Invoker Invocations

Radiant Invoker

recent damage

What data is available through Skadi?

This is one of the biggest knowledge gaps with Skadi currently. The dem file does contain everything that is needed to replay the game via the Dota 2 client. We are still testing and exploring what Skadi will enable. We have a good understanding of player/hero related items (gold, health, xp, level, items, etc.) Modifiers (buffs/debuff) are a big area of interest, but have not been explored as extensively.

FAQ

How can I help?

Bug Reports

Can I do...

Reference

Demo File Structure

Types of data encountered in Skadi

Example Scripts

TODO: Beginner Tasks

Contact

#dota2replay on Quakenet IRC is the fastest way to get in touch. Additionally, you can e-mail [email protected]

Thanks

I use the pioneering edith project as a reference implementation for parsing bit streams.

A big shoutout to the folks in #dota2replay on Quakenet. Feel free to stop by if you have any questions! (Be patient, we're around!)

License

We're counting on you: please mention Skadi when used in your projects. We ask for "Powered by Skadi" in the footer of your site template.

Skadi is offered under the MIT license.

This license applies to all revisions of source code until otherwise noted in the latest version of this document.