Integrieren Sie das Player-Gateway in ein Spiel - Amazon GameLift Servers

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Integrieren Sie das Player-Gateway in ein Spiel

Nachdem du eine Flotte erstellt hast, die für das Player-Gateway aktiviert ist, musst du deinen Spielclient und dein Spiel-Backend aktualisieren, um sie mit dem Player-Gateway zu integrieren. Ihr Spiel-Backend ruft Relay-Endpunkte und Spieler-Gateway-Token ab und stellt sie dann den Spielclients zur Verfügung. Spielclients senden den gesamten UDP-Verkehr an diese Relay-Endpunkte.

Die Integration folgt diesem Aufrufpfad:

  1. Ihr Spiel-Backend ruft die GetPlayerConnectionDetails API auf, um Relay-Endpunkte und Player-Gateway-Token für jeden Spieler in einer Spielsitzung abzurufen.

  2. Ihr Spiel-Backend sendet die Relay-Endpunkte und Spieler-Gateway-Token an den Spielclient.

  3. Dein Spielclient stellt allen ausgehenden UDP-Paketen das Player-Gateway-Token voran und sendet die Pakete an die Relay-Endpunkte.

  4. Das Relay-Netzwerk validiert das Spieler-Gateway-Token und leitet den Datenverkehr an deinen Spieleserver weiter.

  5. Ihr Spieleserver sendet den Datenverkehr über dieselben Relay-Pfade zurück an Ihren Spielclient.

Backend-Integration

Ihr Spiel-Backend muss die GetPlayerConnectionDetails API aufrufen, um Relay-Endpunkte und Player-Gateway-Token für Spieler abzurufen. Das Backend stellt diese Informationen dann den Spielclients zur Verfügung.

GetPlayerConnectionDetails API

Die GetPlayerConnectionDetails API gibt Verbindungsdetails für Spieler in einer Spielsitzung zurück:

Endpunkte und Token weiterleiten

Wenn das Player-Gateway am Standort aktiviert und unterstützt wird, wird Folgendes zurückgegeben:

  • Relay-Endpunkte — Mehrere Relay-Endpunkte (IP-Adresse und Port), die sich je nach Spieler unterscheiden

  • Player-Gateway-Token — Token, das der Client allen UDP-Paketen voranstellen muss (gültig für mindestens 3 Minuten)

  • Ablauf — Zeitstempel für den Ablauf des Player-Gateway-Tokens

Direkte Verbindung

Wenn das Player-Gateway am Standort nicht aktiviert ist oder nicht unterstützt wird, werden die IP-Adresse und der Port des Spielservers zurückgegeben

Dein Spielclient sollte so konzipiert sein, dass er beide Verbindungsarten unterstützt.

Beispiel für einen API-Aufruf:

// C++ example using AWS SDK Aws::GameLift::GameLiftClient client; Aws::GameLift::Model::GetPlayerConnectionDetailsRequest request; request.SetGameSessionId(gameSessionId); request.SetPlayerIds(playerIds); // Vector of player IDs auto outcome = client.GetPlayerConnectionDetails(request); if (outcome.IsSuccess()) { auto result = outcome.GetResult(); auto connectionDetails = result.GetPlayerConnectionDetails(); // Process each player's connection details for (const auto& detail : connectionDetails) { std::string playerId = detail.GetPlayerId(); // Get relay endpoints (IP address and port) auto endpoints = detail.GetEndpoints(); for (const auto& endpoint : endpoints) { std::string ipAddress = endpoint.GetIpAddress(); int port = endpoint.GetPort(); } // Get player gateway token auto token = detail.GetPlayerGatewayToken(); // Get expiration time auto expiration = detail.GetExpiration(); // Send endpoints and token to game client } }

Siehe GetPlayerConnectionDetailsin der Amazon GameLift ServersAPI-Referenz.

Relay-Endpunkte aktualisieren

Rufen Sie GetPlayerConnectionDetails regelmäßig an, um Spielern aktualisierte Endpunkte zur Verfügung zu stellen, wenn die Relay-Endpunkte nicht mehr richtig funktionieren. Wir empfehlen, die API alle 60 Sekunden für alle Spieler in einer Spielsitzung aufzurufen. Um die API-Nutzung zu optimieren, können Sie mehrere Spieler IDs in einem einzigen API-Aufruf stapeln.

Wichtig

Reguläre Refresh-Aufrufe sind der wichtigste Mechanismus, um Spielern aktualisierte Endpunkte zur Verfügung zu stellen. Spieler-Gateway-Token bleiben zwar mindestens 3 Minuten lang gültig, aber durch eine Aktualisierung alle 60 Sekunden wird sichergestellt, dass die Spieler regelmäßig aktualisierte Endpunkte erhalten.

Kundenintegration

Dein Spielclient muss allen ausgehenden UDP-Paketen Spielergateway-Token voranstellen und die Pakete an die bereitgestellten Relay-Endpunkte senden. Das Amazon GameLift Servers Client-SDK SDK for C++ und Unreal Engine bietet Hilfsprogramme, um diese Integration zu vereinfachen.

Anforderungen des Kunden

