FlexMatchZu einem Spielclient hinzufügen - Amazon GameLift

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.

FlexMatchZu einem Spielclient hinzufügen

In diesem Thema wird beschrieben, wie Sie Ihren clientseitigen Spielediensten FlexMatch Matchmaking-Unterstützung hinzufügen können. Der Prozess ist im Wesentlichen derselbe, unabhängig davon, ob Sie es FlexMatch mit Amazon GameLift Managed Hosting oder mit einer anderen Hosting-Lösung verwenden. Weitere Informationen zu FlexMatch und zum Einrichten eines benutzerdefinierten Matchmakers für Ihre Spiele finden Sie unter folgenden Themen:

Füge die folgende Funktionalität hinzu, um FlexMatch Matchmaking in deinem Spiel zu aktivieren:

  • Bereite dich darauf vor, Matchmaking für einen oder mehrere Spieler anzufordern (erforderlich).

  • Verfolge den Status von Matchmaking-Anfragen (erforderlich).

  • Bitten Sie den Spieler um die Annahme eines vorgeschlagenen Spiels (optional).

  • Nachdem eine Spielsitzung für das neue Spiel erstellt wurde, rufen Sie die Verbindungsinformationen des Spielers ab und treten Sie dem Spiel bei.

Bereite dich darauf vor, Matchmaking für Spieler anzufordern

Wir empfehlen dringend, dass dein Spielclient Matchmaking-Anfragen über einen clientseitigen Spieledienst stellt. Durch Verwenden einer vertrauenswürdigen Quelle können Sie sich leichter gegen Hacking-Versuche und gefälschte Spielerdaten schützen. Wenn Ihr Spiel einen Sitzungsverzeichnisdienst hat, ist dies eine gute Option für die Bearbeitung von Matchmaking-Anforderungen.

Führen Sie zur Vorbereitung Ihres Client-Service die folgenden Aufgaben aus:

  • Fügen Sie die GameLift Amazon-API hinzu. Ihr Kundenservice verwendet Funktionen der GameLift Amazon-API, die Teil des AWS SDK ist. Weitere Informationen zum GameLift SDK und zum Herunterladen der neuesten Version finden Sie unter Amazon AWS SDKs for Client Services. Fügen Sie dieses SDK zum Service-Projekt Ihres Spiele-Clients hinzu.

  • Richten Sie ein Matchmaking-Ticketsystem ein. Allen Matchmaking-Anforderungen muss eine eindeutige Ticket-ID zugewiesen werden. Sie benötigen einen Methode, mit der Sie eindeutige IDs generieren und sie neuen Match-Anforderungen zuweisen können. Für eine Ticket-ID kann ein beliebiges Zeichenfolgenformat mit maximal 128 Zeichen verwendet werden.

  • Fordern Sie Matchmaker-Informationen an. Fordern Sie den Namen der Matchmaking-Konfiguration an, die Sie verwenden möchten. Außerdem benötigen Sie die Liste der erforderlichen Spielerattribute des Matchmakers, die in der Regelmenge des Matchmakers definiert sind.

  • Rufen Sie Spielerdaten ab. Richten Sie eine Möglichkeit ein, relevante Daten für jeden Spieler abzurufen. Dazu gehören Spieler-ID, Spielerattributwerte und aktualisierte Latenzdaten für jede Region, in der der Spieler wahrscheinlich in einem Spiel platziert wird.

  • (Optional) Aktivieren Sie Match-Backfill. Entscheiden Sie, wie Sie Ihre vorhandenen Match-Spiele auffüllen möchten. Wenn als Backfill-Modus Ihrer Matchmaker „manuell“ eingestellt ist, ist es ratsam, Backfill-Unterstützung zu Ihrem Spiel hinzuzufügen. Wenn als Backfill-Modus „automatisch“ eingestellt ist, benötigen Sie möglicherweise eine Methode, mit der Sie ihn für einzelne Spielsitzungen ausschalten können. Weitere Informationen zum Verwalten von Match-Backfill finden Sie in Füllt bestehende Spiele auf mit FlexMatch.

Matchmaking für Spieler anfragen

Fügen Sie Code zum Erstellen und Verwalten von Matchmaking-Anforderungen an einen FlexMatch-Matchmaker zu Ihrem Client-Service hinzu. Das Anfordern von FlexMatch Matchmaking ist für Spiele, die FlexMatch mit GameLiftmanaged Amazon-Hosting verwendet werden, und für Spiele, die FlexMatch als eigenständige Lösung verwendet werden, identisch.

