Status Update: 1,000,000* matches

December 18, 2012

Thought I’d add some backstory to the slowdown of posting.  On the API subforum of the Dota2 Dev Forums, Sproinknet posted a database file containing all the Dota2 matches from 2010 and 2011.  It’s not ideal because it’s missing a lot of the skill level data and it’s pretty ancient, but it’ll still allow for some interesting avenues of historical analysis.

I’m playing around with two approaches.  The easier one that might produce some interesting results soon is just working through the database.  The more complicated one is converting all the match data to the python class I’ve been using so I can easily replicate tests I’ve already done.

The most immediate things I’m working on are trying to get a graph of the number of games per day through all of 2011 and the win rates of Radiant/Dire by the week.  From there I’ll move on to more complicated things like the public matchmaking win rates of heroes during the early stages of release.

Hopefully I’ve have something of interest ready before the week is up, so stay tuned.

*technically 885,228 I think, but who’s counting?

Links of the Day

December 16, 2012

Update pace over the next few days might be a little slow.  Have a couple of projects that’ll be distracting me in the near future.  In the meanwhile, have some interesting links

Math! — Reddit post with some really interesting mathematical formulas for Dota mechanics, like EHP of Heart vs Assault Cuirass and the damage increase of MKB vs Daedalus

How to Jungle Rubick on Radiant — Jungle videos are a dime a dozen, but the use of telekinesis to create a three camp pull is pretty crazy.  I could even possibly see Rubick doing this for a different jungler to help them get a head start early on while being a traditional lane support in the meanwhile.

Basketball Isn’t a Sport. It’s a Statistical Network — Maybe something similar could work for Dota using a hero specific heat map over thousands of games and separating by wins and losses.  Or even just determining what the most successful strategies are for distributing laning effort.

And now here comes 6.77

December 15, 2012

Turns out that yesterday’s patch prediction post came in just in time.  The 6.77 changes came out earlier today, so let’s see how we did.

Getting the buffs out of the way first (ignoring heroes unreleased in Dota2):


Ancient Apparition
– Chilling Touch manacost rescaled from 140 to 110/120/130/140

– Agility growth increased from 1.2 to 2.3

– Shallow Grave cast range rescaled from 400/600/800/1000 to 550/700/850/1000

Doom Bringer
– Scorched Earth now also affects other units you control
– Doom now has too much armor! (+1)

– Aftershock stun duration rescaled from 0.3/0.7/1.2/1.5 to 0.6/0.9/1.2/1.5
– Aftershock damage increased from 25/45/75/115 to 50/75/100/125
– Enchant Totem cooldown decreased from 6 to 5

– Untouchable AS reduction increased from 20/40/60/80 to 20/50/80/110

– Base Int increased from 15 to 17
– Spirit Wolves armor increased by 1
– Moonlight Shadow duration increased from 11 to 15 seconds

– Cast animation time decreased from 0.4 to 0.25

– Reaper’s Scythe stun/delay increased from 1 to 1.5 seconds

– Purification cast range rescaled from 400/500/600/700 to 700

– Illusory Orb cooldown decreased from 13 to 12

– Decrepify cooldown decreased from 13/11/9/7 to 12/10/8/6

Shadow Demon
– Shadow Poison cooldown decreased from 3 to 2.75

– Base agility increased by 6

– Haunt no longer ends when you use reality (the targeted illusion is still replaced by you though)

Treant Protector
– Damage increased by 10
– Leech Seed cooldown decreased from 18/16/14/12 to 16/14/12/10
– Overgrowth cooldown decreased from 80 to 70
– Living Armor damage instances increased from 6 to 7
– Living Armor can be cast through the minimap (only considers heroes and towers/rax in this mode)

Vengeful Spirit
– Wave of Terror damage increased from 18.75/37.5/56.25/75 to 30/50/70/90

– Base strength increased by 3

– Shadow Word cooldown decreased from 20 to 16

– Shukuchi damage increased from 90/100/110/120 to 90/110/130/150

– Strength growth increased from 1.8 to 2.3


Nothing earth-shattering there.  Pretty conservative set of buffs for a bunch of heroes that see little tournament play, bad public MM win rates, or both.  Treant of course sees another set of buffs along the same line as before.  Clockwerk’s new agi growth appears targeted to boost his late game survivability, which is probably warranted.  Dazzle and Omniknight’s range increases could end up to be two of the larger changes.  Spectre’s ult change could be a slightly bigger deal than it appears at first, giving her more or a reason to skill up her ult for the potential mindgames.  Weaver’s Shukuchi damage buff is totally warranted, but might not be enough.  Zeus’ strength buff is an interesting case of trying to target a buff to a hero who stomps at lower skill levels but falls off at the higher levels and in tournament play.

But yeah, pretty conservative.  Nothing in there that’ll jeopardize vacation time.  So let’s move on to the nerfs.


– Great Cleave damage decreased from 25/40/55/70 to 20/35/50/65
– Warcry duration decreased from 8 to 7 seconds


