

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.

# client/server Spielinteraktionen mit Amazon GameLift Servers
<a name="gamelift-sdk-interactions"></a>

Die Komponenten in Ihrer Amazon GameLift Servers Hosting-Lösung interagieren auf spezifische Weise miteinander, um Spielsitzungen als Reaktion auf die Nachfrage der Spieler durchzuführen. In diesem Thema wird beschrieben, wie Komponenten miteinander kommunizieren, wenn Ihr Spieleserver auf Amazon GameLift Servers verwalteten EC2-Flotten, selbstverwalteten Amazon GameLift Servers Anywhere-Flotten oder einer Hybridlösung gehostet wird. 

Zu den Komponenten der Hosting-Lösung gehören ein Spieleserver, der Amazon GameLift Servers Dienst, ein clientseitiger Backend-Dienst und ein Spieleclient. Der Spieleserver verwendet das [Amazon GameLift ServersServer-SDK](reference-serversdk.md), um mit dem Dienst zu interagieren. Amazon GameLift Servers Der Backend-Dienst verwendet die [Amazon GameLift ServersService-API](reference-awssdk.md) (Teil des AWS SDK), um im Namen des Spielclients mit dem Dienst zu interagieren. Wenn Sie einer Spielsitzung beitreten, stellt der Spielclient über die eindeutige IP-Adresse und Portnummer der Spielsitzung eine direkte Verbindung zu einer Spielsitzung her.

