Schnellstart: Matchmaking-REST-API
Notiz
Es wird dringend empfohlen, die Multiplayer-SDKs zu verwenden, da sie Echtzeitbenachrichtigungen unterstützen, die den Bedarf an Abrufen reduzieren. Dadurch wird die Matchmaking-Erfahrung verbessert und Verzögerungen reduziert. Schnellstart: Client SDK
Diese Schnellstartanleitung führt Sie durch den gesamten Prozess der Integration des Matchmaking-Features. Alle Codebeispiele in dieser Schnellstartanleitung gelten für Unity. Die Konzepte und der Ablauf gelten jedoch (im Allgemeinen) auch für andere Plattformen.
Je nach Spieldesign sollten Sie den Matchmaking-Abschnitt für einzelneund mehrere Benutzer in Betracht ziehen.
In diesem Tutorial wird veranschaulicht, wie Sie ein Ticket an eine bestimmte Warteschlange übermitteln, um ein Spiel zu finden. Eine Warteschlange ist wahrscheinlich einem Spielmodus oder mehreren Spielmodi zugeordnet (z. B. einem Capture the Flag-Modus und einem König des Hügelmodus in derselben Warteschlange).
Der Matchmaking-Dienst kümmert sich um die Suche nach einer Übereinstimmung zwischen Tickets in einer Warteschlange. Wenn ein Spiel gefunden wird, muss Ihr Titel die Spieler für das Gameplay miteinander verbinden.
Konfigurieren einer Matchmaking-Warteschlange in Game Manager
In der Schnellstartanleitung wird davon ausgegangen, dass Sie Ihre Warteschlangen in Game Manager konfiguriert haben. Ausführliche Informationen zum Einrichten einer Warteschlange finden Sie unter Konfigurieren von Matchmaking-Warteschlangen.
Einzelbenutzerticket-Matchmaking
Wenn Ihr Spiel über einen 1-gegen-1-Spielmodus verfügt oder einen einzelnen Benutzer unterstützt, der selbst in den Matchmaking eintritt, sollten Sie die Matchmaking für einzelne Benutzer in Betracht ziehen. Die Zuordnung einzelner Benutzer folgt dem unten dargestellten Muster.
Erstellen eines Matchmaking-Tickets
Ein Benutzer erstellt mithilfe von CreateMatchmakingTicket ein Matchmaking-Ticket. Wenn die Ticketerstellung erfolgreich ist, gibt der Dienst eine zurück TicketId
.
Für die Ticketerstellung müssen Sie die Creator
(Identität und Attribute des Benutzers) GiveUpAfterSeconds
(die Zeit in Sekunden, bevor der Dienst den Abgleich mit dem Ticket aufgibt) und die angeben, in der QueueName
eine Übereinstimmung gefunden werden soll.
Das Creator
Feld muss die Benutzerattribute enthalten, die für die Warteschlangenkonfiguration erforderlich sind, die mit übereinstimmt QueueName
. Ein guter Wert für GiveUpAfterSeconds
die Zeit ist 120 Sekunden, um zu verhindern, dass Benutzer selbst aufgeben.
PlayFabMultiplayerAPI.CreateMatchmakingTicket(
new CreateMatchmakingTicketRequest
{
// The ticket creator specifies their own player attributes.
Creator = new MatchmakingPlayer
{
Entity = new EntityKey
{
Id = "<Entity ID goes here>",
Type = "<Entity type goes here>",
},
// Here we specify the creator's attributes.
Attributes = new MatchmakingPlayerAttributes
{
DataObject = new
{
Skill = 24.4
},
},
},
// Cancel matchmaking if a match is not found after 120 seconds.
GiveUpAfterSeconds = 120,
// The name of the queue to submit the ticket into.
QueueName = "myqueue",
},
// Callbacks for handling success and error.
this.OnMatchmakingTicketCreated,
this.OnMatchmakingError);
Überprüfen der status des Matchmaking-Tickets
Sie müssen den Dienst von TicketId
abfragen, um auf das Status
des Tickets in der Matchmaking zuzugreifen. Rufen Sie dazu GetMatchmakingTicket auf. Sie können bis zu 10 Mal pro Minute abfragen. Fragen Sie instance alle 6 Sekunden nach dem status Ticket ab. Das Abrufen der status Ihres Tickets kann zu Verzögerungen führen. Aus diesem Grund wird dringend empfohlen, die Verwendung der Multiplayer SDK-Methode in Betracht zu ziehen, die hier schnellstart – Client SDK beschrieben wird. Dies vermeidet die Notwendigkeit, abfragen zu müssen, indem die Echtzeitbenachrichtigungsfunktion verwendet wird.
Wenn sich die status des Tickets in Matched
ändert, kann Ihr Client den Abruf des Tickets beenden. Ab diesem Zeitpunkt enthält das Ticket die MatchId
.
PlayFabMultiplayerAPI.GetMatchmakingTicket(
new GetMatchmakingTicketRequest
{
TicketId = "<ticket ID goes here>",
QueueName = "myqueue",
},
this.OnGetMatchmakingTicket,
this.OnMatchmakingError);
Abrufen der Übereinstimmung
Rufen Sie von Ihrem Client getMatch mit dem MatchId
in der Antwort von GetMatchmakingTicket angegebenen auf. Diese Übereinstimmung enthält die Liste der Benutzer, die zusammengeglichen werden.
PlayFabMultiplayerAPI.GetMatch(
new GetMatchRequest
{
MatchId = "<match ID goes here>",
QueueName = "myqueue",
},
this.OnGetMatch,
this.OnMatchmakingError);
Stornieren eines Matchmaking-Tickets
Wenn Ihr Client aus irgendeinem Grund den Matchmaking-Prozess abbrechen möchte, bevor GiveUpAfterSeconds
er erreicht wird, rufen Sie CancelMatchmakingTicket mit auf TicketId
. Wenn noch keine Übereinstimmung gefunden wurde, wird das Ticket aus dem Matchmaking-Prozess genommen, und seine status ändert sich in Canceled
.
PlayFabMultiplayerAPI.CancelMatchmakingTicket(
new CancelMatchmakingTicketRequest
{
QueueName = "myqueue",
TicketId = "<ticket ID goes here>",
},
this.OnTicketCanceled,
this.OnMatchmakingError);
Matchmaking für mehrere Benutzertickets
Wenn Ihr Spiel es Gruppen von Spielern ermöglicht, gemeinsam in eine Matchmaking-Warteschlange zu gehen, müssen einige weitere Dinge getan werden, um in die Matchmaking zu gelangen. Wir empfehlen, dass Ihr Titel einen Gruppenleiter (den Ersteller) zuweist, um unnötige Aufrufe zu vermeiden. Der Leiter erstellt das Ticket, aber alle Mitglieder der Gruppe müssen zustimmen, dem Ticket beizutreten.
Erstellen eines Matchmaking-Tickets (mehrere Benutzer)
Die Gruppe muss einen Ticketersteller in Ihrem Titel auswählen. Der Ersteller erstellt mithilfe von CreateMatchmakingTicket ein Matchmaking-Ticket, das bei Erfolg ein TicketId
zurückgibt. Für die Ticketerstellung müssen Sie ( Creator
Identität und Attribute des Benutzers), GiveUpAfterSeconds
(die Zeit in Sekunden, bevor der Dienst den Abgleich mit dem Ticket aufgibt), MembersToMatchWith
(die Identitäten der anderen Gruppenmitglieder) und die QueueName
angeben, in der eine Übereinstimmung gefunden werden soll.
Das Creator
Feld muss die Benutzerattribute enthalten, die für die Warteschlangenkonfiguration erforderlich sind, die mit übereinstimmt QueueName
. Ein guter Wert für GiveUpAfterSeconds
die Zeit ist 120 Sekunden, um zu verhindern, dass Benutzer selbst aufgeben.
Gruppenmitglieder treten dem Match-Ticket bei
Nachdem das Übereinstimmungsticket erstellt wurde, müssen die anderen Mitglieder der Gruppe es beitreten, um den Matchmaking-Prozess zu durchlaufen. Zu diesem Zeitpunkt befindet sich das Ticket im WaitingForPlayers
status. Es beginnt erst mit dem Abgleich mit anderen Tickets, wenn alle MembersToMatchWith
dem Ticket beigetreten sind.
Damit Mitglieder beitreten können, muss die Creator
über TicketId
Ihren Titel für die anderen Mitglieder freigeben. Jedes Mitglied ruft dann JoinMatchmakingTicket auf und stellt seine eigenen erforderlichen Attribute bereit. Nachdem alle Mitglieder dem Ticket beigetreten sind, wird WaitingForMatch
das Ticket status zu .
PlayFabMultiplayerAPI.JoinMatchmakingTicket(
new JoinMatchmakingTicketRequest
{
TicketId = "<ticket ID>",
QueueName = "myqueue",
Member = new MatchmakingPlayer
{
Entity = new EntityKey
{
Id = "<Entity ID goes here>",
Type = "<Entity type goes here>",
},
Attributes = new MatchmakingPlayerAttributes
{
DataObject = new
{
Skill = 19.3
},
},
}
},
this.OnJoinMatchmakingTicket,
this.OnMatchmakingError);
Der Rest des Prozesses ist der gleiche wie bei der Zuordnung von Einzelbenutzertickets.
Verbinden Ihrer Spieler
Sobald Ihre Spieler eine Übereinstimmung gefunden haben, sollten sie sich gegenseitig anschließen – entweder über einen Server oder über Peer-to-Peer-Verbindungen.
Wenn Sie einen dedizierten Server verwenden, können Sie sich auf die Match-ID verlassen, um die Gruppe der Spieler, in denen sie sich befinden sollten, eindeutig zu identifizieren. Wenn Du die Multiplayer-Server von PlayFab verwendest, GetMatch
stellt einen Server und port bereit, mit dem deine Spieler eine Verbindung herstellen können.
Weitere Informationen finden Sie unter Integrieren mit PlayFab Multiplayer-Servern .
Ab diesem Release wird peer-to-peer-Verbindung derzeit nicht offiziell vom Matchmaking unterstützt. Wenn Peer-to-Peer erforderlich ist, erwägen Sie die Verwendung von Playfab Party oder einer Zwischenumgehung. Kontaktieren Sie uns, um weitere Unterstützung zu diesem Thema zu erfahren.
Abschluss
In dieser Schnellstartanleitung sollten Sie nun über einen erfolgreichen Matchmaking-Flow in Ihrem Spiel verfügen. Darüber hinaus sollten Sie Folgendes berücksichtigen:
- Wie Ihr Titel die Gruppenbildung behandelt.
- Was Ihr Titel anzeigt, während Benutzer auf eine Übereinstimmung warten.
- Behandeln von Fehlern und Wiederholungen.