Sorry to bring that old post to life, but I think that Coding Rank should reflect in some way the relative skill of a programmer, in a global leaderboard.
But after many observations, IMHO Contest and Multiplayer formulas doesn’t reflect at all the average position or skills of a coder.
The Problem
For some simplistic examples I’ll use the playercount from leaderboards, ignoring the Score >0 rule at will because it’s not important for the current issue.
Current Problem in Multiplayer:
Player A:
Coders Strike Back: Rank 2300th/20838
Score calculated: 1953 points
Player B:
Fantastic Bits: Rank 1st/923
HyperSonic: Rank 1st/997
Score calculated: 1920 points
Wait, whaaat? Are you telling me that a player on Silver League CSB is better than the top player on two other multiplayer games? This is completely insane.
And the same observations can be done on Challenges. In fact I filter the general leaderboard by Contest Points (https://www.codingame.com/leaderboards/global?column=codingpoints&value=contests)
and all top 10 players there share the same common challenge, well placed on Code vs Zombies (and maybe The Accountant).
In fact a fast calculation between Code vs Zombies against Codebusters (most and least played challenges recently) reflects that the 219th player on CvZ has more points that the 1st player on CodeBuster.
For me the main problem is assuming that the more players, the harder and more rewarding a game must be.
I think that player count is a matter of sample size on a statistical sample. Having more players in theory won’t move you a lot on your relative position. If I’m in the top 20% for 1000 players, I’ll be in the same 20% with a population of 20000 players (maybe with some confidence error, or whatever is called).
So the formula must add a % bonus for player count, but not have a base point based on player count.
Errors that bring using Player Count as base for points:
- On challenges it can make impossible for new players to ever reach veterans. If for any reason there was a challenge with 5000 players, and from now on all challenges are 2000 players, new players never ever can reach the same scoring than veterans (including a hat trick from a new player).
- The same can happen on the opposite, if suddenly CG have a reddit hug and a challenge is player by 10000 players, probably older scores will be worthless against a pool of 20k points for a single challenge.
- Multiplayer points are totally biased, as stated before. Some very hard games give little points whereas other multis are plenty of points. Getting into top 30 on any multiplayer is equally hard.
- A future problem will be the drift in the Multiplayer vs Challenges scoring. With more and more multiplayers coming in, and challenges limited to 3 best scores, the scoring slowly drift towards Multiplayer. There must be some way to make Challenge Total Scoring as a % of multiplayer total Scoring. This way the global score can be created as 15% Challenges+70% multis+Code Golf +Optimization, or something like that
Multiplayer Formula proposal
(Base_Multi * f(N) )^( (N-C+1) /N)
Where Base_Multi will be a fixed value, the base score for each Multiplayer, and f(N) is a function that gives a bonus based on Player Count (values [100%-115%]. The rest of the formula remains the same. So any top1 player from any multi would score something between Base_Multi and Base_Multi * 1.15
I don’t specify how f(N) should be calculated, but it must take into account possible variances on population and still be fair. Can be lineal, non-lineal, etc…
With the modified formulas (asuming Base_Multi as 3000 for example), the prior calculations were something like:
Player A:
Coders Strike Back: Rank 2300th/20838 I assume is the most played multi, bonus = 15%
Current Score: 1953 points --> New Calc: (3000*1.15)^( (20838-2300+1)/20838 )
New Score : 1404 points
Player B:
Fantastic Bits: Rank 1st/923
HyperSonic: Rank 1st/997 I assume both games are the least played multis, bonus = 0%
Current Score: 1920 points --> New Calc: (30001.00)^( (923-1+1)/923 ) + (30001.00)^( (997-1+1)/997 )
New Score : 6000 points
Now this is more logical and fair for FB and HS players.
Contest Formula proposal
(Base_Challenge * f(N) )^( (N-C+1) /N) * 2
The Base_Challenge Points should be based on the number of multiplayer games, this way it won’t drift on the future.
As best 3 challenges scores, Base_Challenge = Base_Multi * “number_of_multis” * 5%
This will assign a 15% value of the multiplayer to challenges (3 challenges * 5%). Obviously % are set by CG, depending on how important challenges are to the global score.
If you’ll have different Contest categories, then make some changes to the idea, and have 3 different Base_Challenges.
I really can’t predict how these formulas changes the current ranking, but I think it’s more fair to everybody.
What do you think?