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 is in its early stages, and things are subject to change without much notice. Consequently, Skadi is best used for development purposes at this time. 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

Visible attribution is kindly requested. I want Dota 2 fans to know about this project!

Skadi is offered under the MIT license.

This license applies to all revisions of source code until otherwise stated.