Closer Look: Halo Infinite’s Ranked Experience
Ranked multiplayer has been a cornerstone of the online Halo experience since way back in 2004 when Halo 2 released. Over the years, the ranked experience in Halo has taken many shapes and forms, but the goals have always remained the same – provide all players with a fair, balanced, and fun competitive experience where you can test your skill and earn new ranks all on your way to becoming a better Halo player than you were the day before.
These goals are still as important as ever and we’ve taken data and learnings from years prior and brought them forward in Halo Infinite. Let’s get into the details!
Since we’ll be talking about internal systems in this blog, here’s a quick guide to some of the terms we’ll reference frequently:
- TrueSkill2: The underlying system that is used to understand as accurately and quickly as possible how skilled each player is relative to the population of players.
- Skill / MMR: Skill refers to how "good" a player is, and MMR (MatchMaking Rating) is the numerical representation of skill for a specific playlist as measured by the TrueSkill2 system. We use this skill rating in matchmaking to ensure even, fair matches.
- Matchmaking: The process by which players are brought together to compete with and against each other based on various data points including skill, data center latency, and more.
- TrueMatch: The underlying system that is used to get the best possible matches by adjusting matchmaking parameters in response to shifting populations.
- CSR: Short for “Competitive Skill Rank”, this is the ranking that you see as a player. While it is closely tied to MMR, CSR is not directly used in the matchmaking process. It is a reflection of your performances in a ranked playlist throughout the season.
In Halo Infinite there are six CSR ranks, each of which has six sub-ranks to help you see how you’re progressing up the ladder.
Here’s a list of Halo Infinite’s CSR ranks displayed as “Rank (Sub-ranks)”:
- BRONZE (1-6)
- SILVER (1-6)
- GOLD (1-6)
- PLATINUM (1-6)
- DIAMOND (1-6)
For each sub-rank within a rank, 1 represents the base sub-rank and 6 represents the highest sub-rank. Currently, Onyx is the highest rank offered in Halo Infinite. You’ll notice that there are no sub-ranks within Onyx – instead, Onyx players are shown a numeric CSR rating, starting at 1500. There is no hard cap on this rank.
At the start of each season or after any rank reset, players will begin their journey unranked and must play 10 qualification matches before earning an initial CSR. For players who usually find themselves at the top of the ladder, the highest starting CSR you can earn after the qualification matches is typically within the Diamond tier. At initial release, the max starting CSR was Diamond 1, and after our mid-season reset it was Diamond 5.
You don't have a CSR displayed during qualification, but TrueSkill2 is still calculating and updating your skill rating based on your performance during these matches. This lets us matchmake you with/against players close to your skill level, which in turn gives us significantly better information about your skill than if you only played all 10 matches against average-skilled players. Rest assured, if you see Diamond/Onyx players during your qualification matches you're not being penalized - TrueSkill2 thinks you have a similar skill to them.
As players complete their placement matches and progress through each CSR ranks in Halo Infinite, they will unlock new rewards. In Season 1, each player will get their Rank icon as an emblem that they can use on their weapons and players who find their way to Onyx will receive an additional item – the Recon weapon charm.
NUTS AND BOLTS
Now that we’ve covered the higher-level outline of the ranking system, let’s go even deeper.
TrueSkill2: The goal of the system here is to understand - accurately and quickly - how skilled each player is relative to the population of players. TrueSkill2 uses a variety of data about each player’s performance in multiplayer matches (including wins, losses, kills, deaths, etc.) to build this understanding model and determine each player’s skill. It considers each player’s performance in each game to get the best possible understanding of their skill, their teammates’ skills, and their opponents’ skills. The system then takes the data of each player’s performance, relates it to the skill of all the other players in that game, and makes fine-tuned adjustments to their skill ratings. This skill rating is known as MMR, and is used primarily during matchmaking.
Skill ratings were not carried over from previous Halo titles to Infinite, but Trueskill2 can very quickly establish a new player’s skill, because the pre-built model allows TrueSkill2 to easily see what skill is implied by the player’s performance in their first few games.
Additionally, when a group of players joins a Fireteam together, the skill system adjusts their skills upwards slightly, to account for the advantage of being in a coordinated group. This adjustment is learned by the system from historical data, like all aspects of skill, and results in better matching based on party sizes.
CSR: As mentioned above, there are multiple ranks and sub-ranks in the CSR system for Halo Infinite. Behind the scenes however, it's stored as a numerical rating which starts at 0 (Bronze 1), and becomes visible once players reach 1500 (Onyx).
A very reasonable question that players have is “Why does CSR exist as a separate concept from MMR? Why not just show me my MMR?” The reason for this separation is that due to the nature of the TrueSkill2 system, changes to a player’s MMR don’t always correlate directly with short-term in-game outcomes. For example, you might play really well in a losing effort, in which case your skill rating (MMR) could go up, but it wouldn’t make sense for your rank (CSR) to go up on a loss.
Instead, we would like players to feel a clear progression, with CSR gains and losses that make sense in the context of the outcome of the game while taking the game’s difficulty and the player’s individual performance into account.
Here are the key characteristics of CSR progression:
- CSR will never go down on a win, or up on a loss.
- In the long run, your CSR will always trend towards your MMR. We do this so that your visible ranking is representative of your actual skill. This is particularly noticeable when your CSR is far from your MMR: in those cases, you’re more likely to see the maximum per-game CSR update, which is +15 on a win, -15 on a loss.
- CSR goes up more for wins against players who are higher-skilled than you and goes up less for wins against players who are less skilled than you. The inverse is also true for losses. We do this to avoid CSR inflation.
- CSR will go up more on a win when you perform well in-game, while still adhering to the +15 limit. The inverse is also true on a loss. This means your in-game contributions matter and are reflected in your CSR progression.
Last, but not least, a player’s skill (and therefore MMR) can absolutely change over time, for example as they get better at the game. When this happens, their CSR will follow their MMR.
While CSR will always trend towards MMR, there will be discrepancies - especially at the start of a new season, when players who qualify are given a slightly lower CSR than we expect they’ll achieve several games later. So, to keep ranked matches as fair as possible, we matchmake based on MMR rather than CSR.
In this context a "fair match" is one where each team has a 50/50 chance at winning because the teams are evenly balanced. By consistently putting players into these fair matches, we expect to see an average 50% win rate. Note that that's a side effect we expect to see and not a goal - we don't give you unfair matches just to enforce a 50% win rate.
In order for CSR and MMR to converge when players have a roughly 50% win rate, it means that CSR gain and loss will not always be symmetrical on a per-player basis. An under-ranked player (CSR below MMR) will typically gain more for a win than they do for a loss, while an over-ranked player (CSR above MMR) will see the opposite.
The other big component of the ranked multiplayer experience is of course matchmaking itself. As mentioned in the terminology section, the special sauce here is Microsoft Research’s TrueMatch. TrueMatch is an AI-based system that learns about the matchmaking population and dynamically adjusts the parameters used during matchmaking. TrueMatch works together with Xbox Live’s SmartMatch and 343i services with the aim of giving you the best match possible in terms of skill and latency.
TrueMatch will always use the skill in the playlist that you are matching in. Skill is a critical part here as the more evenly balanced the games are, the more fun they are for players because it means their personal performance can affect the outcome. If your opponents’ skill is much higher than yours, then you may end up losing severely and the match won’t be fun. Of course, the opposite is also true where if you are much higher skilled than your opponents, then there’s no challenge and the game is generally not as much fun either.
Getting good skill matches with low datacenter pings while keeping matchmaking times reasonably low is difficult, especially as the size and composition of the population varies across playlists and throughout the day or week. So, TrueMatch constantly analyzes the player population on all the relevant metrics to maintain a model of the current population for each playlist. It then uses those models to produce the optimal matchmaking via SmartMatch based on the current size and composition of the population in each playlist. In short, each playlists matchmaking parameters are updating on their own automatically based on the number of available players, their skill, their connection, expected wait times, and more.
Importantly, TrueMatch also offers us the ability to include different matchmaking factors for each playlist, using configurable weights. Some of these weightable factors, presented in alphabetical order, are:
- Average team skill gap: Makes the teams fair, so that either team can potentially win each game.
- Individual player skill gaps: Determines how close all players' skill should be in the match. It helps avoid lower-skilled and higher-skilled players in the same game, which makes a better experience, especially for the lower-skilled players.
- Latency to data center: Ensure that all players have good connections to a common datacenter
- Wait time: Don’t make the players wait too long for their matches.
For example, in Ranked Arena we set the priorities to emphasize small individual player skill gaps across teams and low latency, while allowing for matchmaking to take a bit longer. On the other hand, in the Big Team Battle playlist we emphasize faster matchmaking, recognizing that finding 24 similarly skilled people tends to take more time, and gaps in skill are less noticeable when there are many players in the game.
Generally, we believe that the system is quite good at achieving the goals that we set for it. However, players who lie on the edges of our distributions (such as high-skilled players in low population areas) are more likely to see unexpected outcomes.
As with all aspects of Halo Infinite, we will closely monitor how these systems perform in the wild and we’ll make adjustments and improvements as needed. We, just like you, want everyone to have a quality, fair, and fun experience in matchmaking.
Lastly, before wrapping up, we wanted to answer a few common questions directly with a FAQ. We hope this helps address any remaining questions you may have, and we’ll see you in the Arena.
It feels like there are too many Diamond/Onyx players. Is that true?
Earlier this year we confirmed that ranks were on average somewhat higher than expected, as discussed in our previous blog post (link here). But our recent updates to ranked matchmaking, and the accompanying rank reset on Feb 22, should have helped to adjust the distribution.
It’s too early to share full details on the new distribution, as many players are still working on their qualifying matches. However, we can share that for the players in the Platinum/Diamond tiers, the new changes have resulted in CSRs 150-300 points (3-6 sub-ranks) below what they were pre-reset, depending on playlist.
We will be keeping a close eye on things over next few weeks as players settle in with their new ranks.
Why does it feel like there are outliers (overperformers or underperformers) in some of my ranked matches?
You aren’t imagining things. Right now, there can be outliers in ranked matches, and improving this aspect of matchmaking is our highest priority.
It’s worth noting that outliers can often come at all skills. For instance, some players may see a pro who hasn’t finished their placements matches dominate while still “Unranked” and consider them an outlier in the match up. On the other side of the spectrum, you could get a player who isn’t as good as you because they partied up with a friend who plays at a higher level, meaning their combined skills average out at about your skill.
Those aren’t the only two reasons why this can happen though, and we recognize that these matches aren’t always great when they occur even if they may look good on paper. As a result, we’re investigating to see which values we can tune in order to create more fair and competitive matches in ranked.
Why can an “Unranked” player match up in my lobby?
Even while Unranked in a playlist, the system will start to get a good idea of your skill and place you in more even matches – meaning it will only get more accurate and thus more competitive as you continue your journey in ranked. However, as the system starts to approximate your skill, it’s helpful to place you against players who have already placed in ranked. For example, if you’re Unranked and you do extremely well in a lobby with Platinum players, the system will know that you’re better than Platinum and then puts you in a higher-ranked lobby (Diamond players) to see how you perform there.
As this skill assessment occurs, your teammates will see you as “Unranked” even though you deserve to be in that lobby too. It’s important to remember, “Unranked” does not mean someone is bad or brand-new to the game. It just means that even though the system has a good approximation of their skill, it wants a few extra matches just to be sure.
Does my performance in social impact my MMR in Ranked?
In some instances we will leverage your performance in social to build a baseline/starting point when starting your ranked journey. We use data from all over the game, both at a playlist level and game mode level, to approximate your skill rating in other playlists if you’re playing them for the first time. The reasoning for this is to get you closer to an accurate skill rating faster and thus reduce the number of unfair matches we make for you and the people in your games.
A real-world comparison would be if you wanted to get a quick estimate of someone’s ability as a runner before a 200m race. When trying to approximate their skill as a runner, their previous 200m times would give you the most accurate information but if those aren't available then their times for other distances (ex. 100m dash or a mile) can still be helpful. Using that information, even though it isn’t a 1:1 comparison, will still help you better determine their capabilities as a runner right off the bat. Using this information in this manner, though it is an estimation, helps form a rough baseline that is beneficial in both situations.
Note: To continue the running analogy a bit longer, times for some distances (ex. 100m) would be more informative than others (ex. a marathon), but they're both better than nothing. And, figuring out which distances correlate strongly, is fairly intuitive. For cross-playlist skill seeding we rely on historical data to figure out which playlists have strong correlation, and how strong that correlation is at various skill levels.
While doing this has its benefits, we know it isn’t flawless. We’ve seen the threads out there outlining a few areas that could be improved, and we’re continuing to fine-tune this part of our matchmaking process.
How come there are times that I barely rank up for a win, but go down a lot for a loss?
If you’re not going up much after a win it could be because you didn’t perform well in that match, your individual skill was higher than your opponents, or your CSR is currently over-ranked and the system is correcting itself. The same reasons come into play when you go down a lot for a loss. If the enemy team was lower-skilled than you and you lost, you didn’t perform well and lost, or you lost while your CSR is over-ranked. When they happen, these smaller gains and noticeable losses are meant to keep your CSR in-check in the long-run.
Will there ever be a reconnect feature added to help in instance when I disconnect or have a game crash?
We’ve also seen this request pop up quite a bit too. We like the idea, but we’ll need to do additional investigations before we can make any commitments.
Onyx is the highest rank right now. Will there ever be a Champion rank again?
We hear this feedback loud and clear, and we’ll be adding it in a future season down the road. Similar to the reconnect feature above, we still need to scope out the work for this before we can commit to any timing.