Um den Traffic über das Spieler-Gateway weiterzuleiten, muss dein Spielclient:

  • Player-Gateway-Token voranstellen — Das Player-Gateway-Token allen ausgehenden UDP-Paketen voranstellen. Player-Gateway-Token dürfen nicht verschlüsselt sein und müssen am Anfang jedes Pakets stehen. Pakete ohne gültiges Player-Gateway-Token werden verworfen.

  • An Relay-Endpunkte senden — Sendet alle UDP-Pakete an die bereitgestellten Relay-Endpunkte.

  • Verbindungsaktivität aufrechterhalten — Stelle sicher, dass entweder der Spielclient ein Paket an den Spieleserver sendet oder der Spieleserver mindestens einmal alle 30 Sekunden ein Paket an den Spieler sendet. Diese Aktivität hält die Verbindung über das Relay-Netzwerk aufrecht.

  • Endpunkt-Updates durchführen — Akzeptieren Sie aktualisierte Relay-Endpunkte und Player-Gateway-Token von Ihrem Backend (empfohlen alle 60 Sekunden) und wechseln Sie zu neuen Endpunkten, ohne die Verbindung zu unterbrechen.

Kunden-SDK

Das Amazon GameLift Servers Client-SDK SDK for C++ und Unreal Engine bietet Hilfsprogramme zur Vereinfachung der Player-Gateway-Integration:

  • Tokenverwaltung — Fügt allen ausgehenden UDP-Paketen Player-Gateway-Token voran.

  • Endpunktauswahl — Leitet den Datenverkehr mithilfe eines konfigurierbaren Algorithmus an Relay-Endpunkte weiter.

  • Aktualisierung der Endpunkte — Plant regelmäßige Rückrufe, um aktualisierte Relay-Endpunkte und Player-Gateway-Token von Ihrem Backend abzurufen.

Algorithmen zur Endpunktauswahl

Das Client-SDK bietet zwei integrierte Algorithmen für die Auswahl des zu verwendenden Relay-Endpunkts:

Fallback-Algorithmus

Verwendet einen Endpunkt, bis er fehlerhaft ist, und wechselt dann zu einem anderen Endpunkt. Ideal für Menüs, Lobbys und rundenbasierte Spiele, bei denen kurze Unterbrechungen akzeptabel sind. Während des Endpunkt-Failovers können Pakete für den konfigurierten Timeout-Zeitraum (Standard: 2 Sekunden) verloren gehen.

Algorithmus für prädiktive Rotation

Durchläuft kontinuierlich alle verfügbaren Endpunkte und prognostiziert Ausfälle, bevor sie auftreten. Ideal für Echtzeit-Gameplays wie Ego-Shooter und Rennspiele, bei denen eine konsistente Paketzustellung entscheidend ist. Erfordert, dass der Spieleserver Nachrichten mit einer konsistenten Frequenz sendet.

Sie können auch benutzerdefinierte Algorithmen implementieren, indem Sie die Basisalgorithmusklasse des SDK erweitern.

SDK-Ressourcen für Kunden

Vollständige Integrationsanweisungen und Beispielcode finden Sie in den folgenden Ressourcen:

C++

Ein Client-SDK SDK for C++ ist unter Amazon GameLift ServersClient-SDK SDK for C++ verfügbar.

Unreal Engine

Ein Plugin für Unreal Engine ist im Amazon GameLift ServersClient-SDK für Unreal Engine verfügbar. Für den Zugriff ist eine Mitgliedschaft in der Epic Games-Organisation am erforderlich. GitHub Einzelheiten findest du unter Unreal Engine GitHub auf.

Testen Sie Ihre Integration

Testen Sie Ihre Player-Gateway-Integration vor dem Einsatz in einer Flotte lokal mit dem Player-Gateway-Testtool. Dieses Tool simuliert die UDP-Proxyinfrastruktur des Player-Gateways und hilft dir dabei, zu überprüfen, ob dein Spiele-Client Spieler-Gateway-Token korrekt voranstellt, den Verkehr über mehrere Endpunkte leitet und mit Netzwerkverschlechterungen umgeht.

Anweisungen zur Einrichtung und Verwendung finden Sie in der Player-Gateway-Test-App unter. GitHub

Best Practices

Halten Sie sich bei der Integration von Player Gateway an die folgenden bewährten Methoden:

  • Endgeräte alle 60 Sekunden aktualisieren — Rufen Sie GetPlayerConnectionDetails alle 60 Sekunden an, um sicherzustellen, dass die Spieler regelmäßig aktualisierte Endpunkte erhalten.

  • Batch-API-Aufrufe — Wenn Sie mehrere Spieler in derselben Spielsitzung aufrufenGetPlayerConnectionDetails, sollten Sie die Aufrufe stapeln, um den API-Overhead zu reduzieren.

  • Aufrechterhaltung der Verbindungsaktivität — Stelle sicher, dass der Datenverkehr mindestens einmal alle 30 Sekunden zwischen dem Spielclient und dem Spieleserver fließt. Das kann entweder client-to-server oder server-to-client Verkehr sein.

  • Gehen Sie ordnungsgemäß mit Endpunkt-Updates um — Wenn Ihr Spielclient aktualisierte Endpunkte vom Backend empfängt, wechseln Sie zu den neuen Endpunkten, ohne die Verbindung des Spielers zu unterbrechen.

  • Wähle den richtigen Algorithmus — Wähle den Algorithmus zur Endpunktauswahl, der den Anforderungen deines Spiels am besten entspricht. Verwenden Sie den Fallback-Algorithmus für rundenbasierte Spiele und den Algorithmus für prädiktive Rotation für Echtzeitspiele.