Learn how matchmaking works on Roblox — Transcript
Full transcript
- 0:00In this video, SuperPAT77, a Principal Software Engineer at Roblox, teaches you how matchmaking
- 0:06works in experiences, including a breakdown of the different signals used to match players into
- 0:10eligible servers. With the launch of custom matchmaking, it's important to understand how
- 0:15our matchmaking algorithm works so that you can modify it to match players according to
- 0:19the unique needs of your experiences. For more information on the matchmaking process, as well
- 0:24as how to customize it for your experiences, check out the links in the description!
- 0:33Let's dive into the details of matchmaking. Let's say a player finds your game, they go
- 0:37click the big blue play button, and matchmaking is going to go put them into a server. But how did
- 0:43we actually decide that this was the server to go put them in instead of one of these other servers
- 0:48over here? We have two steps for our process. The first step is what we call eligibility.
- 0:54We need to find servers that are eligible for the user to join. That means filtering
- 0:58out servers that aren't running the right place or filtering out servers that are already full
- 1:02like this middle server over here. Or maybe you've just launched an update for your game,
- 1:06and we need to make sure players don't join servers that we're about to go shut down. We
- 1:10have a series of eligibility checks for all of our instances, and once we run through all of that,
- 1:14we have a list of instances that are eligible for the user to join. The next step is what we call
- 1:20scoring. We have a function that scores every single one of our servers, and whichever one is
- 1:25the highest scoring server, that's the one that the user is going to join. With today's launch of
- 1:31custom matchmaking, you will be able to change how scoring works for your experience so that
- 1:35you can decide whether this player should go to the top server or the bottom server. Now,
- 1:41let's talk through how scoring works. We use an algorithm that we call weighted sum.
- 1:48Weighted sum means that for every server we have a list of signals like how full the server is, how
- 1:54good your latency is. We're going to go convert this raw datas into a value between 0 and 1, we're
- 2:00going to multiply it by a weight, we're going to sum all of those weighted signals together,
- 2:04and that becomes our weighted sum. Let's walk through an example now. We have several signals
- 2:11during matchmaking, but to keep things simple, we're just going to use two signals: we're going
- 2:17to use one signal for occupancy and we're going to use one signal for latency. Now, I mentioned
- 2:25every signal has two parts: a value and a weight. Let's talk about the value first. For the value,
- 2:32we want to be able to convert the raw signal data into some number between 0 and 1. We want to do
- 2:37this so that no matter how different the data is across these signals, we have numbers that we can
- 2:41compare across those different signals. So how do we do this for occupancy? It's pretty simple. We
- 2:47take the number of players, and we divide it by the capacity, the total number of players that
- 2:54could be inside of that server, and that gets us some number between 0 and 1. For this first server
- 2:59up here, we would just take 4 / 5 and we would have a signal value of 0.8. For this second server
- 3:06down here, we would take 2 / 5 and we would have a signal value of 0.4. But what about latency? What
- 3:13do we divide 100 by? What do we divide 50 by? How do we know how good 50 is versus 100? We have to
- 3:21pick a number, and it has to be consistent across all of our servers so that we can have the same
- 3:25comparison across the board, and we picked the number 250. Now, this isn't to say that you can't
- 3:34join a server that has a ping higher than 250, but it does mean that beyond that point, we might as
- 3:38well use a value of zero. It's no longer relevant for scoring. We want to make sure that we keep
- 3:43this between 0 and 1 so if it is greater than 250, we'll need to make sure that we constrain that.
- 3:51And then, well, this isn't quite right. If you have really good ping where you have, let's say
- 3:55only 10 milliseconds of ping, the value is going to be close to 0. So what we actually want to do
- 3:59is take the inverse of this number, and now we're ready to start converting our latency data into
- 4:08signal values. So let's do that! For this first server over here, we would have 1 - 100 over 250,
- 4:15which is equal to 0.6. And for our second server, we'd have 1 - 50 over 250, which is 0.8. Now, we
- 4:27could stop here. This is enough for us to compute a score for all of our instances, and let's see
- 4:31what that would look like. If we were to just add these numbers together, these values together,
- 4:38we'd get a final score of 1.4 for our first instance and 1.2 for our second instance. And
- 4:52that means just by doing this, we would send the player over to this top server over here. But what
- 4:57if that's not the right trade-off? What if that's not what we wanted to do? What if we say, "Hey,
- 5:02you know it's great that this server has a lot of players, but if the player joins the server their
- 5:07ping is never going to get better. Whereas if they join this server down here, maybe it's okay that
- 5:12there's less players, more could join later, I care more to make sure that they have good
- 5:15ping." So this is where we introduce the concept of weights. Now, weight can be any number between
- 5:220 and infinity. It doesn't matter, and we can pick some values. So let's say we picked a value of 1
- 5:28for the occupancy and 3 for the latency, and let's see how that changes the outcome. Now,
- 5:33we're going to multiply our occupancy signal value by 1, and our latency signal value by 3,
- 5:41and what we find after doing that is that now we have a score for the first instance of 2.6,
- 5:48and a score for the second instance of 2.8 . And so now by changing the weights, without changing
- 5:53any of the data, the player would be joined to this bottom server over here. This is how
- 5:59the weighted sum algorithm works, and this is how matchmaking works every time user clicks the play
- 6:03button. We have more signals, those signals have their own transformation functions to keep those
- 6:09within those values, and they all have different weights. And now you, as a developer, have the
- 6:13ability to define your own signals using your data and your own weights for our signals and for your
- 6:19own signals. We hope you get a lot of value out of this new feature, and we hope you're able to
- 6:23customize matchmaking to be the best for your experience's player base. Thanks for listening!
About this transcript
This page contains the full transcript of Learn how matchmaking works on Roblox by Roblox Learn, generated from the public captions YouTube serves with the video. The transcript has 1,223 words across 67 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.