Making Magical Matches: The Myriad of Minutia, Maps, Math, and More that Make Up Masterful Matchmaking

Learn what makes our servers tick, and how we decide how to put brawlers together in matches

It’s time we take a deep dive into everyone’s favorite topic: Matchmaking!

I’m Josh, and I’ll be your guide with support from Joe and Chuck from our Networking team and Jeremy, our Game Director. This is gonna be a long one, but if you’ve had issues with matchmaking in the past, or you’re curious for a look under the hood, it’s worth strapping in for all the juicy details. We’ll start out with an overview of how matchmaking works at a high level, talk about a bunch of the changes and updates we’ve made to our matchmaking since launch, and then talk about where we are today, including a new feature for folks that continue to have latency issues even after our improvements.

Okay, time for Matchmaking 101. How does it work?

At its core, matchmaking is about getting people into matches that are fun to play in a short amount of time. Sounds easy, right? In theory it is, but it takes a lot more to actually make that a reality.

The main three factors that go into making a match are:

  • Latency - We want everyone in the match to have a low enough ping to the game server so they’re not lagging, rubberbanding, or having rollback issues.
  • Skill - We want all teams to be roughly evenly matched, so nobody’s getting completely stomped or struggling to find challenging opponents.
  • Queue Time - We want everyone to be able to get into these matches in as short a time as possible.

There are a few other factors that come into play also, which I’ll touch on in a minute, but those are the main three. The biggest issue is that those three are at direct odds with each other.

Ever heard the saying about how things can be good, fast, or cheap, but not all three at once? Matchmaking is similar. If we wanted to prioritize latency, so you always got matches at your closest server, you’d have to play with people that might be much better or worse than you, and/or wait for a really long time to get a match. That’s not ideal. Want the fastest queue times? Sure, we could put you in matches in a few seconds every time, but you’d be playing matches with people all around the world at super-high ping times, at wildly different skill levels. That’s not fun either.

So what’s the solution? We try to find the best middle ground between those three. Here’s what that looks like in practice:

When you first log in, your client pings every available server region. If you go to Menu > More > Data Centers, you can see what those pings are to all of our data centers. These numbers are estimates of servers in the region, because each region has multiple servers that you can play on, so this number may not always match your exact ping in-game, but it should be close.

Note: In the 1.4 game update, these pings are going to be even more accurate to real-world gameplay for some regions.

When you queue for a match, we start looking for a match that falls under specific thresholds. When that matchmaking first starts (0 seconds waiting in the queue), we’ve got very strict thresholds where we want to find you a match with very low ping, and with players very close to you in skill.

After you’ve waited for a little while, we relax the thresholds a bit, and allow for matches with slightly higher pings, and teammates/opponents that might be a little more or a little less skilled at the game than you are. As you wait in the queue, those acceptable thresholds increase.  At launch, that looked like this in Street Play:

The numbers at the bottom are the amount of seconds you’ve spent in the queue, and the two lines on the graph show the maximum ping and skill gap we allow (based on your MMR) for a match. At launch, we were searching for matches with the maximum allowable ping and skill gap after only 60 seconds. We have tweaked these significantly since then (more on that later), but this gives you a general idea on how we form a match.

Now, it’s important to note that skill, latency, and queue time aren’t the only factors we take into account. Here are some of the other considerations:

  • If you’re queueing for Street Play in a group, we use the average MMR of your group as your skill rating.
  • If you’re queuing for League Play in a group, we use the rank of the highest-ranked player in your group and match off of that.
  • For groups in all matches, latency is still important to optimize, so we’ll try to find a server in the middle of your group. If someone in New York is grouped with someone in Australia, this may not be ideal, but we’ll still try, and you’ll probably end up in a server on west coast US.
  • We do have a preference for putting groups against groups and solos against solos, but it’s not as strong a factor as the other elements listed above.
  • We do try to backfill if people disconnect or quit mid-game. We also try to ensure you’re not the one backfilling too frequently. We try to put you in fresh matches for multiple games before letting you join in progress again. The number of “fresh” matches is higher in League Play than Street Play, although if you’ve been waiting in the queue for long enough, we’ll ignore this rule to try to get you in faster.
  • We try to put new players against new players. If you’re in your first handful of matches, we’ll try to match you against other players also playing their first handful of matches. This too is a rule that will be ignored if you’re sitting in the queue for long enough.

