Overview


Each NFT submitted into Ranked Battle is ranked on a global leaderboard.

The Ranked Battle mode is currently using an ELO scoring system .

Elo


Elo, named after Arpad Elo, is the basis for ranking systems in many games, ranging from competitive sports to chess. In a typical Elo system, players start with the mean score of 1500. If players perform well (wins against their opponent), their Elo score rises. If they perform poorly (lose against their opponent), their Elo score falls. The system balances at the mean score, meaning from an Elo score perspective, each match is zero-sum (the winner’s score rises as much as the loser’s score falls).

Over time, each player’s score should accurately represent the skill relative to the other players on the leaderboard. In fact, the system is designed in a way to represent the expected win rate of players. Specifically, a player ranked 200 points higher than another player is expected to win against the lower-ranked player ~76% of the time while a player ranked 100 points higher than another player is expected to win against the lower-ranked player ~64% of the time.

This also means that upset wins affect the scores more. For instance, in a match between two players with vastly different scores, if the player with the lower score wins, their score will go up significantly. However, if the player with the higher score wins, their score may not change.

Elo Methodology


Let $R_A$ and $R_B$ be the ratings of Player $A$ and Player $B$, respectively.

The expected winning rate of Player $A$ is calculated as follows:

$E_A = \frac{1}{1+10^\frac{R_B-R_A}{400}}$

The expected winning rate of Player $B$ is calculated as follows:

$E_B = \frac{1}{1+10^\frac{R_A-R_B}{400}}$

$E_A$ and $E_B$ can be interpreted as the probability that Player $A$ and Player $B$ wins the matchup against each-other, respectively.

<aside> 💡 Consider a matchup between Player $A$ with an Elo rating of $1500$ and Player $B$ with an Elo rating of $1600$.

We calculate $E_A$ as $\frac{1}{1+10^\frac{1600-1500}{400}}\approx 0.360$ and $E_B$ as $\frac{1}{1+10^\frac{1500-1600}{400}}\approx 0.640$.

</aside>

This means that Player $A$ has around an expected 36% chance of winning against Player $B$ while Player $B$ has around an expected 64% chance of winning against Player $A$.

We note that $E_A+E_B = 1$ since the matches are played between two players. The ideal match ups are those where the skill differences between the two players are minimized, in other words, a match up where $E_A \approx E_B$, which is possible only if $R_A \approx R_B$.

Let Player $A$ be the instigating player (from whose perspective we consider the results of the match). The $Result$ is recorded as $1$, $0.5$, or $0$, depending on whether Player $A$ wins, ties, or loses.

The adjusted Elo rating after the match for Player $A$ is calculated as follows:

$R’_A = R_A + K *(Result-E_A)$

The adjusted Elo rating after the match for Player $B$ is calculated as follows:

$R’_B = R_B + K *(1-Result-E_B)$

The $K$ is known as the K-factor or the development coefficient, and it’s the maximum absolute amount a player’s score can change in one Elo update. In other words, the higher the K-factor, the more volatile the player’s Elo ratings will be. See **Elo Adjustments** section on methodology for determining $K$.

In the calculations for both players, the K-factor of the instigating player, in this case Player $A$, will be used.

<aside> 💡 Consider a matchup between Player $A$ with an Elo rating of $1500$ and Player $B$ with an Elo rating of $1600$. Assume that Player $A$ instigated the match and their $K$ is $20$. We recall that $E_A \approx 0.360$ and $E_B \approx 0.640.$

The three possible cases are as follows:

If Player $A$ wins, then $Result = 1$. The new Elo for Player $A$ is $\approx 1500+20*(1-0.360) = 1512.8$ while the new Elo for Player $B$ is $\approx 1600+20*(1-1-0.640)=1587.2$.

If Player $A$ and Player $B$ tie, then $Result = 0.5$. The new Elo for Player $A$ is $\approx 1500+20*(0.5-0.360) = 1502.8$ while the new Elo for Player $B$ is $\approx 1600+20*(1-0.5-0.640)=1597.2$.

If Player $A$ loses, then $Result=0$. The new Elo for Player $A$ is $\approx 1500+20*(0-0.360) = 1492.8$ while the new Elo for Player $B$ is $\approx 1600+20*(1-0-0.640)=1607.2$.

</aside>

We note that since we use the same K-factor to update both parties and since $E_A+E_B = 1$, the points being gained by the winning party is exactly the points being lost by the losing party. We also notice that the player with the higher Elo score has more to lose; the higher-rated player gains less than the lower-rated player for a win but loses more than the lower-rated player for a loss. This is because the higher-rated player is expected to be more likely to win (in the example, $E_B$ was higher than $E_A$), and thus if they win it’s less of an upset than if the lower-rated player won. Furthermore, we also note that even if the two players tie, the lower-rated player still gains Elo score from the higher-rated player.

Elo Adjustments


The methodology for determining a player’s K-factor is taken from FIDE Rating Regulations. The system is dynamic and the criteria are as follows:

  1. $K=40$ → This K-factor is used for players who has played less than 30 games; we want more variability to speed up Elo score discovery. The higher initial K-factor adds extra variability and ensures that new players can be quickly moved into a range commensurate with their skill.
  2. $K=20$ → This K-factor is used for players who have played more than 30 games and have a score of less than $2400$. More experienced players are assumed to already be in a range commensurate with their skill; less variability in ratings changes assists with more accurate matchmaking.
  3. $K=10$ → This K-factor is used for players who have played more than 30 games and have a score of over $2400$; the K-factor remains at $10$ even if the player’s Elo drops below $2400$. Highly-experienced and highly-skilled players do not need as much variability in ratings change to have an accurate score.

Match Ups


When a player initiates a fight with their NFT (we will refer to this as the Challenger NFT), the matchmaking system randomly selects a group of NFTs that are within an acceptable deviation of the Challenger NFT’s Elo. We then determine a target size of the opponent pool. A random opponent will be selected out of opponent pool and matched against the Challenger.

Example

➡️ Challenger NFT Elo: 1,600

➡️ Acceptable Elo Deviation: 100

➡️ Opponent Pool Elo Range: 1,500 ≤ x ≤ 1,700

➡️ Opponent Pool Size: 30¹

Opponent Pool Makeup

15 opponents will be selected between 1,500 to 1,600 and 15 opponents will be selected between 1,600 to 1,700.


Notes:

  1. Number of players for opponent pool will be finalized closer to the launch of the game.

<aside> ⬅️ Back

</aside>

<aside> ➡️ Next

</aside>