[Beta][v0.2][2025] MatchMaker: A flexible matchmaking module built on promises and memorystores

:video_game: Matchmaker Package Introduction

The Matchmaker package is a modular and scalable matchmaking system built for Roblox multiplayer games. It handles regionalized player queues, asynchronous matchmaking coordination, private server management, and cross-server state syncing using MemoryStore and Promise-based operations.

Key Features

  • Region-Based Queues: Players are grouped by their geographic region for optimal latency and fairness.
  • Promise-Driven Asynchrony: All operations are non-blocking and structured using robust promise chains.
  • Auto-Match Coordination: One server becomes a match coordinator and is responsible for generating matches based on customizable logic.
  • Private Server Integration: Matches are hosted on dynamically reserved private servers with persistent metadata and lifecycle tracking.
  • Graceful Error Handling: Errors are propagated and isolated cleanly, avoiding unwanted chain continuation.
  • Custom Matchmaking Logic: Plug in your own logic to define how players are grouped into matches.

Documentation:


Demo:


Original theoretical thinking


Release Notes

This is the initial release of the tool. It has been tested on a limited scale (just myself and a second account), so there may be edge cases that aren’t fully handled yet. You’re encouraged to try it out and share any feedback or issues you encounter. It’s also my first time building a tool entirely with Promises, so if you notice any misuses or areas for improvement, I’d really appreciate your guidance.

17 Likes

[v0.2]

  • Fixed an issue where the party data was not registered in the regional queue when using :AddPartyAsync
  • Fixed an issue where the partyremoved event would fire twice for parties which found a match
1 Like