This repository was archived by the owner on Mar 4, 2025. It is now read-only.
Releases: steven4547466/MatchmakingService
Releases · steven4547466/MatchmakingService
Fixes
Version 3.0.0-beta.3
Changes (breaking):
- None
Changes (non-breaking):
- [Change]
RemovePlayerFromQueueId,RemovePlayerFromQueue,RemovePlayersFromQueueId, andRemovePlayersFromQueuenow have another parameter calledupdateAttribute, this will default to true. The only proper use for this is to remove players from the queue but still have the service check if they found a game. Used internally to remove players from the queue after they found a game, but still teleport them. - [Change]
Clearwill now print how many times the memory stores were used, effectively telling you how much of your rate limit you used. - [Change] Added various logs which will be removed on release.
Fixes:
- [Fix] Fixed the
MMS_QUEUEDattribute being removed after finding a game, which caused players to never be teleported. - [Fix]
AddPlayersToGameIdwill now default the role toMMS_NO_ROLEproperly.
Role system!
Version 3.0.0-beta.2
Changes (breaking):
- [Addition] Added a new role system to allow developers to assign players roles while in queue. This would allow them to queue on different teams. For example, in dead by daylight, you can queue as killer or survivor. This new system allows you to mimic that.
- [Addition]
SetMapRoles(). Allows you to set the map roles to a table with this format (example):
{
["Killer"] = { -- Key is the role name
Min=1;
Max=1;
};
["Survivor"] = {
Min=1;
Max=4;
};
}-
SetPlayerRangeis unchanged, but is now only applicable if theroleparameter is not used when queuing
- [Change]
QueuePlayerId,QueuePlayer,QueuePartyId,QueueParty,AddPlayerToGame,AddPlayerToGameId,AddPlayersToGame, andAddPlayersToGameIdnow accept aroleparameter. If not provided, then it will use the old system without roles, but the backend adds a role calledMMS_NO_ROLEfor the sake of convenience in the queue. - [Change]
GetQueueCountsstructure has changed to{map: {ratingType: {role: count}}}.
Changes (non-breaking):
- [Addition] Added signal
GameCreated(gameData, serverId, reservedCode)which is fired when a server for a game is reserved. This only works in the game which is currently handling the matchmaking loop (otherwise known as the main job). - [Addition] Added the
RunningGamesJoinableproperty with the corresponding methodSetRunningGamesJoinable(). Defaults totrue, iffalse, the matchmaking loop will skip running games and not use any memory queue rate limit units on them. This means that when a game is created by the serivce, it will never be joinable to the service, even if you manually set it to joinable. If you use this, it is recommended to set the minimum and maximum players to the same value so that only full games will be made since they are no longer able to be joined afterwards.
Fixes:
- None
Breaking Optimizations
Changes (breaking):
- [Removal] Removed
GetRunningGames(). - [Change]
SetJoinable()will now move a running game from the joinable memory to the non-joinable memory to preserve rate limit while matchmaking. - [Change]
StartGame()will move games from joinable to non-joinable memory ifjoinableis false. - [Optimization] The matchmaking loop will now only get joinable games, ignoring all non-joinable games to free up rate limit units.
Changes (non-breaking):
- [Addition] Added
GetJoinableGames(). - [Addition] Added
GetNonJoinableGames(). - [Addition] Added
GetJoinableGamesFiltered() - [Addition] Added
GetNonJoinableGamesFiltered() - [Change]
GetAllRunningGames()will return both joinable and non-joinable games. - [Change]
StartGame()'sgameIdparameter is now optional. Ifnil, it will default to the current game id. - [Optimization] Players queued will be given the
MMS_QUEUEDattribute. Iftrue, MatchmakingService will check their data to see if they've joined a game. - [Optimization] Rather than getting the data from memory in every loop, teleport game data is cached outside the loop.
- [Optimization]
GetCurrentGameCode()now caches its value so it only gets it from memory once rather than every call.
Fixes:
- [Fix] Fixed both
ApplyCustomTeleportData's andApplyGeneralTeleportData's game data argument. - [Fix] Fixed the return value on many methods that would always return
trueregardless of errors. - [Fix]
requireing the script with aMajorVersionoption will now set the singleton to the one returned from that version'sGetSingletonproperly.
Bug fixes
Version 2.1.0
Changes (breaking):
- None
Changes (non-breaking):
- [Change]
GetRunningGame's argumentcodeis now optional. If not provided, the code will be the current code of the server, if it's a game server.
Fixes:
- [Fix] Updated
MessagingServiceimplementation 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.
Typing and Autocomplete
Version 2.0.4
Changes (breaking):
- None
Changes (non-breaking):
- [Change]
RemovePlayerFromGameno longer needs to be called manually. If the game is a game server, this will be handled automatically. - [Change]
SetIsGameServernow accepts a second parameterupdateJoinableOnLeavethat denotes whether to update the joinable value when a player leaves. This is false by default. - [Addition] Reintroduced
GetQueueCounts. - [Addition] Added typing to methods to allow for auto-complete (#19). Thank you @Dannyftm for this.
Fixes:
- None
Fix an issue with custom teleport data
Version 2.0.3
Changes (breaking):
- None
Changes (non-breaking):
- None
Fixes:
- [Fix] Attempted a fix for an issue that would cause an error when teleporting players to existing games with no custom teleport data.
Fix SetPlayerRating
Version 2.0.2
Changes (breaking):
- None
Changes (non-breaking):
- None
Fixes:
- [Fix] Fixed
SetPlayerRatingfrom calling a function that no longer exists.
Fix!
Version 2!
Version 2.0.0
Changes (breaking):
- [Removal] Removed all teleport data.
- [Addition] Added
MatchmakingService:GetCurrentGameCode(). This will get the code of the current game, if it is a game server, nil otherwise. - [Addition] Added
MatchmakingService:GetGameData(code). This replaces the teleport data for game data. This will include the game's code, rating type and any custom data you apply withApplyGeneralTeleportData. You can call this withoutcode, if so MMS will use the useGetCurrentGameCode(). - [Addition] Added
MatchmakingService:GetUserDataId(player)(andMatchmakingService:GetUserData(player), accepts player rather than player id). This replaces teleport data for players. Use this to get any data you apply withApplyCustomTeleportData. - [Change]
RemoveGame(gameId)is now called automatically on game close and will no longer accept agameIdparameter. This shouldn't be called anymore, as MMS will handle it for you.
Changes (non-breaking):
- None
Fixes:
- [Fix] Custom user data is now applied when teleporting to existing games.
Fixes
Version 1.3.2
Changes (breaking):
- None
Changes (non-breaking):
- None
Fixes:
- [Fix] Delimiter for memory is now two underscores. This allows maps to have names with a single underscore.
- [Fix] Added a quick fix for an issue where queue would not be removed if no one was in it, which caused an error.