This is a pretty soft touch.  I was right about Cleave being the primary target, though I did expect area nerfs over damage nerfs.  Sven should still be viable, but this should also shake up carry picks quite a bit more.  Big contrast from the post-International gutting that Morphling received.

On a related note, one of Sven’s favorite items is also taking a bit of a hit, but also receiving a slight cost reduction.


– Crit multiplier decreased from 2.7 to 2.4
– Recipe cost decreased from 1200 to 1000

– Damage decreased from 35 to 30



– Skewer no longer affects magic immune units
– Skewer cast range rescaled from 1200 to 600/800/1000/1200
– Reverse Polarity duration decreased from 2.5/3.25/4 to 2.25/3/3.75


Magnus, on the other hand, took a bit of a hit.  Warranted, admittedly, but the Skewer cast range hurts when he’ll almost always want to max Shockwave first.


Bounty Hunter
– Track no longer reduces armor


Another deserving nerf.  Bounty Hunter was a pretty successful fixture in tournament play, and has enjoyed a lot of success in public matchmaking on the side.  The nerf primarily targets his late game debuffing potential – the current armor debuff at 6 is only 1 – so we’ll have to pay close attention to see how big of a hit this is.  I did predict a Track nerf, but I underestimated Icefrog’s tendency to leave the most broken aspect of the hero untouched in lieu of nerfing around it.


– Decay damage reduced from 40/80/120/160 to 20/60/100/140


I recused myself from Undying speculation yesterday, but this is again pretty much expected.  Kinda makes me wonder if tournament Undying’s were maxing Decay before Tombstone.   In any case, it’ll be interesting to see where he ends up.


– Batrider can no longer attack while using Flaming Lasso

Templar Assassin
– Refraction manacost increased from 75 to 100


I predicted minor nerfs for these two and I’d say that’s what we’re getting.  They’re certainly not inconsequential, but they don’t particularly get in the way of either heroes’ specialty.  Also, no Dark Seer nerfs.

– Ice Path damage from 100 to 25/50/75/100


Right about Ice Patch, wrong about damage over cooldown.  Kinda wondering if this will really be enough, but time will tell.

And finally, the terrible twosome


– Movement speed decreased from 305 to 300
– Double Edge no longer interrupts channeling
– Stampede now applies a 100% slow instead of a stun (as always, units cannot be slowed below 100 movement speed)
Drow Ranger
– Trueshot Aura now only affects non-hero units within 900 range of Drow


These changes definitely fit the narrative that Centaur was the more universally overpowered hero.  The Stampede change in particular is a big deal.  Drow on the other hand merely gets her global push clipped, and that might end up being enough.  I’d expect her to still hit that 52-55% win rate range (so a bit higher than she was in 6.75), but it’ll likely decay the higher the skill level of the game.

Finally, both Skadi and Shiva’s see small buffs


Eye of Skadi
– HP bonus increased from 200 to 250
– MP bonus increase from 150 to 250

Shiva’s Guard
– Freezing Aura’s attack speed reduction increased from 25 to 30


Oh and something about harpies that I guess might matter to Doombringer.  Can’t bring myself to care that much about Doombringer, time for sleep.

6.76 Retrospective: What We Can Learn from Hero Win Rates

December 13, 2012

6.77 is coming up soon, which sadly means we won’t get to do any 6.76 testing while it is still relevant.  In lieu of this, I thought I’d do a series on what we can learn about these last two patches using some public data from and  Also the charts for the next phase of item analysis are being unruly, so procrastination ahoy.

These last two patches at a matchmaking level have been pretty much dominated by talk about the win rates of the new addition Centaur Warchief, the partially remade Drow Ranger, and to a lesser extent Jakiro.   So let’s first look at the history of their patch changes and corresponding win rates in 6.75, 6.76, and 6.76c.

6.76 saw the Dota 2 release of Centaur Warrunner, who immediately surged to a 67% win rate on the back of his completely reworked ultimate.  Unsurprisingly, this lead to a new patch revision just four days later which toned various aspects of our Centaur friend and brought him down to a more reasonable 60% win rate.

6.76 also buffed Drow Ranger quite substantially.  With her new global aura she managed to withstand the Centaur stampede and reach a 60% win rate in 6.76 and then maintain that win rate in 6.76c despite receiving some minor nerfs.  For reference, her 6.75 win rate had been 51.21% in light of some sizable buffs she received that past.  My snapshot of 3-day period of 6.74 from DotaBuff has her at a 48% win rate for the previous patch, but it also shows that in my Very High sample her 6.74 win rate dropped to 43%.  This was the 6th lowest win rate in the Very High sample and the third largest drop in comparing the Very High performance to the DotaBuff sample.