Phew. So that’s the long and short of how our matchmaking system works. We have made a handful of updates to this since launch, some of which we’ve announced, others we haven’t. Here’s a list of what we’ve tweaked and improved:

  • We’ve drastically updated the data that goes into those “graphs” as shared above.
  • We try harder (allow for longer queue times) to match you with people of similar skill in lower-ping games.
  • League Play was adjusted more dramatically than Street Play here.
  • At launch, we expanded acceptable ping faster than acceptable skill differential. Those numbers are now reversed, and lengthened by 10x. In League Play, you won’t hit the maximum ping threshold until 18 minutes.
  • We lowered the maximum allowable ping in League Play. We used to allow up to 175 ping. That’s been reduced to 120 (after 18 minutes in the queue).
  • We lowered the maximum allowable ping in Street Play as well, though not as strongly. We see Street Play as a “quick play,” and want to try to get people into matches faster, so we’re trying to optimize queue time a little more than in League Play.
  • We increased the time for trying to match new players against each other.
  • We increased the time before we start ignoring the join-in-progress rule, which makes you more likely to find a fresh match.
  • We changed how we calculated the ping estimates you see in the Data Centers menu. We’re now trying to look at this as a “worst case scenario” in a data center, rather than an average.
  • We’ve added a lot of monitoring to our data centers to ensure our reporting is accurate, servers are working correctly, and we can look at real-time data on matchmaking times, ping times, etc.
  • We added many backend tools to make adjustments to many of the above factors server-side, rather than needing a game patch.

We’ve been rolling out these updates basically every week since launch (including this week!), so if you’ve had issues in the past and have been waiting for improvements, there’s no better time than now to give it another try! Here’s what that Street Play graph looks like today, overlaying the old ping/skill thresholds as a point of comparison.

Ping and skill rating thresholds ramp up a lot more slowly, and the max ping is lower than it used to be, so no matter how long you wait, we’ll never put you in a match with 175 ping anymore.

As you can see, there’s a lot of thought and care that went into building our matchmaking system. There are a ton of factors that we’re trying to balance in ensuring brawlers get to play fun games, and we’re continuing to tweak as we get more data and feedback.

We’ve heard a lot of requests for a server selection option, and it’s important to note that in many regions, this could actually give you lower quality matchmaking! In North America, for example, there are multiple server regions within the United States, all of which should have pings that are great for anyone playing within NA. If you force yourself to look only on the west coast server because you live on the west coast, you’re locking yourself out from matches that you could play in central US with a ping of ~40-50 or so. You’d have longer queue times and play against people with a wider range of skill in comparison to you.

But (there’s always a but) we know that for some players in some regions, our matchmaking may not be working for them. For some players, specific ISPs, certain network configurations, or needing to play through a VPN could mean those ping estimates in the Data Centers window are incorrect. For others, their prime gaming time could be in the middle of the night in their region, and they’d rather wait longer (potentially much longer) instead of being put in a game on another continent. For these players, we’re introducing a region selection option, and it’s available right now.

Again, we’d like to stress that this feature should not be something you enable unless you’ve been having consistent ping issues. For 99% of players, this is going to make matchmaking worse for you. But if you’re in the 1% of players that have been having issues, we hope this will help you get more reliable (and fun!) games. Some notes on how this feature works:

  • It will completely override the ping thresholds on the graph. Whether you’ve been waiting for 1 seconds or 20 minutes, ping is no longer a factor in the search. Matchmaking will only put you in the region you’ve chosen.
  • If you’re in a group, we’ll respect the group leader’s selection here.
  • If your group leader has limited the region they play in, everyone will play in that region no matter where they are (we’ll no longer attempt to find a server in the middle of everyone).
  • If your group leader has not limited their region selection, then matchmaking will ignore the selections of other players in that group.

There you have it, a crash course in how our matchmaking works. Now when you queue for a match and you watch that timer ticking up, one second at a time, you’ve got a better idea of how our matchmaking servers are furiously working behind the scenes to serve up a piping hot, delicious match, just for you. 

As always, let us know how these changes are working for you! Whether you’re giving region selection a try, or you’re queueing as usual and have feedback on some of our most recent tweaks, we want to hear what you think. You can share your thoughts in the official Discord or on Twitter

Stay tuned, there’s still more fun stuff to come in the final weeks of Season 1, and Season 2 is just around the corner!

Josh Harrison
@joshharrison
Director of Marketing