YGO Omega's Ranking Algorithm

The purpose of this article is not to dive deep into the rabbit hole of the delicate intricacies and mathematics behind ranking algorithms. Rather, it is to explain the ranking algorithm that YGO Omega is currently using, the reasons behind the values we chose and examples of how it works. We want to be transparent with our algorithm so it can be peer-reviewed and improved with player feedback.

Elo Rating System

YGO Omega uses the Elo algorithm. Arpad Elo, a Hungarian physicist, invented this algorithm in 1939 and it is still used in many games today like Chess and League of Legends. The latter of which has won esports game of the year from 2015-2020. There have been other algorithms invented like Glicko and Microsoft’s TrueSkill. These newer algorithms tried to add more accuracy to a player’s rating and added an uncertainty factor which would capture a player’s rating +/- around a number. In Elo, each player has an exact number. This number is calculated using a formula.

E_A = \frac{1}{1+10^{(R_B-R_A )/400}}
E_B = \frac{1}{1+10^{(R_A-R_B )/400}}

EA = The expected score of Player A.
EB = The expected score of Player B.
RA = The current Elo rating of Player A.
RB = The current Elo rating of Player B.

R'_A=R_A+K(S_A-E_A)
R'_B=R_B+K(S_B-E_B)

R’A = Player A’s new rating after the game.
K = the K-factor. This value determines how fast a player will climb or fall.
SA = The match result for Player A. Win=1, Draw=0.5, Loss=0
SB = The match result for Player B. Win=1, Draw=0.5, Loss=0

Let’s do a simple example. Let’s say Player A has 1500 Elo and Player B has 1200 Elo. We’ll use a K=32.

What happens when Player A wins?

E_A = \frac{1}{1+10^{(1200-1500)/400}} = \frac{1}{1+10^{(-300)/400}} = \frac{1}{1.18} = 0.85
E_B = \frac{1}{1+10^{(1500-1200)/400}} = \frac{1}{1+10^{(300)/400}} = \frac{1}{6.62} = 0.15
R'_A= 1500+32(1-0.85) = 1500+32(0.15) = 1500 + 4.8 = 1504.8
R'_B= 1200+32(0-0.15) = 1200+32(-0.15) = 1200 - 4.8 = 1195.2

Player A’s new rating went up by 4.8 points if they won and Player B’s rating also dropped by 4.8 points.

What happens when Player A loses?

R'_A= 1500+32(0-0.85) = 1500+32(-.85) = 1500 - 27.2= 1472.2
R'_B= 1200+32(1-0.15) = 1200+32(0.85) = 1200 + 27.2 = 1227.2

Notice in this case, Player A drops by 27.2 points if they lose. This is because the player they lost against was lower rated than them, so the amount won by defeating a weaker player is only 4.8 points but the amount lost by losing to a weaker player is 27.2 points.


K-factor and Brackets

In YGO Omega, the K-factor changes based on the bracket you are in.

Bracket Elo K-factor
Bronze 0 - 1149 100
Silver 1150 - 1499 85
Gold 1500 - 1849 70
Platinum 1850 - 2199 55
Diamond 2200 - 2549 40
Master 2550 or above 25

Notice how the K-factor gets smaller as you go higher. This is because it gets harder to earn more points. The K-factor is the slope that decides how easy it is to climb or fall. This is also why losing against a player in Bronze causes a higher loss of points because the K is 100. These K values are also used by League of Legends. We may adjust them in the future with player feedback.

What happens if a Player wins 5 times in a row and then loses once?

Everyone begins with a 1000 Elo rating. Now let’s do an example. Let’s say Player A starts with a winning streak of 5 wins in a row but lost the 6th match. Let’s also assume that all of Player A’s opponents had an Elo of 1000. What is Player A’s final rating?

Player A’s rating = 1000 -> 1050 (1st win) -> 1093 (2nd win) -> 1130 (3rd win) -> 1162 (4th win reaches Silver so K now is 85) -> 1186 (5th win) -> 1122 (1st loss dropped to Bronze).

The 1st loss after 5 consecutive wins drops Player A’s rating by 1186 - 1122 = 64 points. This may seem like a lot but it is because they lost to a weaker player with 1000 rating.

We believe this system to be fair. It may seem harsh but that’s primarily because no other Yu-Gi-Oh game really had a tiered K-factor with Elo before. It’s a tiered K-factor algorithm based on League of Legends.

Each time a Player advances to a new bracket, they earn DP (Duel Points), which can be used in the shop. Duel Links, an official Konami simulator, does not use Elo or really any viable ranking system. In Duel Links, if you win 5 times consecutively regardless of the strength of the opponent, you will advance to the next bracket. This means winning 5 times against weak players is all you need. Only a winning streak rather than measuring the strength of the opponents. It rewards grinding. If you keep doing it, eventually you will get that 5-winning streak.

Elo Decay

One of the drawbacks of the Elo system that mathematicians discovered was that there was no penalty for players who simply stop playing. That is, if a player were to reach the highest rating and simply stop playing, then they would also reduce the chance of losing. So simply by not playing once you get to the top would be a problem.

To rectify this, a Mark Glickman, a mathematician from Harvard University, added a decay factor along with a uncertainty factor. This was the Glicko rating system.

However, we can add a decay factor in Elo itself which is what many games like League of Legends do. In YGO Omega, a player that is inactive for 15 or more days and has a Elo of Platinum (1850+) or higher, will have their Elo decay by 50 points each week thereafter. So the top player can’t just park their car and not play. There is a penalty for inactivity.

Matchmaking

The minimum wait time after joining the queue is 2 minutes. In order to ensure optimal matching, the game has to wait until there are more players in the queue. Then, you are matched to a player with the closest Elo rating to yours. The longer the wait time, the better the matching but it also means longer waiting. If a player from Silver bracket is waiting forever because no one in the queue is from Silver, then they could be waiting forever. Hence, after 2 minutes, a Silver player can match with a Bronze player and if that Silver player loses, they may lose a lot of points. Unfortunately, there is no perfect solution. There will always be a trade-off.

Resetting

Rankings are reset every new banlist. The question is should everyone reset to the start of the race or should those that are already ahead stay ahead? Currently, the reset will reset everyone to 1000 Elo. Another possibility is to subtract 400 Elo from all players above 1400, otherwise reset to 1000.

1 Like