For the brief period of 6.75 Jakiro was actually the winningest hero in matchmaking, sporting a 60% win rate with the next closest heroes being the bugged Undying and perennial secret pubstomper Lich both at 55%.  Jakiro had actually been a secretly successful hero himself in public matchmaking — his 6.74 win rate was close to 53% — but the 6.75 rework to Ice Path ended up being a huge buff.  In 6.76 and 6.76c his win rate dropped to 57%, partially due to some light Ice Path nerfs but also thanks in a large part to the sheer gravitational pull of Drow and Centaur.

Now that we’ve established the patch history, let’s move on to the basic principles of what these win rates actually tell us.

First of all, there’s this oft repeated sentiment that a high public win rate is fine because Dota should only be balanced with tournament play in mind.  Even if we assume this to be true, there is a reason why new and reworked heroes are put into the public pool for a patch before they are allowed in Captain’s Mode.  Public matchmaking is the final testing ground for whether a hero should even be allowed into tournament play, and quite frankly, adding any hero with a 67% win is tantamount to removing one ban from the pool.

The follow-up argument is that players should be allowed some time to find counters and that Centaur’s win rate would drop as players adjusted to him.  My first response is that it is much more reasonable to have the players finding counters to a Centaur with a 57% win rate than a 67%.  My second response is why on earth should we expect his win rate to drop as the players become more experienced?  It’s just as likely that the people playing Centaur those first four days were inexperienced and had plenty to improve on.  This is a character with a global ultimate.  Global ultimates require team coordination to use to their full effectiveness.  If anything there was (and still is) plenty of room for players to evolve more creative line-ups for utilizing Stampede to its fullest extent!

Finally there’s the idea that Centaur was fine if you just picked a counter to him.  This argument was ridiculous.  People would put forth Huskar and Necrolyte as counters because they have tools to counter high HP pools, which completely missed the reason why Centaur was (and still is) an insanely potent hero.  Some mildly more astute players suggested that Dark Seer’s Wall could be used to counter Stampede.  I find the basic premise questionable, but the bigger objection is that you’re offering a localized ult with a 100 second cooldown as a counter for a global ult that had a 65 second cooldown.  Even if Wall were a potential counter, the global aspect and ridiculously short cooldown of Stampede would still make it a complete mismatch.

The second argument that comes up is that Dota as a game is defined by insanely powerful heroes and that nerfing heroes just because they are powerful ruins this aspect of the game.  This perspective misses the fact that what generally makes heroes overpowered in Dota isn’t that they have an environment where they are insanely strong; they become overpowered when they can reach this environment too easily.  When heroes like Centaur and Drow can easily reach their ideal phase of the game and stay there indefinitely, they become problematic for the game because they make it extremely less likely to see a variety of other heroes displaying their phases of insane strength.  Looking back to the International 2, the problem with heroes like Anti-mage and Morphling wasn’t the mere potential that they would get to a phase of the game where they would farm out of control.  The actual balance issue was the perception that it was too likely that they would hit this phase and dominate the game.

So really what we want from Dota isn’t actually a balanced game.  If we ever had any certainty that Dota were balanced, we’d honestly have a pretty boring game on our hands.  Instead, what we want is a game where we are constantly uncertain about what strategy is the strongest, and therefore the biggest balance violation is when a character becomes so strong that we no longer feel this uncertainty.

So what levels of public win rate amount to a violation of this uncertainty?  Well, we can safely say that 52-55% isn’t a big deal by itself.  Lich for example is pretty consistently around 54% because he is an easy to play support with a lot of lane control and decent teamfight potential.  These are all qualities that will help a hero win a bit more than their fair share of games in a public matchmaking environment, and there’s absolutely no reason to believe that this advantage persists at tournament level play.  Tidehunter is a similar case, though one that sees significantly more tournament action.  In short, 52%-55% is absolutely acceptable for 1. Easy-to-play Heroes, 2. Strong Laners, 3. Strong Initiation or Teamfight presence.

Carries are a bit sketchier.  I’m a little apprehensive if a farm dependent hero is pushing 55%.  Besides Drow, the two most worrisome cases are Luna and Phantom Lancer, but at the tournament level Luna sees significant but not overwhelming play and Phantom Lancer is virtually non-existent.  Maybe their tournament fortunes have the potential to surge in the near future, but in the meanwhile both are within acceptable levels.  Sven is more problematic based on tournament play and his matchmaking winrate is a reasonable 51%.  Morphling absolutely terrorized the International 2 but his 6.54 win rate was 48%.  One thing to keep in mind is that my (admittedly sample size limited) data suggests that Morphling saw a pretty big win rate increase in the Very High bracket.  It’s possible that carry win rates exclusive to High and Very High might be a better predictor of problem carries than aggregate win rates.

What this leaves us with are two ways to use public matchmaking data to zero in on problematic heroes.  The first is any hero pushing ~58% or higher.  Lycan, Ursa, and Treant were all guilty of this in 6.74, and all received crippling nerfs.  I don’t expect Centaur, Drow, and Jakiro to be nerfed to quite the same extent, but I do expect all three to be toned down further in 6.77.

