Sometimes I wonder, how don’t I find these types of amazing resources?
Heck the first line I said, but this module is absolutely crazy! 10/10!!
Sometimes I wonder, how don’t I find these types of amazing resources?
Heck the first line I said, but this module is absolutely crazy! 10/10!!
I’ve released MatchmakingService 4.0.0. You can find it here:
Eventually this will be merged into the main model. But this has significant breaking changes so I am giving devs time to update! It will be merged into the main model if it goes 2 weeks with no reported bugs. At that point it will then also be the first full release of the service! Better documentation is coming soon as well!
Version 4.0.0-beta
Changes (breaking):
AddGamePlace(name, id)
has replaced SetGamePlace
. name
is the name of the map, id
is the game’s place id. Supports any number of maps.SetStartingMean(newStartingMean)
has been added.ToRatingNumber(openSkillObject)
has been added.SetGamePlace
has been removed.SetStartingRating
has been removed (due to how open skill works, this will not be readdedd).SetStartingVolatility
has been removed.GetQueueCounts
has been temporarily removed. Will be readded in the future.PlayerAddedToQueue
will now fire with the arguments Player
, Map
, RatingType
, RoundedRating
.PlayerRemovedFromQueue
will now fire with the arguments Player
, Map
, RatingType
, RoundedRating
.SetStartingDeviation
has been renamed to SetStartingStandardDeviation
GetPlayerGlickoId
has been renamed to GetPlayerRatingId
. It now returns an OpenSkill object. To get a rating number from this, use MatchmakingService:ToRatingNumber(openSkillObject)
.GetPlayerGlicko
has been renamed to GetPlayerRating
. It now returns an OpenSkill object. To get a rating number from this, use MatchmakingService:ToRatingNumber(openSkillObject)
.SetPlayerGlickoId
has been renamed to SetPlayerRatingId
. Its third parameter is now an OpenSkill object, rather than a glicko object.SetPlayerGlicko
has been renamed to SetPlayerRating
. Its third parameter is now an OpenSkill object, rather than a glicko object.GetQueue
now takes map
as an argument instead of ratingType
. It will now return in the format {ratingType: {skillLevel: queue}}
where queue
is a table of tables {userId, partyMembersAfter}
QueuePlayerId
now requires a third argument map
which is a map name that is the same as one added with AddGamePlace
.QueuePlayer
now requires a third argument map
which is a map name that is the same as one added with AddGamePlace
.QueuePartyId
now requires a third argument map
which is a map name that is the same as one added with AddGamePlace
.QueueParty
now requires a third argument map
which is a map name that is the same as one added with AddGamePlace
.UpdateRatingsId
's arguments have been completely changed. It now takes the arguments ratingType
, ranks
, teams
. Where ratingType
is the name of the rating type. ranks
is a table of numbers that relate to placements of each team. teams
is a table of tables that contain user ids.UpdateRatings
's arguments have been completely changed. It now takes the arguments ratingType
, ranks
, teams
. Where ratingType
is the name of the rating type. ranks
is a table of numbers that relate to placements of each team. teams
is a table of tables that contain players.Changes (non-breaking):
SetPlayerInfoId
now has a fifth parameter map
which is the name of the map they queued for.SetPlayerInfo
now has a fifth parameter map
which is the name of the map they queued for.Fixes:
{}
.Most of this is understandable from the change log (new documentation will be out on the readme soon), but I wanted to go in more detail to UpdateRatings
.
Basically, lets have this scenario in the ratingType ranked
:
local team1 = {player1, player2}
local team2 = {player3, player4}
local team3 = {player5, player6}
Let’s say team2 came first, team1 came second and team3 came third. To update the ratings correctly, you would do this:
MatchmakingService:UpdateRatings("ranked", {2, 1, 3}, {team1, team2, team3})
{2,1,3}
is important, and so is order. Order is extremely important here. Because I passed the teams in order, I can give the position of each team in order. As previously stated team1
placed second, therefore because team1
is the first team in the teams table, it also has the first value in the rankings table.
When I get time I will update the documentation.
There may be new bugs in 4.0.0 that I did not find in testing. Please let me know of any you see!
Oh, let’s goo!! This is gonna be absolutely crazy! This’ll help my game soo much! Thanks!
Since Glicko2 and Profile Service are no longer in use, do we still need to keep the modules?
The new model does not have either of them. Or wasn’t supposed to, I’ll fix that.
Fixed
I’ve released 4.1.0. While it is a breaking change I just don’t want to immediately go to version 5.0.0 lol.
Anyways:
Version 4.1.0-beta
Changes (breaking):
SetPlayerRange
now takes a map
name as its first argument. Player range is now per map.Changes (non-breaking):
Fixes:
An early version of the revamped documentation is now available!
It applies to version 4.1.0.
New version with a critical bug fix
Version 4.1.1-beta
Changes (breaking):
Changes (non-breaking):
Fixes:
Adding another one here to not bump
Version 4.1.2-beta
Changes (breaking):
Changes (non-breaking):
Fixes:
And again…
Version 4.1.3-beta
Changes (breaking):
Changes (non-breaking):
Fixes:
GetSingleton
should no longer yield.New version with a nice addition and a small fix.
Version 4.2.0-beta
Changes (breaking):
Changes (non-breaking):
SetJoinable(gameId, joinable)
allows you to explicitly set the joinable state of the game.Fixes:
Updating this reply:
Version 4.2.1-beta
Changes (breaking):
Changes (non-breaking):
Fixes:
Version 4.2.2-beta
Changes (breaking):
Changes (non-breaking):
Fixes:
Tagging along here…
Version 4.2.3-beta
Changes (breaking):
Changes (non-breaking):
Fixes:
[Fix] Fixed an issue that caused the PlayerAddedToQueue event to not fire when queueing a party.
[Fix] Fixed an issue that caused QueueParty
to always return false.
Remember, this will soon be merged with the main module!
Here’s the update: MatchmakingService Update - Roblox
Version 4.3.0-beta
Changes (breaking):
Changes (non-breaking):
ApplyCustomTeleportData
which is a function you can bind to give users custom teleport data.ApplyGeneralTeleportData
which is a function you can bind to give the game custom teleport data.Fixes:
PlayerRemovedFromQueue
will now be passed a number as the fourth parameter, instead of its string representation.You can read up on how to apply and retrieve custom teleport data for users here:
https://steven4547466.github.io/MatchmakingService/maindocs/#applying-custom-teleport-data-to-players
You can read up on how to apply and retrieve general custom teleport game data here:
https://steven4547466.github.io/MatchmakingService/maindocs/#applying-custom-teleport-data-to-the-game
Remember, the update will be merged with the main model soon. You can find the update here already: MatchmakingService Update - Roblox
I’ve readded queue expansions! If all goes well, this will be the version merged into the main model and released!
Version 4.4.0-beta
Changes (breaking):
Changes (non-breaking):
[Readdition] Readded queue expansions.
[Addition] Added SetSecondsBetweenExpansion
which allows you to set the time between queue expansions. A queue’s are rounded off at every 10 skill level. A single expansion allows players from the next and previous 10 to be matched together. If a player is queued at 10 skill level, a single expansion will look in 0 and 20 as well.
Fixes:
4.4.1-beta is small so I’m tagging it along in here
Version 4.4.1-beta
Changes (breaking):
Changes (non-breaking):
Fixes:
Remember, the update will be merged with the main model soon. You can find the update here already: MatchmakingService Update - Roblox
I believe it’s finally stable enough to push into the main module. This also comes with the full release of 1.0.0!
Version 1.0.0
Changes (breaking):
Changes (non-breaking):
[Addition] Added DisableExpansions
to the options table when using GetSingleton()
.
[Addition] Added more comments to the code.
Fixes:
Updates will now mainly consist of patches to fix things that are broken. New features will be available on a beta branch on the github ahead of time for testing.
For some reason I wasn’t receiving notifications when this topic was bumped, now I’m coming back 2 weeks after my last visit - and wow, what a time to be alive!
Thanks so much for making this, again. Best Christmas gift so far! Can’t wait for more.
Happy new year to everyone reading as well.
I am having problems with the party system, where they are unable to queue up. When I do, “MatchmakingService:QueueParty(players, “unranked”, “2v2”)” it does not give any errors. For the argument “players”, I pretty much set a table which contains the players in the party. “2v2” is the name of the map that I am trying to teleport the party to. Could you give an example of how to correctly implement doing it with a party, just like how you did for single player queue?
Well, first the function returns a boolean
value that indicates whether or not it was successfully queued, can you do print(MatchmakingService:QueueParty(players, "unranked", "2v2"))
and show me what it returns? Also, these kinds of things are better resolved in a private message so we don’t constantly bump the topic, send me a private message with the result of the print and I’ll be happy to help!
I’ve released version 1.1.0!
Version 1.1.0
Changes (breaking):
Changes (non-breaking):
[Addition] Added MajorVersion
to the options table when using GetSingleton()
. More info.
[Addition] Added MatchmakingService:GetAllRunningGames()
.
[Addition] Added MatchmakingService:GetRunningGames(max, filter)
.
[Change] Changed how matchmaking works internally. It’s no longer as complex and should save a lot of memory calls.
Fixes:
PlayerRemovedFromQueue
firing with a table as the second value, rather than the values inside the table.How am I able to make sure that it does not send the player until the numberrange of people has been reached?
Players will not be added to games until the low end of the number range is reached. NumberRange.new(min, max)
. So it wont add players to games until min
is reached.
but when i tested it, it sent me into the game even tho am the only person in queue and min range is 5?