· 6 min read
Navigating the World of Matchmaking: Tips for Game Developers
Sarah Impey
Content Creator at GameAnalytics
At some point, when making a multiplayer game, players need to find one another. You need some way to either match players with similar skills or just fill out the lobby. Especially if in mobile games. That’s where a matchmaker comes in.
What is a matchmaker?
A matchmaker is a script or third-party tool that decides which players go into a lobby together. It’s like a good host at a formal dinner. The players ask the matchmaker for a seat, and the matchmaker figures out who they should sit next to, and then leads them to the best table – filled with similar people.
Exactly what criteria the matchmaker uses is up to you – the developer. But typically, you want players of similar skill to play with one another. That’s the main point of the matchmaker: to make the matches fair and equal. You could just shove players into the first available lobby, but it probably won’t be a good match and you’ll just get one player curb-stomping everyone else.
There are generally two ways matchmaking can work:
- Server browsers. You show a list of servers to the players and they choose which to join. This doesn’t need a matchmaker.
- Playlists. Players ask to join a specific mode, like deathmatch or capture the flag, and the matchmaker puts them into a lobby that matches their skills and preferences or makes a new one.
Depending on your game, you might decide to show this lobby to the players. Maybe let players talk before the match and change the settings. Other times you might keep that hidden and just launch the match once it’s ready.
What criteria should I use?
Depending on your game, you’ll have different priorities. A competitive game, like Dota 2 or Overwatch, needs fair and balanced matches. That’s why those games have ranking systems. Don’t match bronze players with diamond, for example. This is particularly important in mobile sports games, like Tennis Clash. But a casual mobile game like Hole.io might be far more concerned about short queue times.
There are three main areas you’ll want to balance. Bear in mind, you’ll probably need to compromise on one of the three. The more criteria you add, the longer it’s going to take to find the perfect match.
- The player’s skill. How are you going to judge a player’s skill? A common way is to just use the Elo rating system, but you can always come up with your own way to rank players.
- The player’s latency. How fast is the player’s connection to the server? If there’s a big difference between the players, the person with the fastest connection is going to have a major advantage. You probably want to group players with similar latency together.
- The queue wait time. How long are players willing to wait before they join a match? A few seconds? A minute? Depending on your game, this can vary wildly. As a general rule of thumb: the longer the match will last, the more willing people are to wait to make sure it’s good.
Source: Among Us
These are the three basic areas you’ll want to consider when fine-tuning your matchmaker. But it should also handle a few other aspects:
- How will it stop players from joining a lobby with someone they’ve blocked?
- Do you have crossplay in your game?
- Will you let players join an ongoing match?
- When should it stop searching and just launch a new lobby?
There aren’t any right or wrong answers here. You just need to decide which is your main priority and how long you’re willing to wait for the ideal scenario before the matchmaker broadens the search.
Matchmaking differences on different devices
Theoretically, there isn’t a difference. The third-party tools you’ll use and the way the matchmaker works are identical. But practically, you’ll have different priorities than a game on console or PC.
For example, mobile players aren’t likely to wait very long. So you’ll want to prioritize queue times above everything else. Seconds, not minutes. That also means, you probably don’t want to connect players to a lobby and let them chat while they wait. Just pop them in the match and let them loose.
Source: Activision-Blizzard
You’ll also need to think about latency problems. Quite a few players are unlikely to have a good connection – they might even be travelling as they play. So make sure you don’t group up those hardcore players at home with the more casual players, sitting on a train and going through tunnels every five minutes.
Which matchmaker should I choose?
There are plenty of options to pick from. Every major tech company has their own matchmaker you could use. Valve has their Steam Matchmaking & Lobbies, Microsoft Azure has PlayFab, Amazon has FlexMatch, and Google has Open Match. Even Unity has its own matchmaker and there are also other options like EdgeGap, Photon or AccelByte.
Which one you decide to use will often be tied into which company you decide to go with for the servers themselves. However, you could always build a custom matchmaker yourself and plug it in if you don’t want to get tied into any specific provider.
As for quality, there isn’t really a bad choice here and it depends on how you set it up. Make sure you look for a matchmaker that lets you adjust your settings and prioritize the three criterias we described earlier.
Keep experimenting to find the right balance
The important thing is to keep track of whether your players are waiting for a match or not. GameAnalytics can help you keep track of whether people are dropping out before they enter a match, and then adjust your settings until you find the right balance.
It can also help to ask players after the match whether they enjoyed the match and their fellow players. This can help make sure the matchmaker is doing its job correctly. Bear in mind, even if a player gets defeated, they might have found the game fun if the game was a close call.