

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
<a name="match-client"></a>

In diesem Thema wird beschrieben, wie Sie Ihren clientseitigen FlexMatch Spielkomponenten Matchmaking-Funktionen hinzufügen können.

Wir empfehlen dringend, dass dein Spielclient über einen Backend-Spieledienst Matchmaking-Anfragen stellt. Indem du diese vertrauenswürdige Quelle für deine Kommunikation mit dem Amazon GameLift Servers Dienst verwendest, kannst du dich leichter vor Hacking-Versuchen und gefälschten Spielerdaten schützen. Wenn Ihr Spiel einen Sitzungsverzeichnisdienst hat, ist dies eine gute Option für die Bearbeitung von Matchmaking-Anforderungen. Die Verwendung eines Backend-Spieledienstes für alle Aufrufe des Amazon GameLift Servers Dienstes ist eine bewährte Methode, wenn Sie ihn FlexMatch zusammen mit dem Amazon GameLift Servers Hosting und als eigenständigen Dienst verwenden.

Clientseitige Updates sind erforderlich, unabhängig davon, ob Sie ihn FlexMatch zusammen mit Amazon GameLift Servers verwaltetem Hosting oder als eigenständigen Dienst mit einer anderen Hosting-Lösung verwenden. Fügen Sie mithilfe der Service-API fürAmazon GameLift Servers, die Teil des AWS SDK ist, die folgenden Funktionen hinzu:
+ Fordere Spielersuche für einen oder mehrere Spieler an (erforderlich). Je nach deinen Regeln für die Spielerzuweisung sind für diese Anfrage möglicherweise bestimmte spielerspezifische Daten erforderlich, darunter Spielerattribute und Latenz.
+ Verfolge den Status einer Matchmaking-Anfrage (erforderlich). Im Allgemeinen erfordert diese Aufgabe die Einrichtung einer Ereignisbenachrichtigung.
+ Beantragen Sie die Zustimmung eines Spielers für ein geplantes Spiel (optional). Diese Funktion erfordert zusätzliche Interaktion mit einem Spieler, um Spieldetails anzuzeigen und es ihm zu ermöglichen, das Spiel anzunehmen oder abzulehnen.
+ Ruft Verbindungsinformationen zur Spielsitzung ab und tretet dem Spiel bei (erforderlich). Nachdem eine Spielsitzung für das neue Spiel gestartet wurde, rufen Sie die Verbindungsinformationen für die Spielsitzung ab und stellen Sie damit eine Verbindung zur Spielsitzung her.

## Erforderliche clientseitige Aufgaben
<a name="match-client-setup"></a>

