Generieren Sie manuelle Backfill-Anfragen von einem Back-End-Dienst - 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.

Generieren Sie manuelle Backfill-Anfragen von einem Back-End-Dienst

Als Alternative zum Senden von Backfill-Anforderungen von einem Spielserver können Sie diese auch von einem clientseitigen Spieleservice aus versenden. Um diese Option zu nutzen, muss der clientseitige Service Zugriff auf aktuelle Daten zur Aktivität der Spielsitzungen und zu den Spielerverbindungen haben. Wenn Ihr Spiel einen Sitzungsverzeichnisdienst verwendet, könnte dies eine gute Wahl sein.

In diesem Thema wird davon ausgegangen, dass Sie bereits die notwendigen FlexMatch-Komponenten erstellt und erfolgreich Matchmaking-Prozesse zu Ihrem Spieleserver und einem clientseitigen Spieleservice hinzugefügt haben. Weitere Details zur Einrichtung von FlexMatch finden Sie unter Roadmap: Fügen Sie einer Amazon GameLift Servers Hosting-Lösung Matchmaking hinzu.

Um Match-Backfill für Ihr Spiel zu ermöglichen, fügen Sie die folgenden Funktionen hinzu:

Wie bei anderen Client-Funktionen verwendet ein clientseitiger Spieledienst das SDK mit API. AWS Amazon GameLift Servers Das SDK ist in C++, C # und mehreren anderen Sprachen erhältlich. Eine allgemeine Beschreibung des Clients finden Sie in der Amazon GameLift Servers API-Referenz APIs, in der die Service-API für Amazon GameLift Servers Aktionen beschrieben wird und Links zu sprachspezifischen Referenzhandbüchern enthält.

