💥 💥 💥

We’ve just released an update of the ranking system on CodinGame. Part of a bigger project to refresh the competition experience on CodinGame, this rework will have quite an impact on every player’s ranking!

Ready for a quick tour of the changes? Buckle up!

A Bit of History

The whole story started 4 years ago when we carried out a complete rework of the ranking system, splitting the puzzle and game rewards into experience points (XP) and CodinPoints (CPs).

Experience points contribute to your level, which is representative of your activity on the platform. On the other hand, CodinPoints contribute to your rank, which represents your performance in multiplayer activities.

Some time later, regular players within the community started noticing some unfairness in the way CPs were distributed among different games. The main issue was that the top ranked player in a game that doesn’t have many players could earn fewer points than a player ranked after the 1000th place in another game.

That didn’t seem fair.

Let’s change the formula!

Hang on — it’s not that simple. Changing the calculation of CPs impacts thousands of players. Moreover, there were other particularities to bring into the equation. We didn’t want to rush into this kind of rework without making sure we took all aspects of the problem into consideration.

After numerous discussions with members of the community and many internal debates, we’ve finally reached what we think is a satisfactory compromise. Here are the main lines of our reasoning:

  • The competition should be fun, dynamic and fair, as much as possible.
  • The ranking system should allow both long-time and new community members to climb up the ranks.
  • All players should be able to easily check the CPs they get from different games and compare with other players
  • No ranking system can perfectly take into account all of the specificities of CodinGame multiplayer activities, and thus in no way can represent accurately how skilled a developer is. So simpler is better.

Let’s check out the different updates we’ve been working on.

Ranking Rework Details

The General Leaderboard Split

Players enjoy different parts of the CodinGame’s multiplayer experience. Some players only value international challenges. Others only swear by Clash of Code. For a lot of players, the general leaderboard isn’t a relevant or fair overview of their involvement in CodinGame multiplayer activities.

We thought adding specific leaderboards could help them focus on what they most enjoy doing on the platform. The categories of multiplayer activities include:

  • Contests
  • Bot Programming
  • Clash of Code
  • Optimization
  • Code Golf

And for those who like a bit of everything here, we think that it’s kind of cool to be able to analyze the different chunks that make the rank of a CodinGamer.

Leaderboards of contests, bot programming, clash of code, optimization and code golf

The Ranking Panel Clarification

To help players understand how their ranks are computed in the different leaderboards, we have improved the clarity of the ranking panel.

The ranking panel?

Yes, the panel that opens when you click on the rank tile in your profile or home pages.

This panel now shows the number of points earned in each game. This should make it easier now to decide which game to invest your time in to improve your rank in a specific leaderboard.

ranking panel details

 

The CodinPoints Formula Update

This is the old formula for CPs:

(min(N, 5000))^((N-C+1)/N)

and here is the new one:

(BASE * min(N/500, 1))^((N-C+1)/N)

Scary? Trust me, during our discussions, we’ve seen way more complex formulas 😀

  • BASE is a constant that depends on the game’s category and represents the total number of CPs you can get (by ranking first)
  • N is the total number of players
  • C is your rank

This new formula with a BASE amount of points per game ensures that players are rewarded more equally among different games, whatever the number of players in each.

The min(N/500, 1) only ensures that games with very few players (< 500) don’t reward too many CPs.

The Clash of Code Decay Modification

Competing in Clash of Code was often frustrating for players, because as soon as they stopped playing, their score decreased quite steadily, making all their efforts to climb almost pointless (pun intended!).

This decay of points was necessary to keep the ranking dynamic and to avoid the issue of players being unable to overcome others who had ranked high and stopped playing.

We’ve modified this decay to be much slower, especially in your first few days of inactivity. To make a sort of retroactive update and kickstart the new competition in Clash of Code, we’ve recalculated the score of every player based on their very last Clash results.

For more technical details, just know that your score in Clash of Code is a TrueSkill score (characterized by a mean value and a variance). The variance represents the confidence of the system in the mean value.

previous and current evolution of variance with time

Clash of Code decay: variance evolution with time (old = blue, new = red)

When we say “decay of the score,” we actually increase the variance.

The Contests Decay Introduction

To make the competition around our regular global coding contests more fair and dynamic, we’ve thought of adding a decay of points too. We want to allow any new or returning player who regularly participates and performs in our challenges to take a seat in the top ranks.

The decay works as follows: the latest contest rewards 100% of the BASE (10,000 CPs) and each previous one rewards 5% less (9,500 CPs, then 9,000 CPs, 8,500 CPs…) until reaching a minimum of 2,000 CPs. Old contests from several years ago are then worth a fifth of recent contests.

Different times, different competitors.

And we’re keeping the rule of only taking into account the 3 best results (in CPs) for a maximum of 28,500 CPs (if a player wins the three latest contests).

We see the addition of the decay as a great incentive for all players to join our next international challenges and perform to keep their rank — or even improve it.

The more players, the greater the competition!

The Multiplayer Automatic Opening

In the past, we used to release a contest’s game a few days after it ended. We always kept some buffer in case we needed to implement changes, and we also felt players needed some rest after the global competition.

However, we understand how frustrating it is for some of you not to be able to improve your code right after the end of a challenge. We’ve therefore decided to add an automatic push of all contest players into the multiplayer arena (in their proper leagues) at the end of a challenge.

As a result, competing in an AI contest will automatically reward players more CPs for the general leaderboard coming from the bot programming leaderboard.

We’re hoping this change will boost the competition in this category.

The Schools and Companies Competition

For the next contest, the CodinGame Spring Challenge 2020, there will be three different leaderboards.

Three?

Yup. You’ll have the opportunity to compete for your school (if you’re a student) or your company (if you’re employed) on top of the classic solo competition. The five top contestants’ results in a school or a company with at least three contestants will contribute to their ranking in the related leaderboards.

As the point of this feature is to cheer for the top companies and schools (and not discourage low-ranked ones from participating for fear of a bad rap), only the top 100 entities in these new leaderboards will be publicly visible.


We hope you’ll like the changes to the ranking system and will join us in May for the Spring Challenge. As usual, any feedback is appreciated.

Check your new rank!