Slippi-Era Melee Elo Ratings

I’m a huge fan of Super Smash Brothers Melee as a spectator— I’m god-awful at the game, but I love watching it. It’s fast-paced, it’s exciting, the community is super passionate and organized, and it creates a lot of really hype moments. Until recently, it was almost solely a LAN game where players would only face each other at various tournaments across the US; the online capacity of the game was pretty limited and laggy at best. When COVID-19 hit, there was a dry spell of Melee for a while, and then Slippi dropped. Slippi utilizes rollback netcode to create a near-seamless and lagless Melee experience, and with it began the “Slippi-Era” of Melee. The validity of online tournaments in ascertaining player ability is a somewhat controversial topic, but it’s pretty clear that Slippi has been able to replicate LAN Melee to a pretty close extent— the cream still rises to the top, and there haven’t been too many insane upsets by lower-tier players abusing poor connections or something of the sort.

With the Slippi-Era came the dominance of Zain and the resurgence of Mang0, and they’re unarguably the top two currently; but where does everyone else stand? I’ve been curious about this, and though some will look at tournament results with context to reasonably rank players based on current ability, that sounds far too sensible to me. Instead, let’s make an Elo rating system based on online tournament results and see where players stand.

The Elo rating system, for those who are unaware, is essentially a numerical value that determines your skill level in comparison to other players. It changes every time a match is played, and depending on the strength of your opponent and the result of the match, one’s Elo can drop or increase. Winning a game will increase one’s Elo, and winning against stronger opponents relative to you will increase your Elo by more (and vice versa: losing a game will drop your Elo, and losing a game to a weaker opponent relative to you will drop your Elo by more). Elo is calculated using two formulas: one that calculates your expected score based on a match played, and one that updates your existing score based on the previous formula. I would try to explain this, but both Wikipedia and this video do that much better than I ever could, as a pathetic non-STEM major.

Ranking every single player who’s ever played in an online tournament during the online-era is just not something I can feasibly do, so I decided to only rank those who were present in any of the Top 8s of Majors as defined by Liquipedia. (Side Note: I’m not sure why they didn’t include some notable online tournaments like Pound Online, but I really didn’t have the energy to deal with that. Additionally, I included the entirety of SCL, including Division 2 and Promotion/Relegation games.) I have no clue what an API does or how to use it, which made it all the more painful that the Liquipedia team has an API. I’m sure that if I was able to use it, this project would’ve been far less time-consuming and less painful.

Too bad!

So instead, I made a couple spreadsheets (find them below) and manually inputted every set (note: a set is a bo5 match) result. I had a couple hiccups here and there, mostly due to me accidentally misspelling a name or writing a player’s name twice, but after a little troubleshooting, everything worked out. In terms of code, I essentially made a dictionary with the player’s names as keys and a Player dataclass with their Elo and matches played. I then made a separate list of dataclasses for the set data, which tracks the players and the set result. After that, it was just a matter of finding both player’s updated Elo rating given a certain set, and then updating the dictionary to add the updated Elo and adding one to their matches played. Rinse and repeat for all the sets, and then you have your Elo ratings.

Let’s follow the progression of the power ranking through the Slippi-Era. First, here are the results after the first season of the Slippi Champions League (SCL):

after.PNG

We can already see Zain with a clear advantage over the rest of the field, with Mang0 a distant second and, surprisingly, Captain Faceroll at third. Captain Faceroll had a pretty good SCL Season 1 which nets him a lot of points, and being in Division 2 means that he racks up more wins than losses, which could (and has) artificially boosted his Elo quite a bit. The opposite of this is seen through Wizzrobe, who floated around Division 1 and 2 throughout Season 1 and so had many more opportunities to get losses, and less opportunities to pick up wins. Most

Among players with at least five games played, the bottom three are Azel, Hungrybox, and Shroomed. Let’s now skip ahead to the power rankings right before SCL Season 2:

aok.PNG

At this point we’ve played through Summit 10, LACS 3, Four Loko Fight Night, and the Galint Melee Open: Spring Edition. Zain’s lead is about the same as before, but the gap between second and third isn’t even close- Mang0 and Zain are quite clearly the two best. Captain Faceroll remains at fourth by virtue of not having been in a Top 8 since SCL, while iBDW impressively grinded his way to the third spot. S2J, SFAT, and n0ne stick around, while Wizzrobe took a fall, being ranked #9 currently.

We can already see one of the problems with my methodology- because I had to manually input every result by hand, I chose to only look at Top 8 results and thus players like Captain Faceroll can get away with not playing and maintaining their Elo. If I had included all sets played (I need to learn how to use an API at some point), we would have had a much more accurate rating.

Let’s move onto the final standings:

finals.PNG

And here we have it. Mang0 managed to claw back a little more ground, but Zain is still by and far the best player. Wizzrobe manages to rise to round out the Top 5, and, perhaps most shockingly, SFAT’s insane performance in Week 4 of SCL S2 means that he clutches the #4 spot.

If you’re wondering why Captain Faceroll isn’t here, I had a system in place that removed any players that played less than the average number of sets played across all players — in our case, 11 (Spark was just on the borderline with 11 sets played, but I removed him because he didn’t play any games in SCL Season 2). Hungrybox, quite unfortunately, is awarded the dubious distinction of being at the bottom, though if we didn’t remove players with too few games, Axe, Aklo, and, most shockingly, n0ne join him at the bottom of the leaderboard. n0ne’s abysmal performances during SCL S2 tanked his Elo hard, and he finds himself at the bottom. While we’re on the subject of players who were disqualified due to too few games, the aforementioned Captain Faceroll is still high up, and so is Gahtzu.

I don’t think this analysis reveals anything groundbreaking, but it does put into context how dominant Zain has been during the Slippi-Era, and how abysmal Hungrybox has been. What’s great to see is that my current standings do seem to largely reflect the current best players, as six of the top eight players have qualified to Smash Summit 11. Looking ahead to that event, it’ll be interesting to see if Zain extends his lead even further, or if Mang0 can mount some sort of comeback (though one would speculate that the help of a certain Axe might be necessary— Zain’s loss to Axe and Wizzrobe really hurt in SCL S2.

I mentioned the primary weakness of my method, being sample size, but my choice to only consider set wins and losses is another point of contention- a blowout 3-0 win counts the same as a close 3-2 win, and so it doesn’t really allow for that nuance. This is strictly a broad, “feel out” kinda tool for only the most active and top players of the Slippi-Era.

tl;dr Zain is really good

Below you can find the code (again, an awful bloody mess) and spreadsheets I used.
Thanks for reading, hope it was worth your while.

Previous
Previous

What if Pokerus could spread to humans?

Next
Next

Which NBA teams are the worst without their best player?