For what is, quite frankly, the bigger issue for public matchmaking take a look at this chart provided by CyborgMatt.  A high win rate alone is problematic but not urgent, but a high win rate combined with an incredibly high usage rate cannot be allowed to continue.  A rough estimate from DotaBuff’s usage data would put Drow in 6.76c at being in over 33% of all matchmaking games.  This is despite the fact that she isn’t available in the majority of Single and Random Draft games, and completely unavailable in Captain’s Mode games.  That kind of ecological warping is a bad thing for the health of public matchmaking regardless of the tournament scene.

And to look at Drow more in-depth, is her current aura really something that the game benefits from?  Passives are fine, and globals are fine, but the combination provides too much to her team on the mere condition of her continued existence.  On top of that, the effects aren’t even that interesting besides the potential interaction between her aura and Visage/Enigma/Invoker minions.  I think it would be better if the creep portion of Drow’s aura were converted to a slightly stronger but temporary area buff somewhere along the line of Sven’s Warcry.  This would make her a pusher along the lines of Leshrac’s Edict, just with a significantly different flavor.  More importantly, it would also demand that she contribute both her presence and her mana to these pushes and give the ability both a higher skill cap and a deeper level of counter-play.  If one wanted to get really fancy it could give Drow temporary control over any nearby ranged creep and catapult targeting.

In any case, let’s move on to what kind of changes to expect in 6.77

Drow: I’ve already mentioned what I’d like to see from her, but besides the likelihood of her seeing some nerfs I don’t know what to expect.  I hope the aura sees a slight rework, because I feel the current incredibly low skill cap is more problematic than anything else about her or her kit

Centaur: His ult got hit hard in the last patch, but it quite frankly needed it.  I’m inclined to expect future nerfs will be targetted at his base stats and stat growth or at his mana costs, but further Stampede tweaking is possible.

Jakiro: Nowhere near as problematic as the other two, so I expect his changes to be fairly small.  The most likely change is reverting his Ice Path cooldown to something closer to the 16/15/14/13 (from 12/11/10/9) it was before 6.73.  Back then the change was warranted, but the skill is now much improved.  Further mana cost adjustments are also possible, but I’d be surprised to see any other substantial nerfs.

And based off 6.76c tournament showings

Undying: He has another bug fix in the nerf.  I don’t have a feel for how much this played into his recent popularity surge.  He may or may not see some nerfs depending on how much he benefited from the bug.

Sven: At the very least he’ll see his cleave range clipped a bit.  I think the complaints against him are a tiny bit exaggerated, but not enough to leave him intact through 6.77

Magnus: As much as I love him, he’s going to take a hit.  Hopefully it’s not a huge one, but I wouldn’t be surprised if his nerfs were the third most substantial in the patch.

Bounty Hunter: Maybe I overrate him, but I’d expect to see some small adjustments downward, possibly targeted at his track gold rates.

Templar Assassin/Bat Rider: I won’t be surprised if either of these characters receive nerfs, but I’d personally be inclined to leave them alone for now.  I don’t feel that they hurt the tournament ecosystem nearly as much as some of the other common first round bans.  They’re really strong at a certain stretch of the game, but they have the tendency to fall off in a way that makes them overall acceptable.

Dark Seer: I feel he’s at an acceptable point for the time being.  No, no one likes to go up against vacuum, but his tournament win rate this patch has been a modest 46%.

Buffs are much harder to predict, so I’m not even going to try.  I will say though that I expect Treant Protector to see further changes.  While I have made the argument that he’s not as bad as his 41% win rate makes him out to be, I feel that he’s extremely underwhelming as a hero right now.  Living armor on a 15 second cooldown takes way too much map awareness for what feels like too little reward (both strategically and viscerally), and none of his abilities are especially satisfying in any way.  If he doesn’t see anything in 6.77 then I expect to see a broader rework somewhere down the line.

Item Usage Trends by Skill Bracket

December 10, 2012

It’s time to move on to some new ground.  I haven’t talked about items yet, but one of the things the API samples allow is to track how item popularity changes throughout the skill brackets.  And this time I have a spreadsheet that might actually be fit for human consumption:

Before we start, a few clarifications and disclaimers.  In this spreadsheet I’ve used multiplier-based increases.  This is to prevent the changes in niche items from being drowned out by small shifts in items like Power Treads that are ubiquitous on much of the cast.  Some of the shifts may be attributable to underlying hero shifts in the bracket.  Also, all of the data is still from patch 6.74.  Once other patches are available it may be interesting to do a 6.76 comparison to see how hero changes, armlet buff, and the new shadowblade build path have affected things.

One last very important point is that this data is collected from end-game builds.  It cannot account for items that have been upgraded or sold.  For example, when I say un-upgraded boots have gone up 60% in the Very High bracket, that measures the number of games where a player ends the game without having upgraded their boots, and doesn’t include anyone who had boots at some point and then upgraded them.

I prefer to focus on the final column, “Normal to Very High Usage Trends,” because in most cases the Normal to High trend serves as a mid-point.  There are a few interesting counter-examples, but there will be more on that later.  Here are the big trends I notice in the shift to Very High.

