Mad Skills BMX2 Most Dominant Player Ever Ranking System

Over the past few weeks I have been working on a larger project to extract as much information from the game as possible. I spent a lot of hours moving game information to a google sheet in order to analyse it.

I posed the question of, “Who is the most dominant player bmx2 has every seen?”
If you want the simple answer, it is Uncleal. Uncleal is by far the most dominant player we have ever seen.

Before we go into how it was done, you can see the whole leaderboard here:

The math:
To even start to figure this out we would need to make a ranking system that measures dominance/scores from past weeks and having them decay over time.

The first would be to assign values to each Jam with a exponential decaying function in order to balance out a score. But the exponential decaying function must not flatten out for over 30 values.


Something more like light blue, and not like dark blue or green, as it flattens out too quickly and would assign higher scores to lower values.

We did this by taking:

Which gives us this nice exponential decaying function:


We would now assign the current race/Jam a value increase of 1.67 in order to formulate first place to 500, and not 300 potential score value.
Now, to get the dominance account. We would need to get a potential value for the last 5, and then last 10 Jams in order to measure true dominance and not just previous Jam scores (which would not actually alter the scores from the previous Jam).

We would want to decay the value previous Jams so the previous 4 Jams would be just true score. So a potential value of 300 per race (or 299.997 if you want to be exact :stuck_out_tongue: ). Then, taking the prior 5 Jams and giving them a potential value of 100 each.

This would now make the function:

With which we could calculate anyone’s dominance score.
Some simple google sheets formulas and we would automatically extract dominance from another sheet.

=(INDEX(‘Point Values’!E:E,Profiles!L2)*1.67) + ((INDEX(‘Point Values’!E:E,Profiles!F2) + INDEX(‘Point Values’!E:E,Profiles!E2) + INDEX(‘Point Values’!E:E,Profiles!D2) + INDEX(‘Point Values’!E:E,Profiles!C2))/3 + (INDEX(‘Point Values’!E:E,Profiles!G2) + INDEX(‘Point Values’!E:E,Profiles!H2) + INDEX(‘Point Values’!E:E,Profiles!I2) + INDEX(‘Point Values’!E:E,Profiles!J2) + INDEX(‘Point Values’!E:E,Profiles!K2))/1.67)

This would go into every field for the player (besides the first 10 which we consistently would add scores (the first one would get score*2 to get a higher value). This is why the scores (basically linearly) rise until week 10 until all values from previous Jams have gotten valued.

Now after this we just had to make profiles for each of the 296 players that have reached top-30 in a Jam and then we were set! :slight_smile:

If you have any further questions, feel free to contact me here, or on discord: BWR_Colin#3169

Thank you!


Hoooooooooooooooooolyshit :joy::joy::joy:

1 Like

Haha, this is amazing! Good job :star_struck:
But perhaps you should change that google doc link into a version where we do not have the right to edit?
So no one can mess with it.

1 Like

I think I have it enabled where I have to approve comments. But I’ll take a look as soon as I get home. The nice thing is that sheets has a built-in Version control :slight_smile: so I can always revert it. I’ll check it out in a few! :slight_smile:

EDIT: You were right! I fixed it :slight_smile:

1 Like

Hah this is awesome! You must have spent a lot of hours on this :metal:

Thank you! Yes, I spent quite a while on it. :stuck_out_tongue: Mainly getting all the data took so long. If I had access to it, I think maybe a few hours. :slight_smile:
But lots of fun!

1 Like

This is very awesome Colin…!!!

1 Like