Drafting, Models, & STRATZ+

STRATZ
STRATZ
Published in
5 min readFeb 1, 2020
STRATZ+

The complexity of Dota 2 is insane. People in the community say it takes a new player 300 hours to simply understand the game, and this complexity is what drives the loyal player base to begin with.

Here at STRATZ, we try our best to simplify and visualize the data of Dota 2 in ways that help you gain knowledge and insights through all that complexity. Over the past year we have been building an application to help improve players’ understanding of one vital aspect of the game: Drafting.

Drafting in Dota 2 involves ten players (two teams of five) taking turns to each pick heroes from a pool of 119 possible selections. Granted, a handful of heroes get banned each match, and each hero can only be picked once per match, but even so, this yields over 5 billion possible combinations.

Each hero is strong against some heroes, and weak against others, so drafting becomes a game in itself where each player is trying to ensure their team picks heroes which have strong matchups against those their opponents pick.

To add to this complexity even more, when new patches are released, each hero’s strengths and abilities may change, and entirely new heroes may be added, so players must constantly keep up with the meta to refresh their previously-learned knowledge.

Imagine if in the game of chess, the rules suddenly changed and you could move the pawn three spaces on its first move. How drastically different the game could be!

Winrate

Drafting has a huge impact on your chance to win, so knowing how successful your draft is and your chance to win the game based on your team’s hero selections is one of the most important features of our STRATZ+ drafting application. However, calculating this winrate is more complicated than it may first appear.

To return to our chess comparison: In chess, each piece has the same power throughout the game. But in Dota 2, heroes alter their power based on their abilities and items. The game is constantly in flux. For this reason, we cannot simply use one easy percentage to represent a team’s win chance, so instead, through STRATZ+, we represent a team’s chance to win over time.

For example, say Team A drafts an early-game pushing lineup, while their opponent, Team B, drafts a strong late-game lineup. Team A would have a high chance to win if they manage to end the game by 20 minutes, but if they miss their window and let the game drag on to 60 minutes, they may be predicted to lose, since their heroes will have fallen off and Team B’s heroes out-scale them.

For us to calculate this, we use a two dense layer model which takes into account each hero, lane (where the hero will begin the game) and role (if the hero is played as a core or support). We then augment these values with the rank (the skill tier) of the player who selected each hero. Lastly, we input the time of the game.

Our output is simple: a 0 (if Dire wins) or a 1 (if Radiant wins). This network is then trained on a dataset of approximately 30 million matches played by the general public.

Match Duration

To support our winrate model, we must know the probabilities of the game ending at a specific time. So, we do the same calculation as above, but now adjust our output to be when the game ended.

With both the winrate and the match duration now predicted, we can simply show the percentage chance a team will win using the following formula:

WinRate = Sum(Duration[i] * Winrate [i])

Individual Match Performance

IMP (Individual Match Performance)

One of the newest updates to our networks is a revamp of our IMP model. Individual Match Peformance, or IMP, is a simple and easy tool to determine how much impact an individual player has on the outcome of a game.

Most people look at simple stats like their KDR (Kills + Assists / Deaths) or their Net Worth to determine of they played well, but these methods are far from accurate. As we said before, Dota 2 is far too complicated a game to use simple metrics to calculate concepts such as performance. For example, a hero may have ended a game with 0 kills, and 9 deaths, but they also made a lot of space, set up kills for teammates, and tanked key spells in fights, resulting in the team’s overall victory. If the players look at only the base stats, they would think that 0/9 player was terrible, when in fact, they brought a lot of value to their team.

Players deserve to have a clearer, more accurate picture of their individual match performance, and our IMP model looks to accomplish that.

We use a total of 28 different game inputs to determine a player’s IMP:

  • Kills
  • Deaths
  • Assists
  • Net Worth
  • Last Hits (LH)
  • Denies (DN)
  • Level
  • Hero Damage
  • Tower Damage
  • Physical Damage
  • Magical Damage
  • Pure Damage
  • Damage Taken
  • Amount Healed to Allies
  • Amount Healed to Self
  • Power-up Runes Picked Up
  • Bounty Runes Picked Up
  • Neutrals Killed
  • Gold Fed When Dying
  • Experience Fed When Dying
  • Actions Per Minute (Keystrokes)
  • Stun Count (Instances)
  • Stun Duration (Time)
  • Disable Count (Instances)
  • Disable Duration (Time)
  • Slow Count (Instances)
  • Slow Duration (Time)
  • Weaken Count (Instances)
  • Weaken Duration (Time)
We use a total of 28 different game inputs to determine a player’s IMP

We designed this list to fairly represent each and every hero. For example, the amount of micro required to play a hero like Meepo is naturally higher than what is required to play most other heroes. Therefore, a player who is new and unable to perform the appropriate keystrokes will often be penalized for performing badly.

Don’t worry, we checked: a person who just sits and spams a key over and over won’t get a high IMP. 😊

We also created a simple version of this model that we compute in real-time, which will soon be incorporated into many areas of STRATZ.com.

STRATZ Continues to Grow!

In company news, we are happy to add another team member this week! He will be functioning as lead analyst to our models and will be enhancing them even further in the near future!

Think you’ve got what it takes to join the STRATZ team? We’re hiring!

Enjoy keeping up with what’s happening at STRATZ? Follow us on Medium, Twitter, or Facebook to get a new Supdate every Friday! If you want to get more involved, join us on Discord!

Did you miss our Supdate last Friday? Check out From Dev to Master.

See you next Friday!

--

--