by Andrew ‘PracticalTAS’ Nestico


Over the past few years, Melee It On Me has assembled a list of the Top 25 Melee players each summer, to accompany their year-end Top 100 lists. This year, however, they’ve decided not to go through the trouble of creating the summer list because they’re short on time.

With this in mind, I figured I’d take matters into my own hands. Luckily I have a little help, as the Smash community has become the beneficiary of a few different kinds of analytics recently:

Individually each ranking has its weaknesses and strengths, but together they give us a solid picture of the state of Melee at the moment. It helps that the different perspectives tend not to agree with each other too strongly, though Glicko and Reddit are a bit closer to each other than either is to the Tennis ranking.

By crunching the numbers, we can combine the different viewpoints into a single list: a data-based SSBM Summer Top 25.


If you’re only interested in the list, you can skip this section and scroll down. However, we aren’t just using a simple average to give everyone their spot, so if you’re interested in learning how the sausage is made, keep reading.

The individual lists give us a lot of useful data, but not in a very useful form. We need to convert each list into a matrix of head-to-head votes where each player receives a vote over every player that’s below him on a given list. Therefore, this:

Glicko (August 1, 2016) Tennis (August 1, 2016) Reddit (Summer Top 30)
Hungrybox Armada Hungrybox
Armada Hungrybox Armada
Mango Mango Mango
Leffen Mew2King Leffen
Mew2King Plup Mew2King
Plup Leffen Plup

Becomes this:

Hungrybox Armada Mango Leffen Mew2King Plup
Hungrybox X 2 3 3 3 3
Armada 1 X 3 3 3 3
Mango 0 0 X 3 3 3
Leffen 0 0 0 X 2 2
Mew2King 0 0 0 1 X 3
Plup 0 0 0 1 0 X

We want each head-to-head matchup to have three votes between the two players, so each player receives half a vote in the event of a statistical tie. This happened three times in the data set: Swedish Delight/Wizzrobe (T-11th) and Nintendude/PewPewU (T-21st) according to Glicko rankings, and Lucky-Ice (T-15th) according to Tennis rankings.

From here, we want to turn the matchup matrix into a ranking list: a set of values that summarizes the matrix by stating the strength of each player. It turns out that there’s a mathematical theorem which says that as long as we set up the matrix the way we did above, such a list is guaranteed to exist.

Perhaps the most interesting property of this list is that multiplying the matrix by the list itself will spit out the list again. We can use this fact to know that we’ve come to the right answer. However, this raises the question: if you need to know the answer to find the answer, how do you get to the answer in the first place? For that, we’ll be using a little bit more math. I won’t go into the details, but we need to use a computer to calculate the matrix’s eigenvectors. One particularly well-behaved eigenvector will become our ranking list.

The Data-Based SSBM Summer Top 25

There are a few things to note about our list before we get to it:

  1. The final list will be similar to an average of each input list’s placements, but the algorithm I’m using will break ties and rearrange a few players
  2. If two of the input lists agree on a player’s position, he should be closer to that position than the average of his placements on all three input lists
  3. PPMD and Hax were considered ineligible due to inactivity, so they aren’t present on the list.
  4. Scores are relative

With that said, here’s the final list:

Rank Player Score Average Input Ranking
1 Hungrybox 1.000 1.33
2 Armada 0.935 1.67
3 Mango 0.704 3
4 Leffen 0.519 4.67
5 Mew2King 0.513 4.67
6 Plup 0.419 5.67
7 Westballz 0.311 7
8 Axe 0.229 8.67
9 SFAT 0.214 9
10 Shroomed 0.201 9.33
11 Swedish Delight 0.123 11.83
12 Wizzrobe 0.097 14.17
13 Lucky 0.089 13.83
14 S2J 0.085 14.33
15 Colbol 0.07 15
16 Duck 0.066 15.33
17 Ice 0.058 16.17
18 Druggedfox 0.039 18.33
19 Nintendude 0.038 19.17
20 PewPewU 0.026 19.5
21 n0ne 0.017 21.33
22 Wobbles 0.013 21.33
23 Silent Wolf 0.012 21.33
24 MacD 0.004 24.33
25 Zhu 0.003 25.67

There are a few parts of the list that you should pay close attention to:

  • Leffen and Mew2King are tied in average placing at 4.67 — the Tennis rankings placed Leffen at 6th, below M2K and Plup, due to inactivity. However, in the final list, Leffen’s pulled back up to 4th because the other two input lists agree that he should be placed above Mew2King.
  • If we were going by average placing, Wizzrobe would be below Lucky — his lack of a breakout tournament result depresses his Tennis ranking score. However, our algorithm puts him back above Lucky for the same reason that Leffen is above Mew2King.
  • N0ne, Wobbles, and Silent Wolf are all tied by average placing, and the three remain balanced after head-to-head matchups are considered. In this case, the algorithm biases towards players who received some votes over stronger players. Wobbles received a vote over Druggedfox, Silent Wolf received a vote over PewPewU, and n0ne received a vote over both. Thanks to these votes, n0ne is first among the three tied players, and since Druggedfox is higher on the final list than PewPewU is, Wobbles gets the nod over Silent Wolf.


Any list like this can only be as good as the algorithm and data used to create it. This ranking algorithm is certainly more complex than a simple average, but with it comes a much better result. Also, the different perspectives of Glicko, Tennis, and Reddit rankings may not be perfect individually, but together they smooth out each others’ inconsistencies to create a valuable list.