Notes on Projection 1.0

Table of Contents

Notes on Projection 1.0:

SQL Query of any player's matches

I don't know if Tafokints has some sort of system like this but if he doesn't he should definitely consider it - it's very handy to have matches in this sort of format because you can get all sorts of information really easily

useful.png Making this information publically available in some sort of app would be super useful - I frequently talk with friends about who's beaten who recently and trying to find all of Silent Wolf's bracket matches against fox players is a gigantic pain (and is now super simple with this database)

Assigning People Skill

This is one of the shakier parts of this project, so I tried to make the bins fairly large to compensate for the fact that I'm not 100% super familiar with every single player's skill level. Like I said, this is basically a giant demo and there are a number of things that this can be replaced with in a production environment, so please don't approach me all upset that player X is in tier Y and should really be in tier Z because I promise I will do literally nothing about it.

Winrate In Melee vs In Sports

Eli Ben-Naim et al. 2006 did a similar analysis with a bunch of different sports:

sports.png It's a pretty good read if you're interested in sports statistics, but if you want a quick comparison to Melee then the tl;dr is that Melee's upset rate is similar to the NFL upset rate (~36%) and overall is a tad on the conservative side on the spectrum of traditional sports.

Global Character Curves

Dumped here to not take up too much space on the actual writeup

FoxvsAll.png FalcovsAll.png FalconvsAll.png MarthvsAll.png PeachvsAll.png SamusvsAll.png SheikvsAll.png PuffvsAll.png ICsvsAll.png

Matchup Curves

A very many of these simply didn't have enough data to be useful - here's a few of the ones that at least made some sense.

foxvsfalco.png foxvssheik.png foxvsmarth.png falcovssheik.png falconvssheik.png


Part of the reason I wasn't super comfortable using much data from these curves, especially for character vs character, is because I wasn't super knowledgable about trendlines and I wasn't particularly thrilled with the way they turned out. If I want to improve this I'll need to learn more about trendlines, weight the trendlines based on which points have the most matches played (since a point with 80 matches and a point with 1 match are weighted equally with a normal trendline). I also need to figure out how to apply more specific rules to trendlines (e.g. must always be increasing or staying the same, must begin at 1 and end at 0, etc) because the fact that these curves slope downwards at the ends sometimes is definitely not what I wanted.

Volatility - Characters and Matchups

This applies the integral that I mentioned on the global character curve:

Character Consistency Upset
Puff 91% 14%
Peach 89% 17%
Samus 85% 12%
Marth 85% 15%
Fox 84% 14%
Sheik 83% 11%
Ice Climbers 81% 20%
Falco 81% 12%
Falcon 79% 10%

Decision Tree Classifier

The classifier is a simple one that just follows a series of rules, but just because it's a simple idea doesn't mean it won't have a complicated execution


I was originally gonna throw in "Winrate vs opponent's character" as a feature but it worked better than I had hoped with just the features I put in and I was worried about overfitting the data, so I just left it alone to prevent additional complications. I'll probably play around with it some more eventually but for now this is fine.

Radar Chart

Full Disclosure - I didn't use matplotlib for this, I just found a tool online to do it. You can use matplotlib for this but actually finding good places to put these values is another task in and of itself (I tried to place it as "would have a 50% winrate vs players of this skill" which would likely be an entirely seperate problem solved probably with linear regression or something) so I just made one as a sort of mockup.

Back to Top