I created a cross-server matchmaking system that runs on an external server and communicates with Roblox trough HTTPService.
I have already finished a lot, but I am not sure if this is the best way to implement a matchmaking system with an external server. I am unsure if the logic behind the system makes sense, because currently I am sending the ID of the reserved server trough MessagingService, which seems kind of unnecessary. But there could be other things that are wrong too, that’s just my main concern.
So basically, my question is if the logic behind entire this system makes sense, or perhaps there is a better, more efficient solution?
This is how it currently looks like, of course, it is much more complicated, and has many more features like removing players etc., but my question is only about the main logic.
Roblox recently released something called Memory Store Service, which I consider a better fit for something like this as opposed to Messaging Service. Memory Stores have built in support for queues, and their data limit scales with your number of users, so you should never have to worry about data limits. You can read more about Memory Stores here.
Considering you have already built a lot of this, it’s understandable that you may not want to switch to Memory Store, (even though I really think you should so you don’t have to pay for external servers.) Overall, your logic looks fine to me, but at the end I can’t tell 100% what is going on. I would say, yes, first get the reserved server id in player 1’s server, and then send it to the other server. Although, for messaging service topics, I think all of the servers would get it, so you may need to instead use the external server to communicate to certain game servers which reserved server the player should go to.
I chose to use my own external server, even when Memory Stores were right around the corner because I think it’s more scalable and it is much easier to implement Skill-based matchmaking algorithms in JS since there are already a lot of examples/resources available, which I plan on adding. I may give Memory Store another look, since they look promising and seem to be easier to implement, it also has a bigger size quota. I will experiment a bit with Memory Store and give it a try, eventually I may just switch and redo everything.
Another option for me is to wait for Cloud Scripts, they seem to be the best way to implement matchmaking, but it seems like they are still very far away.
Regarding the last bit of your reply; I got it figured out with MessagingService, I was just unsure if that’s the best way to do it.
Still, thanks for the reply!