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):
- [Addition] OpenSkill has been added in place of Glicko2 for the rating system.
- [Addition]
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.
- [Addition]
SetStartingMean(newStartingMean)
has been added.
- [Addition]
ToRatingNumber(openSkillObject)
has been added.
- [Removal] ProfileService has been removed.
- [Removal] Glicko2 has been removed.
- [Removal]
SetGamePlace
has been removed.
- [Removal]
SetStartingRating
has been removed (due to how open skill works, this will not be readdedd).
- [Removal]
SetStartingVolatility
has been removed.
- [Removal]
GetQueueCounts
has been temporarily removed. Will be readded in the future.
- [Change] Significant changes have been made to the internal queue system.
- [Change]
PlayerAddedToQueue
will now fire with the arguments Player
, Map
, RatingType
, RoundedRating
.
- [Change]
PlayerRemovedFromQueue
will now fire with the arguments Player
, Map
, RatingType
, RoundedRating
.
- [Change]
SetStartingDeviation
has been renamed to SetStartingStandardDeviation
- [Change]
GetPlayerGlickoId
has been renamed to GetPlayerRatingId
. It now returns an OpenSkill object. To get a rating number from this, use MatchmakingService:ToRatingNumber(openSkillObject)
.
- [Change]
GetPlayerGlicko
has been renamed to GetPlayerRating
. It now returns an OpenSkill object. To get a rating number from this, use MatchmakingService:ToRatingNumber(openSkillObject)
.
- [Change]
SetPlayerGlickoId
has been renamed to SetPlayerRatingId
. Its third parameter is now an OpenSkill object, rather than a glicko object.
- [Change]
SetPlayerGlicko
has been renamed to SetPlayerRating
. Its third parameter is now an OpenSkill object, rather than a glicko object.
- [Change]
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}
- [Change]
QueuePlayerId
now requires a third argument map
which is a map name that is the same as one added with AddGamePlace
.
- [Change]
QueuePlayer
now requires a third argument map
which is a map name that is the same as one added with AddGamePlace
.
- [Change]
QueuePartyId
now requires a third argument map
which is a map name that is the same as one added with AddGamePlace
.
- [Change]
QueueParty
now requires a third argument map
which is a map name that is the same as one added with AddGamePlace
.
- [Change]
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.
- [Change]
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):
- [Change] Queue expansions has been removed for the time being. Will be readded in the future.
- [Change]
SetPlayerInfoId
now has a fifth parameter map
which is the name of the map they queued for.
- [Change]
SetPlayerInfo
now has a fifth parameter map
which is the name of the map they queued for.
Fixes:
- [Fix] Options will now default to
{}
.
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!