1. Activation items become more popular

Among the items with a greater than 15% positive shift, we have Ghost Scepter(+446%), Necrobook(+254%/101%/73%), Medallion of Courage(+160%), Force Staff(+128%), Ethereal Blade(+116%), Drum of Endurance(+101%), Magic Wand(+79%), Soul Ring(+77%), Scythe of Vyse(+56%), Pipe of Insight(+52%), Blink Dagger(+51%), Manta Style(+39%), Eul’s Scepter(+34%), Veil of Discord(+33%), Black King Bar(+32%), Orchid Malevolence(+27%), Urn of Shadows(+23%), and Mekansm(+17%).

In fact, it would have probably been shorter just listing the items with any kind of a positive trend that don’t provide an activation ability.  That would be plain Cloak(+187%), plain Boots(+60%),  Ring of Basilius (+8%), Linken’s Sphere(+15%) and Maelstrom(+6%).  Ring of Basilius, cloak, and boots each cost ~500 gold, and Very High players tend to play more gold starved supports.  Maelstrom of course upgrades into Mjollnir, which does have an activte.

The question then turns to whether these activation items are, in general, better than passive stat-sticks, or if Very High players are simply more comfortable using these items.  My inclination is that both are true.  The latter is definitely true, but I’ll attempt to make a case for the former in the next few points.

2. Very High players are more likely to build cost-effective items to attempt to win early.  Normal players are more likely to build extremely expensive items to try to win late.

This trend makes sense given the much longer game durations Normal players face in this sample.  Players in the Normal bracket appear to be much more likely to zero in on big damage items like Daedalus(-42%), Radiance(-21%), Sange and Yasha(-69%), Basher(-55%), and Butterfly(-48%), and using these items simply win through out-farming and brute force.  This is also true defensively, where nearly every big defensive item sees huge declines in usage rates.  That’s not to say that any of these items are bad.  Very High players are simply more likely to prioritize other items first before going back and adding one or two to their final build if the game goes on that long.

3. When Very High players build defensively, they build for team survivability, CC, mobility, and CC immunity first.

Let’s look at the big defensive items that see the largest boost in Very High.

Ghost Scepter is the biggest at a massive 446% increase.  It’s still a niche support item, but it’s very good at providing physical protection during late-game teamfights.  This allows your team time to peel the carry off the support, or at least buys the support time to get their CC off cooldown so they can use it a second time in the teamfight.

Force Staff(+128%) and Blink Dagger(+51%), especially Force Staff, provide survivability by proactively getting you out of bad situations.  Blink Dagger is more limited and character specific due to the built-in combat limitations, but Force Staff is the ultimate peeling item at every phase in the game.

Not much has to be said about Magic Wand(+79%).  Smart usage of your charges can completely turn the tide of a fight, making it a very worthwhile purchase at 509 gold.  It’s also as much an aggressive choice as a defensive choice because the sudden surge of mana can net you an extra nuke or stun when you need one most.

Scythe of Vyse (+56%) is another flexible item whose active can be used both aggressively and defensively.  This dual-natured flexibility is a running theme in many of the big late-game items that remain popular in Very High.  Eul’s Scepter (+34%) is a strong for similar reasons as a bargain-bin variant.

Pipe of Insight (+52%) can be an extremely strong pick when countering certain enemy nukers.  What’s really noteworthy is that it is a defensive item that passes on its survivability to your allies.  Take Axe for instance.  Some people advocate a Vanguard (-37%) build, but Vanguard just makes focusing you an even dumber idea than it was before.  Same for Blade Mail (-35%) or even a Heart (-44%).  If you instead build a Pipe you get solid personal survivability in the magic resistance, but you can also pass on that survivability to the squishies on your team who are more likely to be focused first.  Mekansm (+17%) is strong for similar reasons, and the only reason it doesn’t see more of an increase is that it’s a relatively popular pick-up in Normal for an item that you only want one per team.

Finally, Very High sees a huge shift away from traditional carry items, which is to be expected with the shift away from carries that we’ve seen in hero usage.  The three big exceptions to this are Manta Style (+39%), Black King Bar (+32%), and Linken’s Sphere (+15%).  All three of these items specialize in making your carry harder to CC, which returns us to an earlier theme.  The best defense in Dota is a good offense, and the best offense is an offense that can’t be interrupted.

4. And now for a change of pace, let’s talk about boots.

The biggest trend in boots is a huge shift away from Power Treads (-22%), which then gets absorbed amongst the other boot types.  This doesn’t been that Power Treads are a bad item.  I feel that Very High players are simply much less likely to build Treads indiscriminately.

Phase Boots (+21%) are the most direct recipient.  Very High players seem to value the movement active on Phase highly and are willing to trade a bit of late-game DPS for it on a sometimes surprising number of carries and semi-carries.