Erstellen einer Matchmaking-Anforderung:
  • Rufen Sie die GameLift Amazon-API auf StartMatchmaking. Jede Anforderung muss die folgenden Informationen enthalten.

    Matchmaker

    Der Name der Matchmaking-Konfiguration, die für die Anfrage verwendet werden soll. FlexMatchplatziert jede Anfrage in den Pool für den angegebenen Matchmaker, und die Anfrage wird basierend auf der Konfiguration des Matchmakers bearbeitet. Dies umfasst das Erzwingen eines Zeitlimits, ob die Spieler-Akzeptanz von Matches angefordert werden soll, welche Warteschlange beim Platzieren einer resultierenden Spielsitzung verwendet werden soll usw. Weitere Informationen zu Matchmakern und Regelsätzen finden Sie unter Entwerfen eines FlexMatch Matchmakers.

    Ticket-ID

    Eine der Anforderung zugewiesene eindeutige Ticket-ID. Alles im Zusammenhang mit der Anforderung, u. a. auch Ereignisse und Benachrichtigungen, referenziert die Ticket-ID.

    Spielerdaten

    Liste der Spieler, für die Sie ein Match erstellen möchten. Wenn einer der Spieler in der Anforderung die Match-Anforderungen nicht erfüllt, führt die Matchmaking-Anforderung basierend auf den Match-Regeln und Latenzminimalen nie zu einem erfolgreichen Match. Sie können bis zu zehn Spieler in eine Match-Anforderung aufnehmen. Wenn mehrere Spieler in einer Anforderung vorhanden sind, versucht FlexMatch, ein einzelnes Match zu erstellen und alle Spieler demselben Team zuzuweisen (zufällig ausgewählt). Wenn eine Anforderung zu viele Spieler enthält, um in eines der Match-Teams zu passen, wird die Anforderung nicht abgeglichen. Wenn Sie beispielsweise Ihren Matchmaker so eingerichtet haben, dass 2v2-Matches (zwei Teams mit zwei Spielern) erstellt werden, können Sie keine Matchmaking-Anforderung senden, die mehr als zwei Spieler enthält.

    Anmerkung

    Ein Spieler (identifiziert durch die Spieler-ID) kann jeweils nur in eine aktive Matchmaking-Anforderung aufgenommen werden. Wenn Sie eine neue Anforderung für einen Spieler erstellen, werden alle aktiven Matchmaking-Tickets mit derselben Spieler-ID automatisch storniert.

    Schließen Sie für jeden aufgelisteten Spieler die folgenden Daten ein:

    • Spieler-ID — Jeder Spieler muss eine eindeutige Spieler-ID haben, die du generierst. Siehe Generieren von Spieler-IDs.

    • Spielerattribute — Wenn der verwendete Matchmaker Spielerattribute verlangt, muss die Anfrage diese Attribute für jeden Spieler angeben. Die erforderlichen Spielerattribute sind im Regelsatz des Matchmakers definiert, in dem auch der Datentyp für das Attribut angegeben wird. Ein Spielerattribut ist nur dann optional, wenn der Regelsatz einen Standardwert für das Attribut angibt. Wenn die Match-Anforderung nicht die erforderlichen Attribute für alle Spieler bereitstellt, kann die Matching-Anforderung niemals erfolgreich sein. Weitere Informationen zu Matchmaker-Regelsätzen und Spielerattributen finden Sie unter Erstellen Sie einen FlexMatch Regelsatz und FlexMatch Beispiele für Regelsätze.

    • Spielerlatenzen — Wenn der verwendete Matchmaker eine Regel für die Spielerlatenz hat, muss die Anfrage die Latenz für jeden Spieler angeben. Bei Player-Latenzdaten handelt es sich um eine Liste mit einem oder mehreren Werten pro Spieler. Dadurch wird die Latenzerfahrung des Spielers für Regionen in der Warteschlange des Matchmakers darstellt. Wenn in der Anforderung keine Latenzwerte für einen Spieler enthalten sind, kann der Spieler in kein Match aufgenommen werden. Die Anforderung schlägt fehl.