Bevor du deinem Spiel clientseitige Funktionen hinzufügen kannst, musst du die folgenden Aufgaben erledigen:
+ **Fügen Sie das AWS SDK zu Ihrem Backend-Service hinzu.** Ihr Back-End-Dienst verwendet Funktionen in der Amazon GameLift Servers API, die Teil des AWS SDK ist. Weitere Informationen [Amazon GameLift Servers SDKs zum AWS SDK und zum Herunterladen der neuesten Version finden Sie unter Kundenservices](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-supported.html#gamelift-supported-clients). API-Beschreibungen und Funktionen finden Sie unter[Amazon GameLift ServersFlexMatchAPI-Referenz (AWS SDK)](reference-awssdk-flex.md).
+ **Richten Sie ein Matchmaking-Ticketsystem ein.** Alle Matchmaking-Anfragen müssen eine eindeutige Ticket-ID haben. Erstellen Sie einen Mechanismus zum Generieren eindeutiger Tickets IDs und weisen Sie sie Matchanfragen zu. Für eine Ticket-ID kann ein beliebiges Zeichenfolgenformat mit maximal 128 Zeichen verwendet werden. 
+ **Sammeln Sie Informationen über Ihren Matchmaker.** Holen Sie sich die folgenden Informationen aus Ihrer Matchmaking-Konfiguration und Ihrem Regelsatz. 
  + Name der Matchmaking-Konfigurationsressource.
  + Die Liste der Spielerattribute, die im Regelsatz definiert sind.
+ **Spielerdaten abrufen.** Richten Sie eine Möglichkeit ein, relevante Daten für jeden Spieler abzurufen, die Sie in Ihre Matchmaking-Anfragen aufnehmen können. Sie benötigen die Werte der Spieler-ID und der Spielerattribute. Wenn Ihr Regelsatz Latenzregeln enthält oder Sie Latenzdaten für die Durchführung von Spielsitzungen verwenden möchten, erfassen Sie Latenzdaten für jeden geografischen Standort, an dem der Spieler wahrscheinlich in ein Spiel aufgenommen wird. Verwenden Sie die UDP-Ping-Beacons, um Amazon GameLift Servers genaue Latenzmessungen zu erhalten. Mit diesen Endpunkten können Sie die tatsächliche UDP-Netzwerklatenz zwischen den Spielergeräten und den einzelnen potenziellen Hosting-Standorten messen, was zu genaueren Platzierungsentscheidungen führt als mit ICMP-Pings. [Weitere Informationen zur Verwendung von UDP-Ping-Beacons zur Messung der Latenz finden Sie unter UDP-Ping-Beacons.](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/reference-udp-ping-beacons.html)

# Fordere Matchmaking für Spieler an
<a name="match-client-start"></a>

Fügen Sie Ihrem Spiel-Backend-Service Code hinzu, um Matchmaking-Anfragen an einen Matchmaker zu verwalten. FlexMatch Das Anfordern von FlexMatch Matchmaking ist für Spiele, die FlexMatch zusammen mit Amazon GameLift Servers Hosting verwendet werden, und für Spiele, die FlexMatch als eigenständige Lösung verwendet werden, identisch.

## Um eine Matchmaking-Anfrage zu erstellen:
<a name="match-client-start-request"></a>

Rufen Sie die Amazon GameLift Servers API [StartMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StartMatchmaking.html)auf. Jede Anforderung muss die folgenden Informationen enthalten.

**Matchmaker**  
Name der Matchmaking-Konfiguration, die für die Anforderung verwendet werden soll. FlexMatch platziert jede Anforderung im Pool für den angegebenen Matchmaker. Die Anforderung wird abhängig von der jeweiligen Konfiguration des Matchmaker verarbeitet. 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 [Entwirf einen FlexMatch Matchmaker](match-configuration.md). 

**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.  
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 Sie generieren. Siehe [Spieler generieren IDs](https://docs.aws.amazon.com/gamelift/latest/developerguide/player-sessions-player-identifiers.html). 
**Wichtig**  
Wenn du eine neue Matchmaking-Anfrage erstellst, die eine Spieler-ID enthält, die bereits in einer bestehenden aktiven Matchmaking-Anfrage enthalten ist, wird die bestehende Anfrage automatisch storniert. Für die stornierte Anfrage wird jedoch kein `MatchmakingCancelled` Event gesendet. Um den Status vorhandener Matchmaking-Anfragen zu überwachen, können Sie [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)den Status der Anfrage in seltenen Intervallen (30-60 Sekunden) abfragen. Für die stornierte Anfrage wird der Status `CANCELLED` mit dem Grund angezeigt. `Cancelled due to duplicate player`
+ *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 [Baue ein FlexMatch Regelsatz](match-rulesets.md) und [FlexMatchBeispiele für Regelsätze](match-examples.md).
+ *Spielerlatenzen* — Wenn der verwendete Matchmaker über eine Spielerlatenzregel verfügt, muss in der Anfrage die Latenz für jeden Spieler angegeben werden. 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. Verwenden Sie die Amazon GameLift Servers UDP-Ping-Beacons, um genaue Latenzmessungen zu erhalten. Mit diesen Endpunkten können Sie die tatsächliche UDP-Netzwerklatenz zwischen Player-Geräten und einem potenziellen Hosting-Standort messen, was zu genaueren Platzierungsentscheidungen führt als mit ICMP-Pings. [Weitere Informationen zur Verwendung von UDP-Ping-Beacons zur Messung der Latenz finden Sie unter UDP-Ping-Beacons.](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/reference-udp-ping-beacons.html)

## Um Details zur Matchanfrage abzurufen
<a name="match-client-start-retrieve"></a>

Nachdem eine Spielanfrage gesendet wurde, können Sie die Details der Anfrage einsehen, indem Sie [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)mit 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. 

## Um eine Spielanfrage zu stornieren
<a name="match-client-start-cancel"></a>

Sie können eine Matchmaking-Anfrage jederzeit stornieren, indem Sie [StopMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StopMatchmaking.html)mit der Ticket-ID der Anfrage anrufen.

# Verfolgen Sie Matchmaking-Ereignisse
<a name="match-client-track"></a>

Richten Sie Benachrichtigungen ein, um Ereignisse zu verfolgen, die Amazon GameLift Servers für Matchmaking-Prozesse ausgibt. Sie können Benachrichtigungen entweder direkt einrichten, indem Sie ein SNS-Thema erstellen, oder Amazon EventBridge verwenden. Weitere Informationen zur Einrichtung von Benachrichtigungen finden Sie unter [FlexMatchEvent-Benachrichtigungen einrichten](match-notification.md). 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 Ticket für eine Matchmaking-Anfrage ab, einschließlich des aktuellen Status, indem Sie [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)mit 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.

# Bitte um Spielerakzeptanz
<a name="match-client-accept"></a>

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

**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 aus. `MatchmakingRequiresAcceptance`

1. **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 Spieldetails telefonisch abrufen [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html). Spieler haben begrenzt Zeit zu reagieren, bevor der Matchmaker den Match-Vorschlag zurückzieht und weitersucht.

1. **Melden Sie die Spielerantworten an FlexMatch.** Melde Spielerantworten, indem du entweder [AcceptMatch](https://docs.aws.amazon.com/gamelift/latest/apireference/API_AcceptMatch.html)mit Annehmen oder Ablehnen anrufst. Alle Spieler in einer Matchmaking-Anforderung müssen das Match akzeptieren, damit es weitergeführt wird.

1. **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 akzeptiert haben, werden automatisch an den Ticketpool zurückgegeben. Tickets für Spieler, die das Spiel nicht akzeptiert haben, gehen in den Status FAILURE über und werden nicht mehr bearbeitet. Bei Tickets mit mehreren Spielern gilt: Wenn ein Spieler auf dem Ticket das Spiel nicht akzeptiert hat, schlägt das gesamte Ticket fehl.

# Mit einem Spiel verbinden
<a name="match-client-connect"></a>

Fügen Sie Ihrem Kundenservice Code hinzu, um einen erfolgreich erstellten Treffer (Status `COMPLETED` oder Ereignis`MatchmakingSucceeded`) zu verarbeiten. Dies umfasst die Benachrichtigung der Spieler des Matches und die Übergabe von Verbindungsinformationen an deren Spiele-Clients. 

Bei Spielen, die Amazon GameLift Servers verwaltetes Hosting verwenden, werden die Verbindungsinformationen zur Spielsitzung dem Matchmaking-Ticket hinzugefügt, wenn eine Matchmaking-Anfrage erfolgreich bearbeitet wurde. Rufen Sie uns an, um ein ausgefülltes Matchmaking-Ticket abzurufen. [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html) 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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSessionConnectionInfo.html). 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 die Teamzuweisungen gehören (siehe [GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)). 

Bei Spielen, die andere Hosting-Lösungen verwenden Amazon GameLift ServersFleetIQ, müssen Sie einen Mechanismus einbauen, der es Spielern ermöglicht, sich mit der entsprechenden Spielsitzung zu verbinden. 

# Beispiele für Matchmaking-Anfragen
<a name="match-client-sample"></a>

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)
```