Boots of Travel (+46%) sees one of the largest surges, but this is because they are a luxury item in all three brackets.  Very High players are simply more likely to reach the luxury phase due to their higher CS rates.

Boots (+60%) and Tranquil Boots (+22%) see their surges for the opposite reason.  Farm is more hierarchical in higher level games, and the supports are more likely to spend larger portions of their budgets on consumables.  This leads to any boot upgrades becoming a luxury, and Tranquil’s are the most affordable of the luxuries in that they are the cheapest and the most disposable due to option to disassemble later and sell off the components.  I suspect Very High players are also more likely to build Tranquil’s on carries as a temporary health regen boost that later doesn’t become temporary if the game goes bad too quickly, but this is much harder to prove.

Finally we have Arcane Boots (+8%).  They’re one of the few curious cases where an item sees a big upsurge between Normal and High, and then a significant decline between High and Very High.  I attribute this to mana regen being simultaneously overvalued and undervalued by the general playerbase.  High semi-carries and supports are more likely to reflexively pick up Arcane Boots when their team clearly needs the extra mana.  Meanwhile, Very High players are more likely to notice the situations when that much mana isn’t necessarily and adapt accordingly by putting their cash into Phase, Tranquils, or just not upgrading their boots in lieu of buying more wards, Drum, or maybe even an early Ghost Scepter.

5. Normal level players also overvalue Lifesteal.

Helm of the Dominator (-38%), Mask of Madness (-42%), Vladmir’s Offering (-46%), and Satanic (-51%).  That’s not to say lifesteal is a bad thing.  I honestly feel Vlad’s is one of the most cost-effective items in the game if you’re buying it in the right situation and with the right timing.  But I feel that Normal players are too likely to rush lifesteal items simply for the comfort of having the relatively passive health regeneration.

It’s also unsurprising that the least reduced of these items comes with a micro intensive active.


That does it for today.  As a bonus, have an extra Boots-usage spreadsheet.  It’s kinda throwaway since I ended up not really liking it, but maybe someone will find it useful.

Do Your Own Stats: The Player Data Dump

December 7, 2012

For all you budding data analysts out there, I bring you the data dump of all ~300k players in my sample.  It’s a zipped .txt file in a comma separated format and imports into both R and Excel (and possibly other things, but I can’t guarantee it!)

The data is divided by skill level in the bracket column.  n is Normal, h is High, and v is Very High.  All games should be from the 6.74 patch.  I have filtered out all games with less than 10 players, which include bot games and early abandons.  I’ve left off a few categories to keep the file easily manageable for now.  I intend for a future release to include item data once I figure out how I want to display it.  Possibly also a file that is all aggregate match data without player entries.

If you want to give it a whirl but don’t have a lot of experience, you can download R here.

1.  Once in the program use setwd(“C:/directory”), where C:/directory is wherever you extracted the text file.

2.  data = read.csv(“PlayerData.txt”) ; This makes ‘data’ a data frame containing all of the player information

3. data[1:10,] ; This will show you the first 10 player entries.  As you can see, they all come from the same matchID, so you have there an entire set of match data.

4. Let’s say you want to do some filtering.  We can create logical entries for that.  If you wanted to see all games played by Tiny, we can use L = data$Hero == ‘Tiny’

data$Hero refers to the Hero column in our data frame.  L is now a logical check for all entries in our data where the player’s hero was Tiny.  (I just realize now I should have included a hero list for the naming conventions, oh well)

5. data[L,] now shows all player entries who played Tiny.  If we want to break it down further we could use add extra checks like L = data$Hero == ‘Tiny’ & data$Bracket == ‘v’ which only shows Tiny games in the Very High bracket.

6. If you want to turn these logical checks into their own separate data frame you can now do tiny = data[L,]  This gives us a data frame named ‘tiny’ that contains all Tiny players in the very high bracket.

7. Want to see the average GPM of Very High Tinys?  Just use mean(tiny$GPM)

8. Want to get even trickier?  Let’s go back to  data and make a new column that represents Creep Kills per minute.  To do this we use data$csm = data$CS * 60 / data$Duration (The 60 is to convert Duration from seconds to minutes)

9.  Now let’s find the top 1% of CS per minute in Normal.  Create a separate frame using L = data$Bracket == ‘n’ and norm = data[L,]

10. We can find the top 1% now using quantile(norm$csm, c(.99)) This tells us that the 99th percentile is at 6.19 CS/min.

11. To actually see the entries, we can use L = norm$csm > 6.19 and then norm[L,] Oh boy, look at all the Nature’s Prophet.


That’s just a basic starting point, and I’m sure more experienced R users could have way more interesting stuff in no time.

As always, if you want to contact me about anything regarding this just use either the comment section or the e-mail up there in the right sidebar.  Happy mining, data spelunkers.

An Extremely Unofficial Dota Matchmaking FAQ part 3

December 7, 2012

Originally this was going to be just a two part series, but I realized the other day that there was a big subject I skipped over entirely: premade groups.

9. Matchmaking keeps putting me up against premade groups when I’m solo.  How is this fair?

