[v2.1.0] MatchmakingService - ON HOLD

This error is just because the request failed you should retry

do you know how can i detect this? using pcall or something

Awesome service, thank you so much for sharing this! @steven4547466

Just integrated to my game and noticed that PlayerAddedToQueue and PlayerRemovedFromQueue events are not triggering cross server.
If two players are in the same server, they both get the events no problems.
But if one player is in server A and another in server B, when player A enters a queue in server A, player B in server B will never receive the event. I made sure to wait pass the 5 second wave too.
I’m using this to keep track of player queue info to display in UI, so that players can choose the map that has the most players queued up.

Could I be missing something?

The RequestFailed error seems to be back and occuring a lot more since the new budget changes.

It’s weird because the budget hasn’t change only the memory size changed no ?

The module heavily relies on GetRangeAsync to fetch the list of running games, which used to only take up 1 unit of the budget, they’ve recently changed it to taking up as many units as items returned, so in this module’s case up to 200. I think (?) it should be fine, however I still notice these errors pretty frequently.

Most APIs will only consume 1 unit. The exceptions are GetRangeAsync() for sorted maps, and ReadAsync() for queues. Both APIs will consume units based on the number of items returned. For example, if GetRangeAsync() returns 10 items, 10 request units will be counted towards the total quota.

oh that a bad news i don’t know about that…

image
image

As shown in the picture above, this error occurs when a player is deleted from the Queue.

Just integrated to my game and noticed that PlayerAddedToQueue and PlayerRemovedFromQueue events are not triggering cross server.

fixed this, i believe it was a bug

Original code:

MessagingService:SubscribeAsync("MatchmakingServicePlayersAddedToQueue", function(players)
  for _, v in ipairs(players) do
	if Players:GetPlayerByUserId(v) ~= nil then continue end

	MatchmakingService.Singleton.PlayerAddedToQueue:Fire(v[1], v[2], v[3], v[4])
  end
end)

MessagingService:SubscribeAsync("MatchmakingServicePlayersRemovedFromQueue", function(players)
  for _, v in ipairs(players) do
	if Players:GetPlayerByUserId(v) ~= nil then continue end
	MatchmakingService.Singleton.PlayerRemovedFromQueue:Fire(v[1], v[2], v[3], v[4])
  end
end)

Fixed:

MessagingService:SubscribeAsync("MatchmakingServicePlayersAddedToQueue", function(message)					
	for _, v in ipairs(message["Data"]) do
		if Players:GetPlayerByUserId(v[1]) ~= nil then continue end
		MatchmakingService.Singleton.PlayerAddedToQueue:Fire(v[1], v[2], v[3], v[4])
	end
end)

MessagingService:SubscribeAsync("MatchmakingServicePlayersRemovedFromQueue", function(message)
	for _, v in ipairs(message["Data"]) do
		if Players:GetPlayerByUserId(v[1]) ~= nil then continue end
		MatchmakingService.Singleton.PlayerRemovedFromQueue:Fire(v[1], v[2], v[3], v[4])
	end
end)
1 Like

Absolute life saver, thank you for your dedicated time to making this module perfect!

Hello, is there a way to be sure that 2 players won’t be in the same queue like having a call back function that check if the player can join a game

Hey Steven, I am considering to continue developing this with added features and bug fixes, if you do not wish for me to publish the modification then let me know otherwise I will be posting it on the DevForum under my user and of course I would put you in the credits.

1 Like

Please do, this module seems to have been abandoned despite the recent changes related to MMS budgets, and has been running into increasingly more issues as of lately.

How could I detect when a new private server created by the service is ready, and players are in the process of teleporting to it?

There is no event like that but there is a print(« Added game ») and it does print when a game is created. This isn’t print when a player join a game.Z game is created when the player range.Min not playererange.Max

1 Like

If you are able to, can you make an pull request on github with the fix so that you can be properly credited? If not, that’s fine, I’ll update it myself, but I do want you to be credited for the fix.

Also, my extended LOA from roblox may end soon, so I’ll look into some of the issues posted here since my last update and see what I can do about fixing them.

That’s unfortunate that the budget changed, I’ll have to check the changes to the API and see what I can do about improving this.

The end goal was to switch to a memory queue which is much more efficient for this task, but the lack of API revolving around it makes it nearly impossible to implement into this service effectively without ending up with much more API calls due to people leaving the queue, rejoining, parties, etc.

1 Like

I’ve added a license to the github. I must’ve forgot when I originally created. I have no issues with someone forking this project and maintaining it separately. The license I set was Apache 2.0, which is a generally permissive license.

I am going to be updating this soon to hopefully lessen the errors with the new budgeting. But feel free to fork, maintain, make pull requests, etc.

I’ve released 2.1.0 with some minor fixes before I fix the bigger problems with the new memory store budgets.

Version 2.1.0

Changes (breaking):

  • None

Changes (non-breaking):

  • [Change] GetRunningGame’s argument code is now optional. If not provided, the code will be the current code of the server, if it’s a game server.

Fixes:

  • [Fix] Updated MessagingService implementation to reflect Roblox’s updates to how data is sent and fixes from user misternicekai. I did make this change on my end many months ago, but I unfortunately seemed to have forgotten to commit it.

  • [Fix] Fixed issue #22.

1 Like

Hey steven nice to see you are back to update your service !