[v2.1.0] MatchmakingService - ON HOLD

It seems there was error with passing a variable containing a string with the map name in this line

MatchmakingService:QueuePlayer(player, "Casual", GameName)

This is how I proceeded.

local function QueueSingleTagSolo(player)
	local PlayerGui = player:WaitForChild("PlayerGui")
	local Loading = PlayerGui:WaitForChild("Loading")
	MatchmakingService:QueuePlayer(player, "Casual", "SingleTagSolo")
	wait(3)
	Loading.Cancel.Visible = false
end

local function QueueFreeForAll(player)
	local PlayerGui = player:WaitForChild("PlayerGui")
	local Loading = PlayerGui:WaitForChild("Loading")
	MatchmakingService:QueuePlayer(player, "Casual", "FreeForAll")
	wait(3)
	Loading.Cancel.Visible = false
end

Hey Steven,
Can you help guide me on understanding requests, and where adjustments can be made to reduce these requests?
I have only been test this game with 2 users


iā€™m getting this error

iā€™m using the v3 matchmaking service

I donā€™t think itā€™s your fault. The service just isnā€™t that efficient with its memory calls. I tried fixing it with the most recent beta version, but if that doesnā€™t help then Iā€™m just not sure what else I could do.

Unfortunately Iā€™ve been going through a bit of a hard time irl at the moment and I wanted to come back to this and finish my updates, but I donā€™t have the time anymore. Which sucks because I donā€™t want people to see this and get their hopes up that itā€™ll solve all their matchmaking wants and needs but run into a bug they need help with that I just wonā€™t be available for.

For this reason, I would like to point out that this project is currently

On indefinite hold.

2 Likes

Do you want to work together to find a solution?
We can make a slack to talk about potential solutions. Jesus has ideas for days.

how do i get the map thats been queued?

Hello, everyone, and wow, 2 years. This project started when MemoryStoreService first released. I can say that I never expected it to become a project like this. It definitely had its hiccups. But it was a fun project.

Now, Iā€™m not just posting to post, I am currently working on a full rewrite. I am stating this now, as if your setup to get the singleton from the main asset id, v3 will definitely break your game. This is why Iā€™ve always recommended using this to get the service:

local MatchmakingService = require(7567983240).GetSingleton({["MajorVersion"]="v2"})

Regardless, this rewrite will be taking advantage of a new system currently in beta for MemoryStoreService called HashMaps. Without going into the specifics, it basically means weā€™ll be able to make more requests to the data and store more data. I want this rewrite to be much more optimized than the first and second versions.

This update will be removing the rating system as well. To be completely honest, it was never something I really wanted in the service in the first place, and all it did was add complexity.

I also plan on making the service much more modular and extensible so you can add new things much easier.

Due to the size of this, and the fact that the underlying system Iā€™m using is still in beta, I canā€™t give an estimation of when it will come out.

This update is neither a promise nor guarantee, Iā€™m just going to be working on it every now and then, and when HashMaps fully release, Iā€™ll give another update. Just to be clear, this is a hobby project, and Iā€™m working on it in my free time as I have a fulltime job that takes up most of my time. But I do hope to get this rewrite done.

13 Likes

Hey steven nice to see you back. Do you plan on adding role with party parity ?

A proper role pool queue is on the todo list

1 Like

Could you give the todo list please ?

1 Like

I donā€™t have a full todo list written down, just an idea of what I am going to do differently. I said itā€™s on the todo list because itā€™s part of my idea for the rewrite, not that Iā€™ve written it down anywhere. The new version is still being planned and hasnā€™t begun being written yet. I am working on it sparsely as I am quite busy with other things in my life.

What is a ā€œHashMapā€


I appreciate the announcement of the module, as well as the module, I would use this for an revamp of my old game

1 Like

Iā€™m not sure how much Iā€™m allowed to share, I was told I could say that Iā€™m using the beta HashMaps feature, but I wasnā€™t given a detailed scope of what is and isnā€™t allowed to be shared. But in short, they are a new feature coming to memory stores that will have better rate limits, meaning that you can access data more frequently without having rate limit issues. And some data size limits were removed, so the only limit is the universe total, and the existing 128 bytes for a key and 32kb for a single value.

I want to take full advantage of the partitioning to solve rate limit issues, which will come with a near full revamp of how the queue works to split the data as efficiently as possible to make rate limiting basically impossible.

If youā€™re asking what a hashmap, the data structure, is I recommend reading online resources such as Hash Table/Hash Map Data Structure | Interview Cake

HashMaps have, on average, constant time lookup, which means getting data out of it should take the same amount of time regardless of how many items are in it, on average.

4 Likes

updateJoinableOnLeave question.
Can you explain what the code looks for to toggle the updateJoinableOnLeave true or false, my best guess is that it turns true if the player count is equal to or less than the lower end of the NumberRange

Edit: Thanks for making this btw!

Yeah, updateJoinableOnLeave means that when a player is removed from the game, the game itself will be set to joinable if the number of players in it < range.Max

The actual code behind it is

if updateJoinable then #old.players ~= self.PlayerRanges[old.map].Max else old.joinable
1 Like

Thanks for clearing that up!
Iā€™m going to use MatchmakingService for my project since Itā€™s so easy to set up and understand.

Hi Steven!

How is v4 coming along? Wanting to add ranked to my project and not really wanting to make it internally so I figure the community has probably cooked up something. Is this still in production / has the most recent version available been tested to scale?

I keep getting this error:

Not sure what Iā€™m doing wrong, this happens only when I require the module. Here is my code:

Any thoughts?

I canā€™t exactly see line 780 so Iā€™m lost. The marketplace version is very out of date as well.

I am trying to do the same thing, how did you manage the situation when the server who is responsible for match making gets shut down how do you change it to another server?