Need help with matchmaking system

I want to make a GLOBAL matchmaking system that spans all servers. However, I don’t even know where to start.

Currently, my biggest problems are:

  1. cross server communication
  2. multiple game modes, so multiple queues
  3. carrying data over
  4. Creating ONE PRIVATE server and teleporting all the players to it (although they are in different servers)

I would appreciate it if I can get linked to any resources, tutorials, pseudocode, or source code.

Please do not just link memorystore service or messaging service. I am making this post because I do not understand how I can use them.

I was thinking of something like Bedwars’s queue system.

1 Like

I was able to find the following examples in #resources:community-resources.

There does seem to be more topics relating to this subject there, alongside some within #help-and-feedback:scripting-support - you may want to run another search alongside these.

Note: I have no idea if these are any good. However, based on the replies, they do seem to have at least helped some people

Examples include:

  • MatchmakingService found here
  • SimpleMatchmaking found here

I could answer more general questions on how systems like these worked but if you prefer example code then the above ± the repository linked below is probably your best bet.

Side note r.e. easy.gg and their Bedwars game:

I remembered seeing that @grilme99 had actually open-sourced a PlayFab SDK and some examples relating to matchmaking. AFAIK, they used to work for EasyGames on Bedwars.

I remembered thinking that the README description of the repo seemed quite similar to what I would imagine easy.gg are doing; you can find that repository here.

  1. Set up cross-server communication: To enable cross-server communication, you can use Roblox’s MessagingService. This allows you to send messages between different servers. You can refer to the Roblox documentation on how to set up cross-server messaging using the MessagingService.

  2. Implement multiple game modes and queues: To support multiple game modes and queues, you can create a data structure to store information about each queue. This can include the game mode, the players in the queue, and any other relevant data. You can use a combination of tables and data stores to store and manage this information.

  3. Carry data over between servers: When a player joins a queue, you can store their relevant data (such as their game mode preference) in a data store. When a match is ready to be created, you can retrieve this data from the data store and use it to set up the match on a private server. You can use the PlayerAdded event to detect when a player joins a server and retrieve their data.

  4. Create a private server and teleport players: To create a private server and teleport players to it, you can use the TeleportService. You can create a private server using the CreatePlaceAsync function and then use the TeleportService:TeleportToPrivateServer function to teleport players to the private server. Make sure to handle any necessary matchmaking logic before teleporting players.

  5. Implement a queue system: To create a queue system similar to Bedwars, you can use a combination of tables and data stores to manage the queues. When a player joins a queue, you can add them to the appropriate queue table. You can periodically check the queues for matches and create private servers for the matched players.

I hope this helped.

can you help with host servers? I need to assign one server as a host. Otherwise, both servers will make the private server and send them to their own ones. So a server is assigned as a host, then tells the other server to teleport the player in their server to the given id