When dealing with group queues, Dota-like matchmaking systems have a mechanism that will effectively inflate the rating of the pre-made group to compensate for their organizational advantage.  Is this fair?  Like everything else in matchmaking not perfectly.  But it attempts to be fair enough.

10. Well I don’t like it, why can’t Valve just implement a solo queue?

Some of the people who play Dota, or who might play in the future, will only get into the game if they can play with friends.  Queuing with strangers can be extremely stressful, sometimes in the long-term, sometimes just when starting out.

If Valve were to make a solo queue, it would effectively be a competing ecosystem to the current queue.  It’s entirely possible that the group queue would die out and with it a lot of potential players.  Please, let us just accept as fact that this is an unacceptable outcome from Valve’s point of view without even having to debate about what it would do to the health of the community as a whole.

The death of the group queue is not guaranteed of course.  League of Legends has accomplished this with its unrestricted Normal matchmaking and its max of 2 people per party Ranked matchmaking.  It’s not entirely out of the realm of possibility that Valve could do something similar.  For example, they could make CM a purely solo queue mode that unlocks once you reach a certain rating.  Whether something like this would work, backfire spectacularly, or be generally alright but inferior to some other option is an insanely difficult question to answer.

So whatever Valve’s intending, it’s a good thing they’re taking their time to test their expectations of how the population might respond.  Once you put out a social system it can be extremely difficult to roll it back, so you want to be confident that the design you end up going with isn’t an unexpected disaster.

11. Does Dota2’s matchmaking handle group matchmaking well?

Possibly not.  If there were only one reoccurring complaint about matchmaking with a shred of legitimacy, it would be group matchmaking.  To be fair though, I’m willing to consider this portion of matchmaking a work-in-progress.

For starters, trying to evenly handicap every premade group is a really tricky problem.  If you’ve played in organized or semi-organized groups in really any game you know that there are always going to be vast differences in general skill level, skill distribution, and overall coordination.  Some groups are a bunch of highly skilled players goofing off.  Some groups are all over the place skillwise but ‘tryharding’ as the parlance goes.  Others are low skilled and possessing terrible coordination, but are deluded enough to believe that neither is the case.

So suppose we put a really basic rule in the system to try to handle group matchmaking.  For the sake of simplicity we’ll only allow fully premade groups, and to find the rating of the group we’ll take the average of the group and multiply it by x.  For any value of x, we could find the collective win rate of all the groups in the system, and then set x so that the group winrate is 49%.  That should be fair right?

Unfortunately, what you’ll most likely see is most of groups at 44-54%, with a bias towards the lower end.  You’ll have a decent number of groups that are much lower.  Finally you’ll have a handful of groups vastly over-performing at +60%.

That won’t do, so we’ll just set x so that the group winrate is 45%.  Now the overperformers are less prevalent, but the underperformers are much more severe and quitting the game because they feel it’s rigged against them, and it arguably is!

Dota’s matchmaking rules are almost certainly a bit more elegant than my average*x, but something similar but less pronounced could still be happening in the current matchmaking.  It would be an interesting study to see the rate of group queues by skill bracket.  I unfortunately cannot accomplish this with my data alone, though it might eventually be possible through a combination of a skill separated sample plus a general match database like Dotabuff.  But given the patterns of complaints about group queues, I wouldn’t be surprised if group queuing is much more prevalent in Very High than it is in Normal.  If Very High is underpopulated right now due to restricted invites, and the matchmaking handicap for groups is too top end lenient, it could lead to a group queue arms race that becomes very frustrating to solo queue into.

But there’s a lot of ways to alleviate this.  More players is the most obvious one.  Having a more populated top end would allow Valve to make matchmaking more restrictive without skyrocketing queue times.  I’d be extremely surprised if the relation between queue length and player activity wasn’t one of the first statistics they looked into regarding matchmaking.

Further under-the-hood changes to matchmaking are also likely coming, and many could even be in place as we speak.  People argue over whether Dota should be considered a beta or full release, but in reality a component like matchmaking is never going to be completely ‘done.’  It’s a long, iterative process that also has to adapt to changes in the underlying playerbase.

But the most intriguing option to me is adding more features that give players a greater option of things to do outside of matchmaking.  After all, Dota is what it is today because of the profession scene that grew out of player-run in-house leagues.  Adding more features that enable players to easily run and expand new amateur leagues would be far more healthy for the game than ingraining a culture of solo-queue stardom.

One possible addition I’d like to see is a sorting method for custom games that arranges players by randomly selecting one of the most matchmaking appropriate compositions available.  It would give in-house games an impartial arbiter for the teams and hopefully cut down on both instances and accusations of teamstacking.  I’d also like to see the player cap raised on teams because in my experience amateur teams in online games are not capable of regularly hitting near-100% attendance.

