by Alan Wilson

I visualized the data from every single game of Hearthstone I played. All 4,700 of them.

E3ohid7K-jfY3Gz9z0NoXE3y8CtPUuEo0Ure

I’ve been playing Hearthstone since the beta. I’m a fairly casual player, but I have aspirations of eventually reaching the prestigious “Legend” ranking.

Back in March I started to track my games to see if I had a chance of making it. I play most of my games on an iPad, so this was a manual process in Google Sheets.

h19NE8zY9w7JaC02Ba2219rQNg51CwVYlOJ1
I’ve tracked every ranked game since March. That’s 4,700+ games so far. Sure wish there was a way to get this data more easily (ahem… @playhearthstone?).

Charting Ladder Rank

I used some simple conditional formatting to make the table easier to read, but most of my analysis takes place in a free tool called Tableau Public. It starts out very basic—just a line chart of my rank—but even this is useful. Now I can see how well my attempts at Legend are going.

A7camtQde7sz1YLeb9vrZyzsUn8lhIoAn91z
I play in both ranked formats: Standard and Wild.

As you can see, my rank was fairly volatile, so I evolved the visualization using moving averages. The raw numbers are still there (in the dots), but the lines now represent a 25-game moving average. This made it easier to see real trends in my rank and reduce tendencies to tilt on losing streaks.

DVkQF9KNciD1EiBDzXtAesLCxWmWbbe6J3Nv
Those moving averages help to calm my ladder anxiety.

Next I plotted the seasons on top of one another so I could compare them.

PFlV7oIDdbgrrR37a9rjc3jtl17CcjNas1ds
You’re seeing that correctly — I was one win away from Legend 7 different times in season 24. Sigh.

Now I can see how efficient my climb each season is and how it compares to the current season. But I’m still blind to how much time there is left in the season.

Do I have a day or a week left? Am I ranked higher usual for the 5th day of the season?

To answer these questions I create a chart that tracks progress by day of the season. Here I have strip-plots for each day and a line connecting the maximum rank achieved each day. This is a better way to evaluate my chances of reaching Legend in a given season.

HkSbNLXfTL9OXbGF8kDQmkOHzvSW4fnefKwU

Charting Deck Performance

But what about decks? Obviously they play a huge role. When it comes to decks, it’s all about the win-rate, so I visualize each deck as a line. It’s a bit cluttered, but I can see the win-rate, when it stabilizes, and how one deck compares to another. Tableau’s highlight feature is really helpful here.

26-Sygty2grNl532udKwhPrNA980IXW65100
Note how it takes about 100 games for a deck to stabilize. Remember that next time you read about someone’s “amazing” 82.35% win rate (after just 17 games).

Next I create a deck-specific view of this chart to see how it performs against different classes. I have to play a lot of games before trends emerge, but once they do I get a sense for how common each class is and how I’m performing against it. Depending on the meta, I also get an understanding of deck match-ups.

itX05eBsBzeAnkvKxHhYYloO1YQx-ys9qlQB

Now, it goes without saying that my win-rate is going to suffer as I get into higher ranks, so I created a bubble chart to help me better understand the performance of my decks at different ranks and seasons.

l9Hr6bJZfE8M6c8-jpS5PhJbAhnxlyodrJWV
My Zoo deck performed very well until I got to Rank 5.

How Hearthstone’s Ranking System Works

All this got me thinking about difficulty, seasons, and the ranking system (bear with me if you’re well-versed in Hearthstone’s ranking system). First off, the ranking system isn’t linear as one might assume. The ranks (starting at 25 and going up to 1) aren’t spaced evenly because the number of stars in-between each rank changes as you climb up the ladder. All told there are 120 possible placements.

zzdTyoXk6rJen1TnVd5lbPrezK4fDNz7m4Fa

But Blizzard didn’t stop there. They created additional resistance starting at rank 20, and then again at rank 5.

SrGtzAgycCXKR85H6jFuO7EUUnKDpdH8FrA8

Lastly, Hearthstone has very short seasons—just one month. At the end of every month everyone is sent back down to the bottom of the ladder.

cevOooSmVRiswh8P6agOxbNP45pEXktKIw-A

Now, this isn’t news to anyone who plays a lot of ranked games. But it brings me back to my original question: how do I measure the difficulty of a given game?

Modeling Game Difficulty

I began with a few simple assumptions:

  1. The most difficult game of season is at rank 1 with 5 stars on the first day of the month.
  2. The least difficult game of the season is at rank 25 with no stars on the last day of the month.
  3. Any game played later in the month at a given rank is easier than a game played at that same rank earlier in the month.

Using these assumptions as a guide I created a model for difficulty. At first it was very simple (and inaccurate).

BSLkpvID6E-m4cEvHYxccoqRLAVjBmdNcsqp
A very rough model.

I refined it until it reflected my perception of difficulty. Note that this is not driven by any data and I doubt it’s completely accurate, but it’s better than rank alone at gauging difficulty.

Xm1goAK3Jrr20cloCiHDcohFK6d3qEcDeNBR
A better model.

Now let’s revisit some of the earlier charts using this new “difficulty” metric in place of rank. This offers a different perspective — hopefully a more accurate one.

qKFBCPEHsM4OlQxaMp2ls7St14YbbUJpwAvY

What about that bubble chart? I’ve put difficulty into categories, much like I did with rank and I’m already feeling better about the perspective this provides. It’s equally valuable in the early and late season.

OSdS-KXr0jxUD8x3dFMlwlGJ2Kuf8ZUMDhSb

Evaluating Deck Performance

Next I use difficulty to create another metric. This one is pretty straightforward. I call it “quality.” If I win a game I add the difficulty of that game to quality. If I lose a game I subtract the difficulty of that game from quality.

If “win” then + difficulty
Else if “loss” then – difficulty

This allows me to reward winning difficult games more than easy ones and yields some very interesting results. Remember that chart showing win-rates for decks? Well, here it is again but with our new quality metric on the y-axis (color is still win-rate).

i2YHuYBLDQmwsOWpZ1OWGI0AHa-JkWtwo8Z4

I also summarize this into a simple rank.

OWqNZrWBdUCt-PHgOS2n1xGumaWp9Y0xcnsN
Not even a 53.9% win-rate could salvage the performance of my season 27 Zoo Warlock.

What’s Next?

There are still a lot of things I want to explore further with my data-set. It would also be interesting to apply these techniques to pro players and compare them to one another. Are they rank 1 Legend because they win difficult games? Is win-rate alone the best predictor for skill? What role does the volume of games played have on rank advancement?

In case you couldn’t tell from the data I still haven’t made it Legend, but I’m honestly having as much fun analyzing my stats as I am playing the game.

¯\_(ツ)_/¯