YouTube2Text

Learn how matchmaking works on Roblox — Transcript

by Roblox Learn · 1,223 words · 67 segments · language en · Watch on YouTube

Full transcript

  1. 0:00In this video, SuperPAT77, a Principal Software  Engineer at Roblox, teaches you how matchmaking
  2. 0:06works in experiences, including a breakdown of  the different signals used to match players into
  3. 0:10eligible servers. With the launch of custom  matchmaking, it's important to understand how
  4. 0:15our matchmaking algorithm works so that you  can modify it to match players according to
  5. 0:19the unique needs of your experiences. For more  information on the matchmaking process, as well
  6. 0:24as how to customize it for your experiences,  check out the links in the description!
  7. 0:33Let's dive into the details of matchmaking.  Let's say a player finds your game, they go
  8. 0:37click the big blue play button, and matchmaking  is going to go put them into a server. But how did
  9. 0:43we actually decide that this was the server to go  put them in instead of one of these other servers
  10. 0:48over here? We have two steps for our process.  The first step is what we call eligibility.
  11. 0:54We need to find servers that are eligible  for the user to join. That means filtering
  12. 0:58out servers that aren't running the right place  or filtering out servers that are already full
  13. 1:02like this middle server over here. Or maybe  you've just launched an update for your game,
  14. 1:06and we need to make sure players don't join  servers that we're about to go shut down. We
  15. 1:10have a series of eligibility checks for all of our  instances, and once we run through all of that,
  16. 1:14we have a list of instances that are eligible for  the user to join. The next step is what we call
  17. 1:20scoring. We have a function that scores every  single one of our servers, and whichever one is
  18. 1:25the highest scoring server, that's the one that  the user is going to join. With today's launch of
  19. 1:31custom matchmaking, you will be able to change  how scoring works for your experience so that
  20. 1:35you can decide whether this player should go  to the top server or the bottom server. Now,
  21. 1:41let's talk through how scoring works. We  use an algorithm that we call weighted sum.
  22. 1:48Weighted sum means that for every server we have  a list of signals like how full the server is, how
  23. 1:54good your latency is. We're going to go convert  this raw datas into a value between 0 and 1, we're
  24. 2:00going to multiply it by a weight, we're going  to sum all of those weighted signals together,
  25. 2:04and that becomes our weighted sum. Let's walk  through an example now. We have several signals
  26. 2:11during matchmaking, but to keep things simple,  we're just going to use two signals: we're going
  27. 2:17to use one signal for occupancy and we're going  to use one signal for latency. Now, I mentioned
  28. 2:25every signal has two parts: a value and a weight.  Let's talk about the value first. For the value,
  29. 2:32we want to be able to convert the raw signal data  into some number between 0 and 1. We want to do
  30. 2:37this so that no matter how different the data is  across these signals, we have numbers that we can
  31. 2:41compare across those different signals. So how do  we do this for occupancy? It's pretty simple. We
  32. 2:47take the number of players, and we divide it by  the capacity, the total number of players that
  33. 2:54could be inside of that server, and that gets us  some number between 0 and 1. For this first server
  34. 2:59up here, we would just take 4 / 5 and we would  have a signal value of 0.8. For this second server
  35. 3:06down here, we would take 2 / 5 and we would have a  signal value of 0.4. But what about latency? What
  36. 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
  37. 3:21pick a number, and it has to be consistent across  all of our servers so that we can have the same
  38. 3:25comparison across the board, and we picked the  number 250. Now, this isn't to say that you can't
  39. 3:34join a server that has a ping higher than 250, but  it does mean that beyond that point, we might as
  40. 3:38well use a value of zero. It's no longer relevant  for scoring. We want to make sure that we keep
  41. 3:43this between 0 and 1 so if it is greater than 250,  we'll need to make sure that we constrain that.
  42. 3:51And then, well, this isn't quite right. If you  have really good ping where you have, let's say
  43. 3:55only 10 milliseconds of ping, the value is going  to be close to 0. So what we actually want to do
  44. 3:59is take the inverse of this number, and now we're  ready to start converting our latency data into
  45. 4:08signal values. So let's do that! For this first  server over here, we would have 1 - 100 over 250,
  46. 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
  47. 4:27could stop here. This is enough for us to compute  a score for all of our instances, and let's see
  48. 4:31what that would look like. If we were to just add  these numbers together, these values together,
  49. 4:38we'd get a final score of 1.4 for our first  instance and 1.2 for our second instance. And
  50. 4:52that means just by doing this, we would send the  player over to this top server over here. But what
  51. 4:57if that's not the right trade-off? What if that's  not what we wanted to do? What if we say, "Hey,
  52. 5:02you know it's great that this server has a lot of  players, but if the player joins the server their
  53. 5:07ping is never going to get better. Whereas if they  join this server down here, maybe it's okay that
  54. 5:12there's less players, more could join later,  I care more to make sure that they have good
  55. 5:15ping." So this is where we introduce the concept  of weights. Now, weight can be any number between
  56. 5:220 and infinity. It doesn't matter, and we can pick  some values. So let's say we picked a value of 1
  57. 5:28for the occupancy and 3 for the latency, and  let's see how that changes the outcome. Now,
  58. 5:33we're going to multiply our occupancy signal  value by 1, and our latency signal value by 3,
  59. 5:41and what we find after doing that is that now  we have a score for the first instance of 2.6,
  60. 5:48and a score for the second instance of 2.8 . And  so now by changing the weights, without changing
  61. 5:53any of the data, the player would be joined  to this bottom server over here. This is how
  62. 5:59the weighted sum algorithm works, and this is how  matchmaking works every time user clicks the play
  63. 6:03button. We have more signals, those signals have  their own transformation functions to keep those
  64. 6:09within those values, and they all have different  weights. And now you, as a developer, have the
  65. 6:13ability to define your own signals using your data  and your own weights for our signals and for your
  66. 6:19own signals. We hope you get a lot of value out  of this new feature, and we hope you're able to
  67. 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.