Abrufen von Match-Anforderungsdetails:
  • Sobald eine Spielanfrage gesendet wurde, können Sie die Details der Anfrage einsehen, indem Sie DescribeMatchmakingmit der Ticket-ID der Anfrage anrufen. Dieser Aufruf gibt Informationen zur Anforderung zurück, u. a. den aktuellen Status. Sobald eine Anforderung erfolgreich abgeschlossen wurde, enthält das Ticket die Informationen, die der Spiele-Client zum Verbinden mit dem Match benötigt.

Abbrechen einer Match-Anforderung:
  • Sie können eine Matchmaking-Anfrage jederzeit stornieren, indem Sie StopMatchmakingmit der Ticket-ID der Anfrage anrufen.

Verfolgen Sie Matchmaking-Events

Richten Sie Benachrichtigungen ein, um Ereignisse zu verfolgen, die Amazon für Matchmaking-Prozesse GameLift ausgibt. Sie können Benachrichtigungen entweder direkt einrichten, indem Sie ein SNS-Thema erstellen, oder indem Sie Amazon EventBridge verwenden. Weitere Informationen zur Einrichtung von Benachrichtigungen finden Sie unter FlexMatchEventbenachrichtigungen einrichten. Nachdem Sie Benachrichtigungen eingerichtet haben, fügen Sie Ihrem Client-Service einen Listener hinzufügen, der die Ereignisse erkennt und gegebenenfalls auf sie reagiert.

Es ist auch eine gute Idee, Benachrichtigungen zu sichern, indem Sie nach einem erheblichen Zeitraum ohne Benachrichtigung regelmäßig Statusaktualisierungen abfragen. Um eine Beeinträchtigung der Matchmaking-Leistung zu minimieren, stellen Sie sicher, mit dem Abfragen mindestens 30 Sekunden ab dem Senden des Matchmaking-Tickets oder der zuletzt erhaltenen Benachrichtigung zu warten.

Rufen Sie ein Matchmaking-Anfrageticket, einschließlich des aktuellen Status, an, indem Sie DescribeMatchmakingmit der Ticket-ID der Anfrage anrufen. Wir empfehlen Abfragen nicht öfter als einmal alle 10 Sekunden. Diese Methode ist nur für Entwicklungsszenarien mit geringem Datenaufkommen bestimmt.

Anmerkung

Vor einer Matchmaking-Nutzung mit hohem Datenaufkommen, wie z. B. bei Vorproduktions-Lasttests, sollten Sie Ihr Spiel mit Ereignisbenachrichtigungen einrichten. Bei allen veröffentlichen Versionen von Spielen sollten unabhängig vom Datenaufkommen Benachrichtigungen verwendet werden. Die Methode der stetigen Abfragen eignet sich nur für Spiele in Entwicklung mit geringer Matchmaking-Nutzung.

Spielerzusage anfragen

Wenn Sie einen Matchmaker mit aktivierter Spieler-Akzeptanz verwenden, fügen Sie Ihrem Client-Service Code zur Verwaltung des Spieler-Akzeptanzvorgangs hinzu. Der Prozess der Verwaltung der Spielerakzeptanz ist bei Spielen, die FlexMatch mit von Amazon GameLift verwaltetem Hosting verwendet werden, und bei Spielen, die FlexMatch als eigenständige Lösung verwendet werden, identisch.

Anfordern der Spieler-Akzeptanz für ein vorgeschlagenes Match:
  1. Stellen Sie fest, wenn ein vorgeschlagenes Match Spieler-Akzeptanz benötigt. Überwachen Sie das Matchmaking-Ticket, um zu erkennen, wann sich der Status in REQUIRES_ACCEPTANCE ändert. Eine Änderung dieses Status löst das FlexMatch Ereignis ausMatchmakingRequiresAcceptance.

  2. Fordern Sie Akzeptanz von allen Spielern an. Erstellen Sie eine Methode, mit der Sie jedem Spieler im Matchmaking-Ticket die vorgeschlagenen Match-Details präsentieren können. Spieler müssen angeben können, ob sie das vorgeschlagene Match annehmen oder ablehnen. Sie können die Spieldetails abrufen, indem Sie anrufen DescribeMatchmaking. Spieler haben begrenzt Zeit zu reagieren, bevor der Matchmaker den Match-Vorschlag zurückzieht und weitersucht.

  3. Melden Sie die Spielerantworten an FlexMatch. Meldet die Antworten der Spieler, indem ihr entweder AcceptMatchmit „Annehmen“ oder „Ablehnen“ anruft. Alle Spieler in einer Matchmaking-Anforderung müssen das Match akzeptieren, damit es weitergeführt wird.

  4. Verarbeiten Sie Tickets mit fehlgeschlagenen Zusagen. Eine Anforderung schlägt fehl, wenn ein oder mehrere Spieler im vorgeschlagenen Match entweder das Match abgelehnt oder nicht innerhalb des Zeitlimits für die Akzeptanz reagiert haben. Tickets für Spieler, die das Spiel angenommen haben, werden automatisch in den Ticketpool zurückgeführt. Tickets für Spieler, die das Spiel nicht akzeptiert haben, erhalten den Status FAILURE und werden nicht mehr bearbeitet. Bei Tickets mit mehreren Spielern gilt: Wenn ein Spieler auf dem Ticket das Spiel nicht akzeptiert hat, ist das gesamte Ticket ungültig.

