/doten

Better Dota Analytics

Primary LanguageHTML

Doten

Better Dota Analytics

What this is:

I like Dota 2, I like graphs. This repo is a collection of tools to analyze your dota games and compare them againt the pros to better your game.

This repo takes the .json replay files generated by the odota parser and extracts important information about when and where certain events happen.

For now, it is broadly broken out into Farm, Kills, Wards, and Deaths, and for the Bayseans among you, each of these is broken into 4 different maps. Each map is "From the perspective of team X given win condition Y". So Given you played radiant and won, where and when did you get your farm?

How to read these graphs

All maps are displayed as density maps, with the height axis being time.

The more opaque the color, the more of the thing happened. This is especially useful for understanding how successful farming and warding patterns move over time.

Remember, these are averages of many dota games. The better you categorize your input, the more meaningful the averages will be.

For instance, because the height axis is time, you can look at a layer of 10 minutes in, and see the hotspots of where wards are being placed, or where kills are happening. This doesn't tell you about any individual game, but trends as a whole!

How this works

The odota tool breaks out Valve's .dem replay files into timestamped event streams. This tool parses many of these streams and then averages events and where they happened per tick. This then builds fancy 3D plots to help you understand where successful and unsuccessful games are played.

How to run

Install the prerequisites, and put your replay JSONs in a /replays folder. If you want, break that into 1kmmr, 2kmmr etc folders, and edit parser.py to accomodate. Currently it is set up for 3kmmr and 7kmmr. On the TODO list to make that adaptable. Run parser.py!

You'll get some HTML files that look like the following: Definitely not one of my games >_>

TODO:

-Updated for 7.34c map layout.

-Allow multiple heatmaps overlayed, to build inference of what leads to what ("Does this warding spot really lead to kills?")

-Allow per-hero selection ("Show me only games where I won as Slark.")

-Detect laning phase automatically

-Allow comparisons "What does a successful Radiant laning phase as Oracle look like?"

-Make everything operate inside a gradio UI

How to get replay JSONs:

  1. get java & maven, set JAVA_HOME and MAVEN_HOME paths
  2. get https://github.com/odota/parser and build with mvn /path/to/parser/jar (name) package
  3. run the odota server
  4. curl localhost:5600 --data-binary "/path/to/replays/6464136573.dem" -o "6464136573.json"
  5. run the python parser