Angeben von Attributen mit Ihren Tickets
Regeln bestimmen, welche Tickets übereinstimmen, basierend auf den attributen, die von den Spielern angegeben werden. Diese Attribute können auf zwei Arten angegeben werden:
- Innerhalb der Ticketerstellungsanforderung
- In der Entität des Spielers
In diesem Tutorial wird beschrieben, wie Diese Attribute angegeben werden.
Angeben innerhalb der Ticketerstellungsanforderung
Für Regeln, die mit dem Attributtyp "User" konfiguriert sind, werden Attribute in einer CreateMatchmakingTicket
Anforderung zusammen mit der Playerentität innerhalb eines Attributs DataObject
angegeben.
POST https://{{TitleId}}.playfabapi.com/Match/CreateMatchmakingTicket
{
"Creator": {
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
},
"Attributes": {
"DataObject": {
"mu": 16.0,
"sigma": 1.8,
"nestExample": {
"exp": 1500
}
}
}
},
"MembersToMatchWith": [],
"GiveUpAfterSeconds": 2,
"QueueName": "SkillRuleQueue"
}
Im Folgenden finden Sie ein Beispiel für eine Warteschlangenkonfiguration mit einem DifferenceRule
. Diese Regel enthält einen Attributpfad und eine Quelle, die den durch die CreateMatchmakingTicket
obige Anforderung angegebenen Wert 16.0 übernimmt.
"MatchmakingQueue": {
"Name": "SkillRuleQueue",
"MinMatchSize": 2,
"MaxMatchSize": 2,
"ServerAllocationEnabled": false,
"Rules": [
{
"Type": "DifferenceRule",
"Difference": 3,
"MergeFunction": "Average",
"Attribute": {
"Path": "mu",
"Source": "User"
},
"AttributeNotSpecifiedBehavior": "MatchAny",
"Weight": 1,
"Name": "SkillRule",
"SecondsUntilOptional": 10
}
]
}
Notiz
Regeln können mit einem JSON-Pfad durch die DataObject
navigieren. Wenn Sie das Feld Path durch "nestExample.exp" ersetzen, verwendet die Regel den Wert 1500 für das oben erstellte Ticket.
Angeben über Playerentitäten
Für Regeln mit dem Attributtyp "Player Entity" werden Attribute über einen separaten Aufruf der SetObjects
API angegeben.
Dadurch können Daten für einen Benutzer gespeichert werden, anstatt den Titel bei jedem Ticketerstellungsaufruf anzugeben.
Dies kann für Werte sinnvoller sein, die für einen Benutzer beibehalten werden oder die benutzern nicht als vertrauenswürdig eingestuft werden können. Ein Beispiel für diesen SetObjects
Aufruf ist unten dargestellt.
POST https://{{TitleID}}.playfabapi.com/Object/SetObjects
{
"Objects": [
{
"ObjectName": "playerSkill",
"DataObject": {
"skillDetail": {
"mu": 16.0,
"sigma": 2.0
}
}
}
],
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
Eine Warteschlange mit der folgenden Konfiguration würde den Wert 16.0 zur Verwendung in ihrer DifferenceRule
Regel abrufen, wenn ein Ticket mit diesem Spieler erstellt wird.
Notiz
Path
Im Feld ist das erste Element nach dem Stamm der ObjectName
, sodass Sie auswählen können, auf welches gespeicherte Objekt verwiesen werden soll.
"MatchmakingQueue": {
"Name": "PlayerEntityRuleQueue",
"MinMatchSize": 2,
"MaxMatchSize": 2,
"ServerAllocationEnabled": false,
"Rules": [
{
"Type": "DifferenceRule",
"Difference": 1,
"MergeFunction": "Average",
"Attribute": {
"Path": "$.playerSkill.skillDetail.mu",
"Source": "PlayerEntity"
},
"AttributeNotSpecifiedBehavior": "MatchAny",
"Weight": 1,
"Name": "SkillRule",
"SecondsUntilOptional": 10
}
]
}
Spezielle Formate
Die meisten Regeln verwenden Attribute, die entweder Zeichenfolgen oder numerisch sind, und sind einfach diese Werte im JSON-Format. Regeln, für die komplexere Attribute übergeben werden müssen, sind unten aufgeführt.
Regel für die Regionsauswahl
Eine Regel für die Regionsauswahl erfordert ein Array von Latenzmessungen mit dem angegebenen Schema. Das folgende Beispiel ist das erwartete Attributformat für eine Regionsauswahlregel, das zusammen mit den beiden Attributen angezeigt wird, die im Anforderungsbeispiel für den CreateMatchmakingTicket
Vergleich verwendet werden.
POST https://{{TitleId}}.playfabapi.com/Match/CreateMatchmakingTicket
{
"Creator": {
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
},
"Attributes": {
"DataObject": {
"mu": 16.0,
"sigma": 1.8,
"Latencies": [
{
"region": "EastUs",
"latency": 150
},
{
"region": "WestUs",
"latency": 400
}
]
}
}
},
"MembersToMatchWith": [],
"GiveUpAfterSeconds": 2,
"QueueName": "ServerEnabledQueue"
}
In diesem Beispiel muss mit dem Feld übereinstimmen, Latencies
auf das Path
das Feld in der Regel verweist. Ein Beispiel für eine Regel, die das Latencies
Feld verwenden würde, ist in der Warteschlange unten enthalten.
"MatchmakingQueue": {
"Name": "ServerEnabledQueue",
"MinMatchSize": 2,
"MaxMatchSize": 2,
"ServerAllocationEnabled": true,
"BuildId": "88b3e315-829c-4b6d-9872-74f427ad5331",
"Rules": [
{
"Type": "RegionSelectionRule",
"MaxLatency": 1000,
"Path": "Latencies",
"Weight": 1,
"Name": "RegionRule",
"SecondsUntilOptional": 60
}
]
}
Notiz
Wenn Sie die Regionsauswahlregel für eine Warteschlange verwenden, für die die Serverzuordnung aktiviert ist, müssen die Regionen gültige Azure-Regionen sein. Die Liste der gültigen Azure-Regionen finden Sie hier.