In the slightly longer run I’d like to see toolsets that make it easy to design, run, and coordinate player run leagues inside the client.  Primarily standard team vs team leagues with a limited variety of options (double elim tournament, divisions, fluid or not fluid ladders, etc.)  Players would hopefully form subcultures around different leagues that could have their own match listing and history like the major tournaments, and with an automated weekly highlight reel.  Then you could have larger invitational tournaments that go out to the champions of a league cluster, and through this you could help encourage the formation of future pro teams.

12. Why doesn’t Valve just implement team matchmaking?

Good matchmaking is dependent on being able to find good opponents.  The max possible opponents for a team system would be the current active players divided by 5, but realistically the actual number would be much smaller than that since many players either do not have the interest or social connections to find a team.

Compounding this, you have to provide the teams that do form good matches or they won’t stick around.  If you form a team that does nothing but lose, there’s a good chance your players will get sick of the extra effort and just go back to solo queue.  In isolation, whatever, but this doesn’t happen in isolation.  Instead we get a domino effect where a portion of the lowest teams quit, which then drives down the win rates of the teams just above them who then quit in droves for the same reason and so on.  If you want a healthy long term environment you have to at least limit this tendency towards an extinction event.

One potential solution, albeit one with a significant downside, would be to activate team matchmaking with limited time windows staggered across week for different regional clusters.  This would hopefully promote enough player density during the limited uptime that match quality would stay high and people would continue queuing.  This density might also be further encouraged with accelerated item drops, but Valve might already be testing the effectiveness of this with the group battle point bonus that’s currently active.

For what it’s worth, I’m of the opinion that any external impetus to queue needs to be universal and not one of those “top x% of players get _____” deals.  The players you need to encourage the most are the ones who know that they won’t be in the top x%.

Now capping everything off with a couple general questions…

13. So why does Dota 2’s matchmaking enforce a 50% win percentage?!

It doesn’t.  Take a look for yourself.  And if they don’t count because they’re too good or group queuing or whatever else I can provide you with a couple of profiles that manage to hit 40% and even much, much lower in over a hundred games.  Not in public though.  No casual-shaming on this blog.

The fact of the matter is that for the vast majority of the playerbase, there will be a rather large group of players who will all go 50/50 when matched against each other.  It sometimes takes the system some time to sort everyone into these groups, but it eventually does a good enough job.

Often you’ll see people say that Dota 2’s matchmaking should be replaced with some system their old hangout in original Dota used, something like you got promoted to a higher league if you managed a 60% win rate and then an even higher league at 70% and players were only matched within their own league and it was fair and worked and wasn’t communism and blah blah blah.

Guess what?  Those players were the big fish in a small pool.  They might still be quite capable of being pretty good players in Dota2, but we no longer need to wait for them to get to a 70% win rate before we realize they shouldn’t be matched against newbies.

14. But matchmaking always gives me all the feeders!

No it doesn’t.  It couldn’t if it wanted to.  So there’s two actual possibilities.

1. You don’t ever feed yourself because you play constant hyper-conservative strategy, so your teammates die more often because they never have anyone backing them up.  Mindlessly safe play does not win high level pub games.  You win by identifying enemy weaknesses and exploiting them, and if you’re consistently doing neither than you are as much of a handicap to your teams as any of the feeders that you identify.

2. You do feed yourself, but it’s different somehow when you feed because you got ganked, or someone didn’t call MIA, or everyone picked carries so you didn’t have support (because you, of course, picked a carry).  “The only justified feed is my feed!”

If you really want to get to high or very high matchmaking, focus on stepping up your game instead of throwing other people under the bus.  I’m 100% serious.  I know a guy who is completely new to Dota 2, is not a great last hitter, and definitely has distinct gaps in his knowledge of the game.  Despite all this, he plays fairly smart, and has managed to get into High matchmaking predominantly through solo queueing.  I’m half convinced that the biggest reason for this is he starts out every game by saying hi to everyone before the pick phase and wishing them a good game.  Setting a positive atmosphere (or at least a not negative atmosphere) goes a hell of a long way towards winning.

To be able to do that you need to accept that most of your teammates will not be idiots.  They will have flaws, just like you have flaws.  Don’t panic if they die to something, and don’t lash out if you die to something and you think they could have somehow prevented it.

Or just get better at last hitting.  That seems to work for a non-trivial number of belligerent manchildren.

15. Bu…bu…but Russians!

No.  Just no.

Also, “it’s not a race it’s a nationality” will never be an interesting or compelling argument.

Now that I’ve finished trolling every Dota2 matchmaking thread in existence, I’d like to welcome you to chime in in the comments section if you have some further insights regarding matchmaking.  There’s a conversation going on here that adds some extra details about the Trueskill system and the patterns of smurf accounts.  I tried to keep things as general as possible, so there’s a lot of details still to be discussed.

That includes pointing out things that may have been wrong, or at least misleading.  If you don’t want to leave a comment you can contact me at, and I am willing to revise or correct as proves to be necessary.

Also be on the lookout for another release either tonight or sometime this weekend!  Hopefully a lot of people will have fun with this one.