We’re joined today by Wraithan McCarroll our backend engineer on Dropzone. Wraithan explains to us how matchmaking works.
Wraithan, can you tell us a bit more about what you do as a backend engineer?
Most of my job consists of gathering data from the database and shipping it to the game client. Or using the data for matchmaking purposes.
Can you explain to us how matchmaking works?
Here’s a high level overview of how players get matched: a player presses the “start seeking” button, and the client sends data to the backend with parameters for what kind of match the player is seeking. For example, they could be looking for a 1 VS 1 match or a 3 VS 3 match. The client sends a message to the backend, and the backend takes this data, processes it, and then ships it to our matchmaking service.
This service compares all the matchmaking requests that come in and finds the best potential matches. From there, the data is sent to our game builder, which takes a list of the users and their customizations (profile pictures, skins, etc.) and sends it to our simulation server. After the game is over, our simulation server will send all the specific data from that game to our database. Then you can play another match.
So, how does Dropzone match people?
Dropzone uses a Bayesian matchmaking system. The idea is that we hold onto two sets of data: 1. What we think a player’s skill should be, or the mu. 2. Our uncertainty in the skill we’ve assigned, or the sigma. We take those two numbers and apply some math to calculate how likely it is that a set of players are close enough in skill level to draw. The result of that calculation is compared with a minimum draw chance for a match. As players wait for a match, the minimum draw chance decreases based on the wait-time. This is meant to encourage the game to find more matches rather than the perfect match.
How do you determine the two sets of data?
At the end of the match, once we know who won and lost, we can determine the data. If the winner’s mu is higher than the other player before the match and they win, it doesn’t increase a lot because we already expected them to win. But if they lost, then their mu goes down quite a bit because they were expected to win, but they didn’t.
The amount that they change by is tempered by the sigma. If the player has a high sigma, then we’ll move them around a lot. With each match the sigma lowers a bit, since we have less uncertainty in the skill we've assigned the player. The sigma will stay above zero though, because we know players are always changing so we can't be 100% certain in their skill.
What are some of the challenges you face in the matchmaking system?
We face a lot of challenges in matchmaking. Many stem from distributed system problems, such as when computers match halfway across the Earth. Maybe you sent a time to start the game to the client but the clock on your computer is off. That’ll cause problems. Good coordination among of all the pieces: the client, the server and the player’s computer is a big part of what makes matchmaking successful.
A lot of what you said is for 1 VS 1, what about 3 VS 3?
All of the same concepts apply to 3 VS 3 as they did to 1 VS 1. For each of our player VS player modes we have a separate set of match making rating numbers. So for 1 VS 1 unranked, 1 VS 1 ranked, and 3 VS 3 the mu and sigma are separate and don't affect each other.
What’s some of the biggest misconceptions players have about matchmaking?
Matchmaking systems are designed to give you a 50% win rate. Players believe that once you win too much the system will force you to lose. This isn’t true. Matchmaking is consistently trying to give you the most even matches as possible. The idea is that with enough matches over time, you'll see a 50% win rate. Though, keep in mind, it takes a bit for the system to figure out your skill, but as it does, you're match quality should keep improving.
We hope you enjoyed reading Wraithan's blog! Keep updated with the Sparkypants team and our Dev Blogs here!
play Dropzone now on Steam for free at www.playdropzone.com