We have setup a Team difference rule for our matchmaking that doesn't seem to work properly. We have a maximum team difference for BattleRating set to 15. When starting a 3v3 matchmaking with 2 parties of 3, a match can't be found when the BattleRating of all the members in party 1 is 0 and all the party members in party 2 have a BattleRating of 13. The average BattleRatings of the parties should be 0 and 13, so that's within the 15 range we have set up. Matchmaking does working when the parties have an average BattleRating of 0 and 12.
Here's what the queue looks like:
{ "Name": "MatchmakingRuleBug", "MinMatchSize": 2, "MaxMatchSize": 6, "MaxTicketSize": 3, "ServerAllocationEnabled": false, "TeamDifferenceRules": [{ "Attribute": { "Path": "BattleRating", "Source": "User" }, "Difference": 15.0, "DefaultAttributeValue": 0.0, "Name": "TeamBattleRatingRule" } ], "Teams": [{ "Name": "Team1", "MinTeamSize": 1, "MaxTeamSize": 3 }, { "Name": "Team2", "MinTeamSize": 1, "MaxTeamSize": 3 } ], "StatisticsVisibilityToPlayers": { "ShowNumberOfPlayersMatching": false, "ShowTimeToMatch": false } }
Here's the CreateServerMatchmakingTicket request of the first party:
{ "Members": [{ "Entity": { "Id": "Player1ID", "Type": "title_player_account" }, "Attributes": { "DataObject": { "BattleRating": 0 } } }, { "Entity": { "Id": "Player2ID", "Type": "title_player_account" }, "Attributes": { "DataObject": { "BattleRating": 0 } } }, { "Entity": { "Id": "Player3ID", "Type": "title_player_account" }, "Attributes": { "DataObject": { "BattleRating": 0 } } } ], "GiveUpAfterSeconds": 30, "QueueName": "MatchmakingRuleBug" }
CreateServerMatchmakingTicket request for second party:
{ "Members": [{ "Entity": { "Id": "Player4ID", "Type": "title_player_account" }, "Attributes": { "DataObject": { "BattleRating": 13 } } }, { "Entity": { "Id": "Player5ID", "Type": "title_player_account" }, "Attributes": { "DataObject": { "BattleRating": 13 } } }, { "Entity": { "Id": "Player6ID", "Type": "title_player_account" }, "Attributes": { "DataObject": { "BattleRating": 13 } } } ], "GiveUpAfterSeconds": 30, "QueueName": "MatchmakingRuleBug" }
This should create a match between the 2 parties, but it doesn't. If you replace the BattleRating of all players in the second party with 12, matchmaking will put both parties against eachother like intended. For some reason, the limit of 15 isn't working.
I've also tested this with 1v1, but the problem seems worse there. A BatteRating difference of 20 somehow still creates a match, even though it's above the 15 limit we've set. Here are the requests for that:
{ "Members": [{ "Entity": { "Id": "Player1ID", "Type": "title_player_account" }, "Attributes": { "DataObject": { "BattleRating": 0 } } } ], "GiveUpAfterSeconds": 30, "QueueName": "MatchmakingRuleBug" }
{ "Members": [{ "Entity": { "Id": "Player2ID", "Type": "title_player_account" }, "Attributes": { "DataObject": { "BattleRating": 20 } } } ], "GiveUpAfterSeconds": 30, "QueueName": "MatchmakingRuleBug" }
These two tickets have a difference of 20, which is above the 15 limit that we have, so they should not be in a 1v1 match with each other. But PlayFab somehow creates a match for them. What's going on?