Stellen Sie eine Verbindung zu einem Spiel her

Füge deinem Kundenservice Code hinzu, um ein erfolgreich gefundenes Match (Status COMPLETED oder EreignisMatchmakingSucceeded) zu bearbeiten. Dies umfasst die Benachrichtigung der Spieler des Matches und die Übergabe von Verbindungsinformationen an deren Spiele-Clients.

Bei Spielen, die von Amazon GameLift verwaltetes Hosting verwenden, werden die Verbindungsinformationen zur Spielsitzung dem Matchmaking-Ticket hinzugefügt, wenn eine Matchmaking-Anfrage erfolgreich erfüllt wurde. Rufen Sie ein ausgefülltes Matchmaking-Ticket an DescribeMatchmaking. Verbindungsinformationen umfassen die IP-Adresse und den Port der Spielsitzung sowie eine Spielersitzungs-ID für jede Spieler-ID. Weitere Informationen finden Sie unter GameSessionConnectionInfo. Ihr Spielclient kann diese Informationen verwenden, um sich direkt mit der Spielsitzung für das Spiel zu verbinden. Die Verbindungsanfrage sollte eine Spielersitzungs-ID und eine Spieler-ID enthalten. Diese Daten verknüpfen den verbundenen Spieler mit den Spieldaten der Spielsitzung, zu denen auch Teamzuweisungen gehören (siehe GameSession).

Für Spiele, die andere Hosting-Lösungen verwenden, einschließlich Amazon GameLift FleetIQ, müssen Sie einen Mechanismus einbauen, der es Match-Spielern ermöglicht, sich mit der entsprechenden Spielsitzung zu verbinden.

Beispiel für Matchmaking-Anfragen

Die folgenden Codefragmente erstellen Matchmaking-Anfragen für verschiedene Matchmaker. Wie beschrieben, muss eine Anforderung die Spielerattribute bereitstellen, die laut dem definierten Matchmaker-Regelsatz für den aktuell verwendeten Matchmaker erforderlich sind. Das bereitgestellte Attribut muss den gleichen Datentyp, die gleiche Zahl (N) oder die gleiche Zeichenfolge (S) wie im Regelsatz definiert verwenden.

# Uses matchmaker for two-team game mode based on player skill level def start_matchmaking_for_cowboys_vs_aliens(config_name, ticket_id, player_id, skill, team): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill} }, "PlayerId": player_id, "Team": team }], TicketId=ticket_id) # Uses matchmaker for monster hunter game mode based on player skill level def start_matchmaking_for_players_vs_monster(config_name, ticket_id, player_id, skill, is_monster): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "desiredSkillOfMonster": {"N": skill}, "wantsToBeMonster": {"N": int(is_monster)} }, "PlayerId": player_id }], TicketId=ticket_id) # Uses matchmaker for brawler game mode with latency def start_matchmaking_for_three_team_brawler(config_name, ticket_id, player_id, skill, role): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "character": {"S": [role]}, }, "PlayerId": player_id, "LatencyInMs": { "us-west-2": 20} }], TicketId=ticket_id) # Uses matchmaker for multiple game modes and maps based on player experience def start_matchmaking_for_multi_map(config_name, ticket_id, player_id, skill, maps, modes): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "experience": {"N": skill}, "gameMode": {"SL": modes}, "mapPreference": {"SL": maps} }, "PlayerId": player_id }], TicketId=ticket_id)