**Topics**
+ [Diagramm der Interaktionen](#gamelift-sdk-interactions-diagram)
+ [Verhalten bei Interaktionen](#gamelift-sdk-interactions-descriptions)

## Diagramm der Interaktionen
<a name="gamelift-sdk-interactions-diagram"></a>

Das folgende Diagramm zeigt, wie Ihre Spielhosting-Komponenten interagieren, sodass der Amazon GameLift Servers Dienst den Status der Verfügbarkeit von Spieleservern verfolgen und Spielsitzungen als Reaktion auf Spieleranforderungen starten kann.

![\[client/server Spielverhalten bei den wichtigsten Interaktionen, wie in diesem Thema beschrieben.\]](http://docs.aws.amazon.com/de_de/gameliftservers/latest/developerguide/images/combined_api_interactions_vsd.png)


## Verhalten bei Interaktionen
<a name="gamelift-sdk-interactions-descriptions"></a>

In den folgenden Abschnitten wird die Reihenfolge der Ereignisse in jeder der wichtigsten Interaktionen beschrieben.

### Initialisierung eines Gameserver-Prozesses
<a name="gamelift-sdk-interactions-launch"></a>

Beim Start stellt ein Spieleserverprozess die Kommunikation mit dem Amazon GameLift Servers Dienst her und meldet seinen Status als bereit, eine Spielsitzung zu veranstalten. 

1. Ein neuer Prozess der ausführbaren Datei des Spieleservers wird auf einer Hosting-Ressource ausgeführt.

1. Der Gameserver-Prozess ruft nacheinander die folgenden Server-SDK-Operationen auf:

   1. `InitSDK()`um das Server-SDK zu initialisieren, den Serverprozess zu authentifizieren und die Kommunikation mit dem Amazon GameLift Servers Dienst herzustellen. 

   1. `ProcessReady()`um die Bereitschaft zu kommunizieren, eine Spielsitzung zu veranstalten. Dieser Aufruf meldet auch die Verbindungsinformationen des Prozesses, die Spielclients verwenden, um sich mit der Spielsitzung zu verbinden, und andere Informationen.

   Der Serverprozess wartet dann auf Eingabeaufforderungen des Amazon GameLift Servers Dienstes.

1. Amazon GameLift Serversaktualisiert den Status des Serverprozesses auf `ACTIVE` und ist für das Hosten einer neuen Spielsitzung verfügbar. 

1. Amazon GameLift Serversbeginnt in regelmäßigen Abständen, den `onHealthCheck` Callback aufzurufen, um einen Integritätsstatus von den Serverprozessen abzufragen. Diese Aufrufe werden fortgesetzt, solange der Serverprozess im aktiven Status bleibt. Der Serverprozess muss innerhalb einer Minute fehlerfrei oder fehlerfrei antworten. Wenn der Serverprozess nicht ordnungsgemäß reagiert oder nicht reagiert, ändert der Amazon GameLift Servers Dienst irgendwann den aktiven Status des Serverprozesses und sendet keine Anfragen mehr, um die Spielsitzung zu starten.

### Eine Spielsitzung erstellen
<a name="gamelift-sdk-interactions-start"></a>

Der Amazon GameLift Servers Dienst startet eine neue Spielsitzung als Antwort auf eine Anfrage eines Spielers, das Spiel zu spielen. 

1. Ein Spieler, der den Spielclient verwendet, bittet darum, an einer Spielsitzung teilzunehmen. Je nachdem, wie dein Spiel den Spielerbeitritt handhabt, sendet der Spielclient eine Anfrage an den Backend-Dienst.

1. Wenn für den Spielerbeitritt eine neue Spielsitzung gestartet werden muss, sendet der Backend-Dienst eine Anfrage für eine neue Spielsitzung an den Amazon GameLift Servers Dienst. Diese Anfrage ruft den API-Vorgang `StartGameSessionPlacement()` des Dienstes auf. (Als Alternative könnte der Back-End-Dienst oder aufrufen `StartMatchmaking()``CreateGameSession()`.)

1. Der Amazon GameLift Servers Dienst reagiert darauf, indem er ein neues `GameSessionPlacement` Ticket mit Status `PENDING` erstellt. Er sendet Ticketinformationen an den Backend-Service zurück, sodass dieser den Status des Platzierungstickets verfolgen und feststellen kann, wann die Spielsitzung für Spieler bereit ist. Weitere Informationen finden Sie unter [Event-Benachrichtigung für die Platzierung von Spielsitzungen einrichten](queue-notification.md).

1. Der Amazon GameLift Servers Dienst startet den Platzierungsprozess für die Spielsitzung. Er identifiziert, welche Flotten untersucht werden müssen, und durchsucht diese Flotten nach einem aktiven Serverprozess, der keine Spielsitzung hostet. Bei der Suche nach einem verfügbaren Serverprozess geht der Amazon GameLift Servers Dienst wie folgt vor:

   1. Erstellt ein `GameSession` Objekt mit den Einstellungen für die Spielsitzung und den Spielerdaten aus der Platzierungsanfrage und setzt den Status auf`ACTIVATING`.

   1. Fordert den Serverprozess auf, eine Spielsitzung zu starten. Der Dienst ruft den `onStartGameSession` Callback des Serverprozesses auf und übergibt das Objekt. `GameSession`

   1. Ändert die Anzahl der Spielsitzungen des Serverprozesses auf. `1`

1. Der Serverprozess führt seine `onStartGameSession` Callback-Funktion aus. Wenn der Serverprozess bereit ist, Player-Verbindungen anzunehmen, ruft er den Server-SDK-Vorgang auf `ActivateGameSession()` und wartet auf Player-Verbindungen.

1. Der Amazon GameLift Servers Dienst aktualisiert das `GameSession` Objekt mit Verbindungsinformationen für den Serverprozess (wie im Call to angegeben`ProcessReady()`) und setzt den Status der Spielsitzung auf`ACTIVE`. Außerdem aktualisiert er den `GameSessionPlacement` Ticketstatus auf`FULFILLED`.

1. Der Backend-Dienst ruft `DescribeGameSessionPlacement()` an, um den Ticketstatus zu überprüfen und Informationen zur Spielsitzung abzurufen. Wenn die Spielsitzung aktiv ist, benachrichtigt der Backend-Dienst den Spielclient und leitet die Verbindungsinformationen der Spielsitzung weiter.

1. Der Spielclient verwendet die Verbindungsinformationen, um sich direkt mit dem Spielserver-Prozess zu verbinden und an der Spielsitzung teilzunehmen.

### Einen Spieler zu einem Spiel hinzufügen
<a name="gamelift-sdk-interactions-add-player"></a>

Ein Spiel kann optional Spielersitzungen verwenden, um Spielerverbindungen zu Spielsitzungen nachzuverfolgen. Spielersitzungen können einzeln oder als Teil einer Platzierungsanfrage für Spielsitzungen erstellt werden. 

1. Der Backend-Dienst ruft den API-Vorgang des Dienstes `CreatePlayerSession()` mit einer Spielsitzungs-ID auf.

1. Der Amazon GameLift Servers Dienst überprüft den Status der Spielsitzung (muss vorhanden sein`ACTIVE`) und sucht in der Spielsitzung nach einem offenen Spielerplatz. Wenn ein Spielautomat verfügbar ist, geht der Dienst wie folgt vor:

   1. Erstellt ein neues `PlayerSession` Objekt und setzt den Status auf`RESERVED`.

   1. Reagiert auf die Backend-Serviceanfrage mit Informationen zur Spielersitzung.

1. Der Backend-Dienst leitet die Sitzungsinformationen des Spielers zusammen mit den Verbindungsinformationen der Spielsitzung an den Spielclient weiter.

1. Der Spielclient verwendet die Verbindungsinformationen und die Sitzungs-ID des Spielers, um eine direkte Verbindung zum Spielserverprozess herzustellen und um die Teilnahme an der Spielsitzung zu bitten.

1. Als Reaktion auf einen Beitrittsversuch des Spielclients ruft der Spieleserver-Prozess den API-Vorgang des Dienstes auf, `AcceptPlayerSession()` um die Sitzungs-ID des Spielers zu überprüfen. Der Serverprozess akzeptiert die Verbindung oder weist sie zurück.

1. Der Amazon GameLift Servers Dienst führt eine der folgenden Aktionen aus:

   1. Wenn die Verbindung akzeptiert wird, Amazon GameLift Servers setzt er den `PlayerSession` Status auf `ACTIVE` und leitet den Prozess `PlayerSession` an den Spieleserver weiter.

   1. Wenn der Spieleserver-Prozess die Sitzungs-ID des Spielers nicht innerhalb eines bestimmten Zeitraums nach der ursprünglichen `CreatePlayerSession()` Anfrage abfragt, ändert der Amazon GameLift Servers Dienst den `PlayerSession` Status in `TIMEDOUT` und öffnet den Spieler-Slot in der Spielsitzung erneut. `AcceptPlayerSession()`

### Einen Spieler entfernen
<a name="gamelift-sdk-interactions-remove-player"></a>

Bei Spielen, die Spielersitzungen verwenden, benachrichtigt der Spieleserverprozess den Amazon GameLift Servers Dienst, wenn ein Spieler die Verbindung trennt. Der Dienst verwendet diese Informationen, um den Status von Spieler-Slots in einer Spielsitzung zu verfolgen und kann neuen Spielern die Nutzung offener Spielautomaten ermöglichen. 

1. Ein Spieler trennt die Verbindung zur Spielsitzung.

1. Der Spieleserver-Prozess erkennt die unterbrochene Verbindung und ruft den Server-SDK-Vorgang `RemovePlayerSession()` auf.

1. Der Amazon GameLift Servers Dienst ändert den Status der Spielersitzung auf `COMPLETED` und öffnet den Spieler-Slot in der Spielsitzung erneut.

### Die Spielsitzung wird beendet
<a name="gamelift-sdk-interactions-shutdown"></a>

Am Ende einer Spielsitzung oder beim Beenden der Spielsitzung informiert der Serverprozess den Amazon GameLift Servers Dienst über den Status der Spielsitzung.

1. Der Spieleserverprozess beendet die Spielsitzung und leitet das Herunterfahren des Prozesses ein, indem er den Server-SDK-Vorgang aufruft. `ProcessEnding()`

1. Der Spieleserver-Prozess ruft `Destroy()` auf, um das Server-SDK aus dem Speicher zu befreien. Dieser Schritt ist für [Telemetriemetriemetriken](monitoring-gamelift-servers-metrics.md) erforderlich, um zu verhindern, dass normale Prozessabbrüche als Abstürze gemeldet werden. 

1. Der Amazon GameLift Servers Dienst macht Folgendes:

   1. Lädt Spielsitzungsprotokolle auf Amazon Simple Storage Service (Amazon S3) hoch.

   1. Ändert den Status der Spielsitzung auf`TERMINATED`.

   1. Ändert den Status des Serverprozesses auf`TERMINATED`.

   1. Je nachdem, wie die Hosting-Lösung konzipiert ist, werden die neu verfügbaren Hosting-Ressourcen für die Ausführung eines neuen Spieleserver-Prozesses zugewiesen.