Skip to main content
2 of 2
Typos
DMGregory
  • 136.3k
  • 22
  • 247
  • 373

Fair scoring system for multiple levels and multiple players

I have a parkour game with over 200 levels and I want to be able to compare players by assigning each one a score that is based on their overall performance on the levels (how fast they can finish the levels). This score then determines the "ultimate" leaderboard for who the best players are.

How I currently do it:

  • I look at the leaderboard of each individual level and award points based on the position on that leaderboard. 1st player gets 10 000 points, 100th player gets 100 points - everyone else in between gets their points calculated from an exponential curve. Beyond position 100 players get 0 points
  • I then divide everyone's points by the total number of levels to get an average - this is their final score I compare everyone with

I average the points because new levels are frequently added and I don't want the score to be inflated with the addition of new levels.

The problem:

  • Some people are extremely good and are 1st on many levels but have only played about half of all levels. This gives them a decent score but the averaging process severely punishes them for not having finished all levels. Players that are noticeably worse but have played all levels and finished with a good (but not great) placement in the top100 are ranked higher in the final score.
  • I thought about taking the average of only those levels that a player has actually finished, but then someone might get punished for trying a new level and not playing it a lot to get a good time, thus lowering their average points per level

Is there a way for how I can make this system fairer such that

  • better players actually get a better score
  • the score does not inflate with the addition of new levels
  • finishing a level for the first time with a bad time doesn't decrease the players score

I'd be happy to hear your suggestions for how to improve my system.

Liberty
  • 159
  • 1
  • 5