Let's talk about Starcraft 2's ranking system, specifically the bonus pool system, the focus on ranked matches, and the division system. Before we get into all that, I'll give some background info from three years ago when I talked with Rob Pardo (VP of Game Design at Blizzard) about me possibly taking on the role of ranking-and-tournament systems designer at Blizzard. I ended up having to back out of that race because the Street Fighter HD Remix project suddenly became a reality, and I couldn't pass that up.
The reason I want to tell you about the ranking stuff from back then is to illustrate two points of view--mine and Pardo's--and to explain how it took me three years to understand that his point of view is probably best after all.
TrueSkill vs. Monkeying With Rankings
He asked me to come up with a ranking system for a game, we'll just call it Game X. My first response was that this is easy because it's already a solved problem: Microsoft solved it with what they call TrueSkill. TrueSkill is a refinement of the well-known ELO system used in Chess. One of TrueSkill's main features is that it can apply to games with more than 2 players, while ELO can't. Also, TrueSkill uses a bell curve rather than a single point when referring to a player's skill level. As the system gets more information about the player, it becomes more "certain" that the skill ranking is accurate, and that player's personal bell curve shrinks.
More important than any of those details though, is Microsoft's philosophy about rankings. The premise of their whole system is that players will have the most fun if the ranking system can give matches as close to 50-50 as possible. Yeah it's fun to have to have a few matches that are easy and some that are hard (and you will because of the inevitable variance), but you really do want the ranking system to try to give you close matches. Consider a matchmaking system that simply gave you random opponents, and how from the perspective of a bad player, he just gets stomped repeatedly then probably quits. He is better served by getting evenly matched with other bad players. Over time, he might become a good player rather than quitting.
Microsoft makes another good point here that ONLY winning and losing can be allowed to affect these stats. You can't adjust the matchmaking stat by "experience points" or even by any skill-based stats such as headshots, number of kills, time to finish a lap in racing, etc. All those stats can be gamed, and you will end up trying to get more headshots or something instead of winning. Any formula that equates number of headshots (or any other stat besides wins/losses) with how likely you are to win or lose introduces a layer of imperfect simulation. If we want to know how likely you are to beat someone, we should only consider your wins and losses, and not any in-game stats.
Short version: Microsoft's philosophy is correct (or is it...?), our ranking system should only consider wins and losses and should maximize close matches using TrueSkill, or a close implementation.
But Pardo was not quite on board. Such a ranking system is harsh and while hardcores are ok with it, regular people just get crushed and discouraged. They don't get to see any real progress, he said.
Yes that's true, I responded. And yet competitive games flourish and top the sales charts. We shouldn't ruin our ranking system with some experience point system to help people's egos because that will necessarily make the matchmaking system worse. No matter what anyone claims to want, they will be happier with close matches as those are memorable and intense, and that trumps anything that deviates from the TrueSkill philosophy, I said.
Pardo said that he really wanted what he wanted though, and if he's asking for a system that is more friendly to non-hardcores, then I should be able to come up with one. "If someone put a gun to your head and said to give some sort of incentive to keep people going in a ranking system, what would you do?" Yes, fair enough. If he's asking a question, I should be able to provide an answer. But I still thought the question was more like, "should we ruin the perfect matchmaking a little, a medium amount, or a lot?" while I was thinking, "let's not ruin it at all!"
Later, I presented a system that used a TrueSkill-like number for matchmaking behind the scenes, and that did not deviate by allowing any nonsense stats to affect it. But the UI would prominently display 1 main experience level stat (not the skill-based stat) and 2 other stats that were destined to go up over time as well. (Think "headshots", though it wasn't exactly that. Stats that naturally increase over time.) These secondary stats were dressed up a bit in the form of levels, too, so you basically had three meters going up. The fourth stat, the REAL one, was also displayed (and used for matchmaking!) but it was displayed less prominently. Players had various progress bars to level up, but still perfect matchmaking.
Pardo thought I at least gave it a try, but that I had not tried hard enough. He said "we don't need hyper-accurate matchmaking out of a ranking system. That's not its primary function." This is around the time when Street Fighter HD Remix started, so I did not get the chance to submit a revised system.
What did he mean by that last statement though? Isn't "hyper-accurate matchmaking" exactly the thing we do want from a matchmaking system? Years later I’m willing to say, “maybe not.” It could be a good trade-off to have merely “very good” matchmaking if in exchange for losing “hyper-accuracy” we also gain some fun or keep people playing when they otherwise would have given up. Microsoft’s premise was that hyper-accuracy gives you the most fun possible, but perhaps that premise is not strictly true. Maybe there is a way to add fun without losing much at all in the way of perfect matchmaking. Starcraft 2’s bonus point pool system could be that way.
Starcraft 2’s Bonus Point Pools
The bonus point system is similar to the “rest” system from World of Wacraft. Players accumulate a pool of bonus points over time, capped at some maximum. In World of Warcraft, the function is to give you double the experience points each time you kill a monster, until your bonus points run out. In Starcraft 2 the function is to give you double the *ranking points* each time you get a win, until your bonus points run out. For example, if you were facing a stronger opponent such that winning gives you 10 points and losing would subtract 5 points, then winning would actually give you 20 points. 10 points would drain out of your bonus pool and go into your ranking points (to match the 10 points you’d normally get for winning here). If you lose, you would lose 5 points as usual with no further adjustment.
What is the effect of this system? Some people claim it rewards those who play a lot, but this is looking at it the wrong way. Those people would claim that play-a-lot guy gets more ranking points overall because he uses up all his bonus points all the time, while a play-a-little guy would not play enough to use them up, so he’d get fewer points overall for his wins. True, but missing the point.
The actual play-a-lot guy will play way more than his bonus point pool can hold. Most of his matches will be played without any bonus because the maximum size of the bonus pool must be fairly low for this system to even make sense. Meanwhile play-a-little guy will play most or all of his matches with boosts from these bonus points. So if anything, play-a-little guy benefits. (Though the play-hardly-at-all guy is disadvantaged because he doesn’t use up all those bonus points.) But even THAT isn’t the point.
I think there are two real points to this system. First, it gives you an incentive to play when you otherwise wouldn’t. If you haven’t played in a few days or a week or whatever, you will think “hmm, I could play right now and get the benefit of those bonus points!” And if you wait until the points reach their maximum (in World of Warcraft that’s two weeks, but unknown as of this writing in Starcraft 2), then you’ll have another reason to play: that you would be “wasting” bonus points by not playing. If you just played enough to use up some of the bonus points, you’d be able to keep accumulating more for later. Yes it’s a psychological trick, but at least it gets more people active, which basically helps everyone involved (more opponents).
The second real point hits at something Pardo was originally asking me for: a way to have at least some feeling of progress in the harsh world where actual progress is damn hard. Imagine that Alice, Bob, and Charlie all have 1100 ranking points and that they are all of equal skill, so any matches between them will have a 50-50 chance of going either way. Alice doesn’t play for a while (but her skills don’t decline). Bob and Charlie play each other, and also play even more players of the same ranking/skill. After a while, Alice will still be at 1100 (she didn’t even play). Bob and Charlie will have a HIGHER number of ranking points though, due to the bonus pool. Even if they have even records of 30 wins, 30 losses against each other, they are gaining more points than they are losing because bonus points are added for wins, but there’s no extra penalty for losing. They have the feeling of progress here, even if it’s illusory.
Does this screw up the actual rankings? Well, Bob and Charlie might find themselves at 1300 ranking points (I’m just making these numbers up), so you could say their ranking is inflated. But...not really, because all the other people of their same skill out there have inflated rankings by the same amount. Really, it just stretched the scale out. It’s true that Alice will have bad matchmaking when she decides to play again though. Her rating is 1100, but because of the point inflation that’s gone on, she really “deserves” a higher rating now. That will correct itself pretty quickly though, it just means she’ll have a few matches that are easier than expected when she returns. This is the imperfection in matchmaking that we have to accept if we want the good features of: 1) more people tend to play more, and 2) ego boosts even when you go even against evenly matched opponents.
Also consider that this ego boost is not changing your ranking against a list of specific competitors. If you’re the 1000th best player, you’ll still be that, it’s just that everyone’s points are creeping higher over time. (There’s a reset every season, so it won’t go infinite.) Since your REAL rank as 1000th best player is intact without too much monkeying, it seems ok that the underlying stat increase, as a psychological motivator. We still know who is actually better, so who really cares if everyone’s underlying stat is one that goes up over time or not? Really only your ego cares, so we might as well throw you a bone.
To put it another way, I was thinking about how I have not played Street Fighter HD Remix online in the last two weeks. If I had some bonus pool points waiting for me there, would I have? Probably yes, as dumb as that is. And yet if that made me and thousands of other people play a bit more, it helps the whole scene, so why not.
Focus on Ranked Matches
Microsoft has a clear philosophy on this one too: sometimes people want to be ranked because they are seeking out competition and a way to measure themselves against others, but sometimes people want to avoid all that and play without any fear of shame or losing. Xbox games must have both a ranked mode and an unranked mode (badly named “player matches”). In ranked mode, developers can show any kind of stats to the player they want, while in unranked matches, they are supposed to hide these stats as much as possible. This makes total sense to me, as even I don’t want some record of how bad I am at some game I’m just messing around with. And sometimes I don’t want a win/loss record shoved in my face either.
There’s a tension though, and it goes back to matchmaking. We really want you to play ranked matches a lot so that we can accurately determine your skill level and give you close matches. In Kongai, a card game I designed, we did what some other games do by just renaming the modes. The modes used to be called Ranked and Unranked, but now the ranked match is just called Play Game. This shifts the perception of which one is the one you’re supposed to play. While Ranked sounds ominous and serious, Play Game sounds like it’s for everyone.
Starcraft 2 takes a similar approach here. The default mode is ranked, and it’s not named some scary thing, it’s just presented as the normal way to play the game. The screen where you get into a game devotes only a small space in the corner to creating / joining a Custom Game, which is the equivalent of unranked.
The notion that you’re always playing ranked could turn people off, but it does help matchmaking, like I said. Overall I’m weakly in favor of it.
Next, Starcraft 2 does a kind of weird thing though. Within each of the 5 zones, there are a zillion players, so they break up these players into groups of 100. You are giving a ranking relative to those 100 people. So you might be “#25 in the silver league” for example, which is a polite way of saying “#52 billion overall.” I get the point here, it’s another psychological trick to keep you going. Being ranked out of 100 doesn’t sound so bad, and it’s a small enough set that your ranking won’t change wildly for no reason. If you saw your real overall rank (#52 billion), it would change all the time from everyone else moving around you, even if you did nothing.
I think, not sure on this, that Blizzard is also trying to give you a set of people small enough to be in your monkeysphere (more than 150 people is too much for your brain to understand). What’s a bit confusing about this is that based on the beta, you don’t seem to play against these 100 people any more than anyone else. I’m not sure if that was the intent, or an artifact of the beta, or what. Maybe those people happen to not be online when you are looking for a match. For whatever reason, it seemed rare to actually encounter them in the beta, which means you’re really being ranked against 100 random people who you have no idea about. It does sound a bit better if the matchmaking mostly matched you with them, so you got to know them and felt more of a personal connection with your subcommunity, which consists of people at least fairly closely ranked with you. We’ll have to see how this works out in the real game.
One thing I will say about the divisions though, is that the top division SHOULD be designed differently. While average joe is probably very happy with this division system, I think the very top players will not be. Anyone way, way up there wants to know the real, cold, hard truth. They want to know who is #1 and who is #10, etc. They are dying to know this, even. So for the very top bracket only, I suggest that all players are in just one division. I’m not sure if this would be best for the top 1,000 players or 10,000 or 5%, or what the magic number is, but I’m saying people at that end actually want the opposite of what the division system is offering. They really do want to know exactly where they stand relative to each other.
ConclusionOf all these things, it’s really the bonus point pool system I wanted to mention the most. As soon as I realized that system would have made me play Street Fighter HD Remix in the last couple weeks instead of not playing, I realized that its effect of enticing people to play every so often is more important than any loss of “hyper-accurate matchmaking.” So I think Pardo was right in what he was asking for all those years ago.
Followup: Some people have said that the matchmaking stat is not affected by the bonus pool points, and that the bonus pool points are only used for display purposes, like where you appear in your 100 man division. This is not the impression I got from Blizzard's statements, but that claim could be correct. It's also possible the answer to that changed at some point, as who knows what adjustments went on during the beta. If the claim is true, the system matches you by a different criteria than it actually rates you. I don't really know what to think of that.
More information here that the bonus pool points do not affect the "real" underlying stat used for matchmaking, only the ("fake"?) displayed ranking in your division.