Um einen clientseitigen Spieleservice einzurichten, mit dem Sie ein Backfill für Spiele durchführen können, führen Sie die folgenden Aufgaben aus.

  1. Lösen Sie eine Anforderung für das Backfilling aus. Normalerweise löst ein Spiel eine Backfill-Anforderung aus, wenn ein passendes Spiel einen oder mehrere leere Spieler-Slots hat. Sie können Backfill-Anforderungen an bestimmte Umstände knüpfen, z. B. um kritische Rollen zu besetzen oder Teams auszugleichen. Wahrscheinlich möchten Sie auch das Backfilling auf der Grundlage des Alters einer Spielsitzung einschränken. Unabhängig vom Auslöser benötigen Sie mindestens die folgenden Informationen. Sie können diese Informationen aus dem Objekt der Spielsitzung (GameSession) abrufen, indem Sie DescribeGameSessionsmit einer Spielsitzungs-ID aufrufen.

    • Anzahl der momentan leeren Spieler-Slots. Dieser Wert kann aus dem maximalen Spielerlimit einer Spielsitzung und der aktuellen Spieleranzahl berechnet werden. Die aktuelle Spieleranzahl wird aktualisiert, wenn Ihr Spielserver mit dem Amazon GameLift Servers-Service Kontakt aufnimmt, um eine neue Spielerverbindung zu validieren oder um einen verlorenen Spieler zu melden.

    • Creation policy (Erstellungsrichtlinie). Diese Einstellung gibt an, ob die Spielsitzung im Moment neue Spieler akzeptiert.

    Das Spielsitzungsobjekt enthält weitere potenziell nützliche Informationen, darunter die Startzeit der Spielsitzung, benutzerdefinierte Spieleigenschaften und Matchmaker-Daten.

  2. Erstellen Sie eine Backfill-Anforderung. Fügen Sie Code hinzu, um Match-Backfill-Anforderungen zu erstellen und an einen FlexMatch-Matchmaker zu senden. Backfill-Anfragen werden mit dem folgenden Client APIs bearbeitet:

    Um eine Backfill-Anforderung zu erstellen, rufen Sie StartMatchBackfill mit den folgenden Informationen auf. Eine Backfill-Anforderung ähnelt einer Matchmaking-Anforderung (siehe Fordere Matchmaking für Spieler an), identifiziert aber auch die bestehende Spielsitzung. Um eine Backfill-Anforderung abzubrechen, rufen Sie StopMatchmaking mit der Ticket-ID der Backfill-Anforderung auf.

    • Ticket-ID — Geben Sie eine Matchmaking-Ticket-ID an (oder entscheiden Sie sich für eine automatische Generierung). Sie können denselben Mechanismus verwenden, um Tickets sowohl Matchmaking- als auch IDs Backfill-Anfragen zuzuweisen. Tickets für Matchmaking und Backfilling werden auf die gleiche Weise verarbeitet.

    • Matchmaker — Identifizieren Sie den Namen einer zu verwendenden Matchmaking-Konfiguration. Im Allgemeinen werden Sie den gleichen Matchmaker verwenden wollen, der auch für die Erstellung des ursprünglichen Matchs verwendet wurde. Diese Informationen befinden sich in einer MatchmakerData Eigenschaft des Spielsitzungsobjekts (GameSession) unter der Matchmaking-Konfiguration ARN. Der Namenswert ist die Zeichenkette, die auf ""matchmakingconfiguration/" folgt. (Im ARN-Wert "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MM-4v4" ist der Matchmaking-Configuration-Name z. B. "MM-4v4".)

    • ARN für die Spielsitzung — Geben Sie an, dass die Spielsitzung wieder aufgefüllt werden soll. Verwenden Sie die GameSessionId-Eigenschaft des Spielsitzungsobjekts. Diese ID verwendet den ARN-Wert, den Sie benötigen. Matchmaking-Tickets (MatchmakingTicket) für Backfill-Anfragen haben während der Bearbeitung die Spielsitzungs-ID; Tickets für neue Matchmaking-Anfragen erhalten erst dann eine Spielsitzungs-ID, wenn das Spiel platziert wurde. Das Vorhandensein einer Sitzungs-ID bei der Partie ist eine Möglichkeit, den Unterschied zwischen Tickets für neue Spiele und Tickets für Backfills zu erkennen.

    • Spielerdaten — Füge Spielerinformationen (Spieler) für alle aktuellen Spieler der Spielsitzung hinzu, die du auffüllst. Diese Informationen ermöglichen es dem Matchmaker, die bestmöglichen Spiele für die Spieler zu finden, die sich gerade in der Spielsitzung befinden. Sie müssen die Teammitgliedschaft für jeden Spieler angeben. Geben Sie kein Team an, wenn Sie kein Backfill verwenden. Wenn Ihr Spielserver den Verbindungsstatus des Spielers korrekt gemeldet hat, sollten Sie diese Daten wie folgt erfassen können:

      1. Rufen Sie DescribePlayerSessions() mit der Spielsitzungs-ID auf, um alle Spieler zu finden, die derzeit mit der Spielsitzung verbunden sind. Jede Spielersitzung umfasst eine Spieler-ID. Sie können einen Statusfilter hinzufügen, um nur aktive Spielersitzungen abzurufen.

      2. Ruft Spielerdaten aus dem Objekt (GameSession), der MatchmakerData Eigenschaft der Spielsitzung ab (sieheÜber Matchmaker-Daten. Verwenden Sie den Spieler, den Sie im vorherigen Schritt IDs erworben haben, um nur Daten für aktuell verbundene Spieler abzurufen. Da die Matchmaker-Daten beim Ausscheiden von Spielern nicht aktualisiert werden, müssen Sie die Daten der aktuellen Spieler extrahieren.

      3. Sammeln Sie neue Latenzwerte von allen aktuellen Spielern und fügen Sie diese in das Player-Objekt ein, wenn der Matchmaker Latenzdaten anfordert. Wenn Latenzdaten weggelassen werden und der Matchmaker eine Latenzregel hat, wird die Anfrage nicht erfolgreich zugeordnet. Backfill-Anforderungen erfordern Latenzdaten nur für die Region, in der sich die Spielsitzung gerade befindet. Sie können die Region einer Spielsitzung aus der GameSessionId-Eigenschaft des GameSession-Objekts abrufen. Dieser Wert ist ein ARN, der die Region enthält.

  3. Verfolgen Sie den Status einer Backfill-Anforderung. Fügen Sie Code hinzu, um den Status von Matchmaking-Tickets zu überprüfen. Sie können den eingerichteten Mechanismus verwenden, um Tickets für neue Matchmaking-Anforderungen zu verfolgen (siehe Verfolgen Sie Matchmaking-Ereignisse), indem Sie die Ereignisbenachrichtigung (empfohlen) oder das Polling nutzen. Obwohl Sie keine Spielerakzeptanz-Aktivität mit Backfill-Anforderungen auslösen müssen und die Spielerinformationen auf dem Spielserver aktualisiert werden, müssen Sie dennoch den Ticketstatus überwachen, um Anforderungsfehler und Neusendungen zu verarbeiten.

    Ein Matchmaker kann jeweils nur eine Match-Backfill-Anforderung aus einer Spielsitzung verarbeiten. Wenn Sie eine Anforderung abbrechen möchten, rufen Sie StopMatchmaking auf. Wenn Sie eine Anforderung ändern müssen, rufen Sie StopMatchmaking auf und senden Sie dann eine aktualisierte Anforderung.

    Sobald eine Match-Backfill-Anforderung erfolgreich ist, erhält Ihr Spielserver ein aktualisiertes GameSession-Objekt und übernimmt die Aufgaben, die erforderlich sind, um neue Spieler in die Spielsitzung einzubinden. Weitere Informationen finden Sie unter Aktualisiere die Spieldaten auf dem Spielserver.