Now that we have the basics down from the previous article, let’s look at how the MMR and rankings in StarCraft II.
One of the design goals of StarCraft II‘s multiplayer is to match players with opponents such that they win 50% of their games on average. The system does this by matching players very close in MMR (matchmaking rating); the closer the MMRs, the better. Players identical in skill level should often have close and exciting games, a recipe for fun! The details of the search algorithm are not known, but it seems that it begins by searching for players in a a very small range around your MMR and slowly expands it (perhaps the “expanding search?”) (and probably in a logarithmic range as opposed to linear) as time searching progresses. Once players are found, they are put into a game.
MMR itself is never displayed and as such the details of its calculation are very hard to gleam. Assuming its similar to Elo, the system will increase a player’s MMR by more if they defeat a relatively more skilled opponent and decrease it by less if they lose to a more skilled opponent. The Elo-style math is a bit messy, but essentially the algorithm calculates a percentage chance that each player will win based on the players’ MMRs. The chance scales logarithmically with their differences; a 400 point rating difference might means A has a ten times greater chance of winning than B, eg, about a 90% chance to win. If a player wins, the system increases their MMR by the chance that they would lose times some system-wide constant, K, and does the opposite for their opponent. For example, if K is set to 12 and player A has a 90% chance of winning against B, and A does indeed win, his rating would increase by only .1*12=1.2, while B’s rating would decrease by the same. If B won, his rating would increase by .9*12=10.8 and A‘s would decrease by the same amount. The system does not punish B very much for having to play A, but rewards him significantly if he does well.
Ideally, Battle.net would never match players this far apart in rankings. Additionally, the values for K and the exact logarithmic scaling numbers are unknown (though essentially unimportant to the behavior of the system). The system also almost certainly takes into account volatility in calculating MMR changes. A new player could swing hundreds of points in MMR when first playing. If you win all five of your placement matches, it will probably rate you very high and match you with very high rated players, but a couple losses will plummet you to a new “test” range until you are winning 50% of your games and your rating doesn’t change much.
This is all well and good, but we never see any of the numbers used for matchmaking, only for ranking. Rating refers strictly to MMR, but ranking determines your place within a division and has nothing to do with MMR. Bizarrely, the system matches your opponents in a different way than it ranks you. Let’s take a crack at rankings and points.
Within each division, players are ranked by how many points they have. Points are earned by winning matches. The number of points you earn from a win or lose on a loss is calculated by the following:
p = 12 + x + b
p is your calculated change in points. x is some integer from -12 to 12. This number is picked based on players comparative MMR. Finally, b is some amount of points from your bonus pool.
You can tell what x is going to be from the loading screen for a match, where the game tells you who is favored to win. The system calculates your opponents MMR if they were to beat you (their “projected rating”), then compares to your current rating. If it is nearly the same as your rating, the game is displayed as “even”, and x=0. If their rating is a little better , they are “slightly favored”, and x is 1, 2, or 3. If there is a big difference, then they are favored, and x is between 4 and 12, inclusive. The same mechanic works if you are favored, except that the numbers are negative. For example, if you are favored in a match and the system calculates the difference between your current rating and your opponents projected rating corresponds to x=8, then you would gain 4 points for a win and lose 20 points on a loss (excluding bonus pool).
The weird part about using the player’s rating and the player’s opponents projected rating to display who is favored in a match means that players can see different data on who is favored. If your rating has a high volatility, like when you first start playing on the ladder, your rating will drop more on losses, meaning that you will see a lot of opponents “slightly favored” or “favored” and have the opportunity to gain more points. This, combined with the bonus pool, makes the points system much more than a zero-sum game.
The bonus pool is a set of points that accumulates over time and on different events. It seems to generate at a constant rate over time, and new players seem to get the total number that would have accumulated for them had they started at the start of the season. If you win a game, then some number b of points is drained from your bonus pool and added to your point total. This number is up to 12+x if you have enough points available. For example, if your bonus pool has 4 points and you win an even game (x=0), you would gain 12+4=16 points for your win.
The league you are placed in uses your MMR, but your ranking does not. Does ranking actually “mean” anything? It seems more like smoke and mirrors; your ranking does not influence your match-ups, nor does it even necessarily correlate with your MMR. A top ranked platinum player by points could theoretically be on the verge of being demote gold league. Still, by and large, the leagues and rankings do give a sense of progression and a way to measure your skill and dedication against your peers without being labelled with a skill number. It’s a success for bringing competitive gaming to the masses, but hardcore players might just want to see their MMR.