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.
Before we get into the nitty gritty, it’s important to understand how other games in the past and present implemented rating systems.
One of the most popular simulators known for an accurate rating system was Dueling Network. It used a modified version of Elo. Each player would start with 100 / 0 where 100 represents the rating and 0 represents experience. They also factored in how much LP difference and card difference (hand+field) were extra compared to the opponent at the end of the duel. We know this from the faq published from Dueling Network forums shown below.
The successor to Dueling Network, Dueling Book, migrated most things but it does not use pure Elo still. The ranking algorithm used by Dueling Book awards base points calculated from the difference between each player’s rating and bonus points based on things earned during the duel. It is unknown how those points are calculated, but the players start again from 100 / 0 and the maximum rating is 2000. The matchmaking also is essentially the same. Even very high rated players >1800 still get matched with <1000 on Dueling Book, but the amount of points gained or lost is very small, so it is less sensitive to changes. That said, due to these “bonus points”, a high-rated (>1800) player can rank up relatively fast even by defeating multiple low-rated (<1000) players by meeting the conditions of those “bonus points” during a duel. This is easy to do if their opponents are weaker. This is known as boosting, a form of cheating where a player creates a second account to duel themselves and gain free wins. Elo already takes care of this because you would gain smaller and smaller incremental points for each win against a weaker player. However, because of the added “bonus points”, boosting is possible.
These “bonus points” add an element of bias. It’s equivalent to stating that a Chess player should get bonus points for each extra piece on the board at the end of the game. However, we know from Chess, that strategy is not necessarily dependent on which player has the most pieces. Rather, it’s possible for the player with less pieces to win by checkmate and that sacrificing pieces to win is also a strategy. In today’s metagame, one cannot judge who has the lead simply by counting the number of cards in the hand and field or even by looking at one’s LP. The game state is very complicated and the winner of a duel can turnaround at any time which is what makes Yugioh unpredictable and exciting. Hence, a ranking algorithm should not have any element of bias or subjectivity and only give points according to the difference between player’s ratings. In addition, it’s not good to start at the bottom (100 rating), but to start in the middle (1000 rating), as the algorithm will place a player better this way since it has no data for new players yet.
In MTG Arena and Duel Links, they count the number of steps. Each win is 2 steps in Bronze. A total of 6 steps allows you to advance to a new tier (Bronze->Silver). This means 3 consecutive wins in Bronze would mean you go to Silver. In Duel Links, it’s a total of 10 steps so 5 consecutive wins. The quality of those wins/losses don’t matter, only the quantity. This means all wins and losses are treated equal regardless of the strength of the opponent. This isn’t a rating system per se, but a level up or progression system. You can simplify this into a formula that just equals x*(Wins - Losses). These systems do not approximate a player’s rating but a player’s persistence (grinding) to get to the top. It’s inevitable that if a player regardless of skill, will eventually reach the top in these systems. It’s great for game companies since it causes more players to play and hence, they get more money in their pocket. In Elo, the strength of your opponent matters. A win against an opponent with Elo 1500 is different from a win against 1000 Elo.
Source: How Many Games Do You Need to Play to Hit Mythic in MTG Arena? - ChannelFireball - Magic: The Gathering Strategy, Singles, Cards, Decks
The table below is the MMR step system used in MTG Arena.
The difference between Elo (used by DN) and MMR (used by MTG Arena & Duel Links), is that in Elo, the opponent’s strength matters. That is, in MMR, all wins and losses are treated equal. It is not a ranking system but a progression system like leveling up in an RPG. This motivates players to play more which is great for gaming companies. However, the purpose of a true rating system is to quantify a player’s skill. To do this, wins and losses cannot be treated equally because a win against a stronger player is not the same as a win against a weaker player. Hence, there is unequal weighting. This weighting is the basis of Elo.
Master Duel has a similar system to Duel Links. The difference is that the rewards for winning are greater than the punishment for losing. This causes a progression system where players feel good since they will always progress. Additionally, once you reach the top of the ladder - Diamond 1 or etc. , you cannot de-rank even if you lose games. This is done because once players reach the top, there is no longer an incentive for those players to risk dueling since they can demote. This also causes less and less players to play as the season progresses once you reach the top. Due to this reason, Konami allowed the top players to not derank. This however opens a new door or exploit to bots. Once a player reaches the top, they can let a bot take the wheel and even if the bot is designed to lose every duel, losing at the highest rank, will still give rewards which can accumulate to a considerably overnight. This also means that players will get matched with bots which affects the matchmaking algorithm.
These bots are not easy to detect. One cannot code an algorithm to distinguish a bot vs human. Bots can be programmed to pass a turn based on a random number instead of a fixed number. They can be coded to switch decks. A manual report system is the only way but these report systems are already used to report human players so it can be used falsely. Anti-cheat software won’t work since these bots are not programs that modify the program. They are third party programs that auto move a mouse similar to how bots worked to farm items in Diablo II. The only way to fix bots is to change the ranking algorithm entirely. Normally, a bot designed to lose would be at the bottom so it should not get matched with the players at the top. Due to a progression system, this does not occur.
YGO Omega uses modified MMR. We did try Elo for a long time but we found that it discourages players to join the queue. The reason is that as you climb up, the risks outweigh the rewards because one gains fewer points from winning than losing. This ultimately means that a player can fall from a tier just by losing 1 duel even if they previously won several duels. Elo just doesn’t work in a game where probability is a factor. Since most players get matched with Bronze, losing to a Bronze due to a bad hand, isn’t good.
Hence, we do think that MMR is better but we want to be able to incorporate weighting. That is, winning against a stronger player should give more points than winning against a weaker player. So we made a custom table of points for MMR that is as follows:
From the table above, you can clearly see that we did not just give 2 points for each win and -2 points for each loss like MTG Arena or Duel Links. The points vary according the to the strength of the opponent but this variation is fixed unlike in Elo.
Example. A Bronze player beats a Gold player. The Bronze player gains 36 points and the Master player loses 32 points. Remember that we always need a penalty for losing. If there was no penalty, then “boosting” occurs where people give themselves free wins using an alternate account. It’s fairly easy to climb out of Bronze this way. It’s now both a progression system but also incorporates weighting.
The brackets are defined as follows:
| Bracket | MMR | DP earned |
| ------------- | :------------: | ------: |------: |
Progression does matter in a game. If a player progresses too slowly from tier to tier, they will be less motivated to play. In Omega, a player that starts at 1000 and wants to reach Silver (1150), needs 150 points. If we assume based on the ranking table above, that each win against a Bronze player is 32 points, then 150/32 =~ 5 games if the win rate is 100%. That means the expected number of games required for a Bronze player to reach Silver if they win every game is only 5 games. Is this progression too low or reasonable? The only way we can answer that question is to compare to other official card games.
This is a graph from MTG Arena. Here, we see that the best out of 3 line for players who have a 60% win rate is about 23 games. In the same chart on MTG Arena, even a player with an 80% win rate has a minimum of 15 games to advance from Bronze to Silver, but we have half that amount. We also showed above that a 100% win rate would also be 3 games in MTG arena. Hence, it should be clear based on data that the Progression on Omega is actually quite fast and reasonable. If we had increased the points anymore, it would have caused players not just to climb faster but also fall faster.
Each time a Player wins against another player, they can earn DP (Duel Points) based on the bracket that their opponent is from. Defeating Bronze or Iron players gives no DP. This is because players can purposely try to be at lower ranks to fight and accumulate DP.
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.
You will notice in the table above there are red and green cells. The red means that those brackets cannot match. For example, an Iron player cannot match with Platinum or vice versa. These matchmaking rules prevent people from very low brackets to get matched with higher ones. At the same time, you see that it is not completely symmetrical as there is more green in the higher ranks because we want to allow higher players to still get matched and not wait forever in the queue. It creates quality matchmaking, so that the opponent is closer to your skill. In addition, to match, the minimum queque size must be 4 people. That means no matter how long you wait in the queue, unless it has 4 people at least, it won’t match and it must also follow the matchmaking rules. You also cannot be rematched with the same opponent twice in a row. The longer the wait time, the better the matching but it also means longer waiting. There will always be a trade-off.
This also prevents “boosting” (dueling yourself for free wins). Some players create alternate accounts and try to join the queue at the same time with this alt account to give themselves free wins. This however doesn’t work when 4 people are needed as minimum in the queue. The server will match every 10 seconds.
For example, a Platinum player joins the queue and is waiting for 4 mins. Even though the queue size is above 4, the other players are Bronze, so this Platinum player cannot get matched yet. Then, suddenly a Gold player joins the queue. Within 10 seconds, the Platinum and Gold player should get matched.
Previously, we allowed all players to match with each other regardless of what brackets they were from. This created faster matchmaking but it’s not quality. It wouldn’t make sense for an Iron player to match with Gold. We also saw that the distribution of players is higher on the lower end than the higher, which is why several high rated players ended up getting matched with low rated players. This didn’t help either player since the Master players won’t gain enough points to advance from beating weak players and the weaker players would never have a chance to advance.
Lastly, we want to aim for a distribution that is close to what is called Gaussian or a Normal distribution. In reality, this never happens. The grades in a class are not going to be normally distributed no matter how hard the teacher tries. If the teacher makes the test too easy, too many people get an A and the distribution is skewed to the right. If it’s too hard, then it is skewed to the left.
The distribution between (Oct 2021 to Dec. 5th 2021) is shown here (filtered by minimum 20 ranked games):
This is the ranking distribution on League of Legends, an esport on February 2021. In fact, League of Legends has won esports game of the year award from 2019-2020 beating Overwatch and CS:Go. It’s very close to a Gaussian distribution, which is exactly what we want! Do note that each bracket here is subdivided into four smaller brackets so the true graph for comparison should be the summation of each individual subbracket.
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 MMR each season (every banlist). This ensures nobody is ahead or behind and everyone always starts at the same point. Your wins and losses are reset. We will save history for previous seasons.