Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Releases: steven4547466/MatchmakingService

Fixes

26 May 01:33

Choose a tag to compare

Version 3.0.0-beta.3
Changes (breaking):

  • None

Changes (non-breaking):

  • [Change] RemovePlayerFromQueueId, RemovePlayerFromQueue, RemovePlayersFromQueueId, and RemovePlayersFromQueue now have another parameter called updateAttribute, 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] Clear will 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_QUEUED attribute being removed after finding a game, which caused players to never be teleported.
  • [Fix] AddPlayersToGameId will now default the role to MMS_NO_ROLE properly.

Role system!

24 May 23:51

Choose a tag to compare

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;
  };
}
    • SetPlayerRange is unchanged, but is now only applicable if the role parameter is not used when queuing
  • [Change] QueuePlayerId, QueuePlayer, QueuePartyId, QueueParty, AddPlayerToGame, AddPlayerToGameId, AddPlayersToGame, and AddPlayersToGameId now accept a role parameter. If not provided, then it will use the old system without roles, but the backend adds a role called MMS_NO_ROLE for the sake of convenience in the queue.
  • [Change] GetQueueCounts structure 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 RunningGamesJoinable property with the corresponding method SetRunningGamesJoinable(). Defaults to true, if false, 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

24 May 04:58

Choose a tag to compare

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 if joinable is 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()'s gameId parameter is now optional. If nil, it will default to the current game id.
  • [Optimization] Players queued will be given the MMS_QUEUED attribute. If true, 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 and ApplyGeneralTeleportData's game data argument.
  • [Fix] Fixed the return value on many methods that would always return true regardless of errors.
  • [Fix] requireing the script with a MajorVersion option will now set the singleton to the one returned from that version's GetSingleton properly.

Bug fixes

22 May 16:56

Choose a tag to compare

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.

Typing and Autocomplete

11 Oct 20:27

Choose a tag to compare

Version 2.0.4
Changes (breaking):

  • None

Changes (non-breaking):

  • [Change] RemovePlayerFromGame no longer needs to be called manually. If the game is a game server, this will be handled automatically.
  • [Change] SetIsGameServer now accepts a second parameter updateJoinableOnLeave that 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

17 Apr 02:28

Choose a tag to compare

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

09 Mar 17:07

Choose a tag to compare

Version 2.0.2
Changes (breaking):

  • None

Changes (non-breaking):

  • None

Fixes:

  • [Fix] Fixed SetPlayerRating from calling a function that no longer exists.

Fix!

05 Mar 21:13

Choose a tag to compare

Version 2.0.1
Changes (breaking):

  • None

Changes (non-breaking):

  • [Update] Updated OpenSkill to version 1.2.0.

Fixes:

  • [Fix] Fixed GetPlayerParty for users that have found a game.

Version 2!

21 Feb 22:52

Choose a tag to compare

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 with ApplyGeneralTeleportData. You can call this without code, if so MMS will use the use GetCurrentGameCode().
  • [Addition] Added MatchmakingService:GetUserDataId(player) (and MatchmakingService:GetUserData(player), accepts player rather than player id). This replaces teleport data for players. Use this to get any data you apply with ApplyCustomTeleportData.
  • [Change] RemoveGame(gameId) is now called automatically on game close and will no longer accept a gameId parameter. 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

17 Jan 23:55

Choose a tag to compare

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.