Skip to content

Ranking System

The ranking system uses the OpenSkill package using the plackettLuce model.

Ranking Variables

mu and sigma

The ranking system is based on these two values:

mu, the rating value, higher is better


sigma, the standard deviation, shrinks to zero over time

The defaults are:

    "mu": "25",
    "sigma": "5"

Sigma will reduce your rating growth the closer it is to zero. This means it will take longer to as time goes on to move in ranks. When the platform enters into "seasons", the sigma will be reset to 5 allowing movement out of previous ranks.


The rating is calculated with mu * 100.

Ranking Text

The following text based ranks are used for the game:

let rankTexts = [
    'Wood I',
    'Wood II',
    'Wood III',
    'Wood IV',
    'Bronze I',
    'Bronze II',
    'Bronze III',
    'Bronze IV',
    'Silver I',
    'Silver II',
    'Silver III',
    'Silver IV',
    'Gold I',
    'Gold II',
    'Gold III',
    'Gold IV',
    'Platinum I',
    'Platinum II',
    'Platinum III',
    'Platinum IV',
    'Champion I',
    'Champion II',
    'Champion III',
    'Champion IV',
    'Grand Champion I',
    'Grand Champion II',
    'Grand Champion III',
    'Grand Champion IV',

The rank text is calculated using this formula:

let rating = * 100;
const maxRating = 5000;
let rt = Math.min(maxRating, Math.max(0, rating));
rt = rt / maxRating;
rt = rt * (rankTexts.length - 1);
rt = Math.round(rt);

Ranking Formats

There are two formats that will be supported, although only FFA is supported at this time.

Free for All

Players are ranked individually and the ratings updated. You should update the player's rank value to determine who is 1st place or last place. Lower is better, and its not required to have rank=1 for 1st place, as long as only one person has the lowest rank value.


In the future, when teams are supported, there will be a team "rank" value. This value will determine which team wins or loses for the rank system.