Freigeben über


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:

  1. Innerhalb der Ticketerstellungsanforderung
  2. 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 DataObjectangegeben.

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.