Hi, after reading your feedback about ranking calculation, I would like to suggest the following computation.
The following suggestion is work in progress and can be commented (feedback greatly appreciated as always).
The base formula
First, everyone seems to agree with this formula:
(BASE * min(N/500,1))^((N- C+ 1)/ N)
But a post written by Jolindien got a lot of likes. It’s about rewarding the top of the ladder and the the low/mid ladder with more points. Based on the suggested formula, I did some tests, and the following formula seems quite fair:
0.5*(1000*min(N/500,1))^(((N- C+ 1)/ N)^0.5) + 0.5*(1000*min(N/500,1))^(((N- C+ 1)/ N)^10)
It gives a huge amount of points when climbing in the top 10 while still rewarding more everyone at the start (giving a nice feeling of progression).
Here is a comparison between the first formula (red line) and the new one (blue line)
The X-axis is the ranking (here over 500 players, but changing the number of players doesn’t influence the curves). The Y-axis is the number of points. As you can see more points are given at the beginning and a lot more at the end.
Doing so will greatly boost the amount of points gained by top players, giving them more ranking in all aspects.
One of the current main problem is that multiplayer games are giving more and more points over contests and other categories. To solve that, we can compute a ranking for each category and then, apply the above formula to calculate final points. As we also apply the complex formula, someone who is in the top of the contest category will have a lot of points compared to someone who is medium in all categories.
Here is the suggested repartition:
- contests (30%) (base 30 000)
- multi (30%) (base 30 000)
- opti (15%) (base 15 000)
- clash of code (15%) (base 15 000)
- code size (10%) (base 10 000)
Note that the repartition is an example and a preview using a second repartition can be found at the bottom of the post. Feel free to share your thoughts about the repartition
As every category is partitioned, the base for each game (except contest) can be 1000. Once each game has been computed, a ranking is computed and the formula is applied again with the base specified in the repartition.
top 3 contests are taken into account. Remember that a lot of players copy paste their solution in the multi category, so this category rewards a lot of points (and not just 30%).
Instead of taking into account only last year’s contests (as it was suggested), we’re thinking of giving more and more points for each new contest. For example, the first contest ever done gives 1000 points. Each new contest could give 5% more additional points (rounded to 10).
BASE will be:
Xmas Rush: 8150 A*Craft: 7760 Legends of Code and Magic (M): 7390 Legends of Code and Magic (S): 7040 Code of Kutulu: 6700 ... Genome Sequencing: 1160 CodinGame March 2013: 1100 Chuck Norris: 1050 CodinGame October 2012: 1000
As each new contest gives more points, it’s interesting to give it a try and reach a new “best score”.
There is a lot of debate (even internally) about this. Some of us prefer to keep the “X best scores”, other tend to prefer “Keep them all”. The progression feeling is important and we don’t want to tell our active users “let’s focus on 10 multi games and let’s stop playing the new ones”. This is why I would like to suggest to “Keep them all”. But as the formula gives a lot of points for the best players, there are multiple strategies to reach the top of this leaderboard: be the best on few games or good on lot of them, giving opportunities for each of us to climb this leaderboard. This is why the formula gives an exponent of 10: like this less active but better players will be rewarded a lot of points making them higher in the leaderboard.
all games are taken into account
Clash of Code (15%)
I know that this one is really controversial. But as it has been stated, it’s a big part of CodinGame and played by a lot of players. Nevertheless, we’re thinking of reducing the loss of points over time making Clash of Code more interesting for climbing the leaderboard.
Code Size (10%)
all games are taken in account.
As each category is partitioned, we will probably rework the leaderboard so that each category can be displayed easily letting each of us to focus on one category (contest for example) or all of them using the main leaderboard (which reward all activities in the platform).
I computed a simulation that you can discover here (only the first 10k players):
The second tab is the following repartition (which is more contest oriented) to compare:
contests (50%) (base 50 000)
- multi (25%) (base 25 000)
- opti (15%) (base 15 000)
- clash of code (5%) (base 5 000)
- code size (5%) (base 5 000)
Remember that once coding points have been calculated for each game, a ranking is computed for each category and the formula is then reapplied using the base specified in the repartition.
If you read this, congrats, that was a huge post.
What do you think about this?
What repartition do you prefer?