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 GameLift Amazon-Server in ein Unity-Projekt
Erfahren Sie, wie Sie das Amazon GameLift Servers SDK für Unity in Ihre Spieleprojekte integrieren, um auf den vollständigen Server-SDK-Funktionsumfang zuzugreifen.
Tipp
Für eine schnellere Bereitstellung probieren Sie das Amazon GameLift Servers Standalone-Plugin für Unity aus. Es bietet geführte Benutzeroberflächenabläufe, mit denen Sie Ihren Spieleserver mit minimalem Einrichtungsaufwand schnell bereitstellen können, sodass Sie Ihre Spielkomponenten in Aktion ausprobieren können. Siehe GameLift Amazon-Server Plugin für Unity (Server-SDK 5.x).
Weitere Ressourcen:
Installieren Sie das Server-SDK für Unity
Holen Sie sich das Open-Source-Programm Amazon GameLift Servers für Unity von GitHub
Richten Sie ein GameLift Amazon-Server Flotte überall zum Testen
Sie können Ihre Entwicklungs-Workstation als Amazon GameLift Servers Anywhere-Hosting-Flotte einrichten, um Ihre Amazon GameLift Servers Integration iterativ zu testen. Mit diesem Setup können Sie Spieleserverprozesse auf Ihrer Workstation starten, Spielerbeitritts- oder Matchmaking-Anfragen an Spieler senden, Amazon GameLift Servers um Spielsitzungen zu starten, und Clients mit den neuen Spielsitzungen verbinden. Mit deiner eigenen Workstation, die als Hosting-Server eingerichtet ist, kannst du alle Aspekte deiner Spielintegration mit Amazon GameLift Servers überwachen.
Anweisungen zur Einrichtung deiner Workstation findest du unter Richten Sie lokale Tests ein mit GameLift Amazon-Server Überall So führen Sie die folgenden Schritte durch:
Erstellen Sie einen benutzerdefinierten Standort für Ihre Workstation.
Erstellen Sie eine Amazon GameLift Servers Anywhere-Flotte mit Ihrem neuen benutzerdefinierten Standort. Bei Erfolg gibt diese Anfrage eine Flotten-ID zurück. Notieren Sie sich diesen Wert, da Sie ihn später benötigen werden.
Registrieren Sie Ihre Workstation als Computer in der neuen Anywhere-Flotte. Geben Sie einen eindeutigen Computernamen ein und geben Sie die IP-Adresse für Ihre Workstation an. Bei Erfolg gibt diese Anfrage einen Service SDK-Endpunkt in Form einer WebSocket URL zurück. Notieren Sie sich diesen Wert, da Sie ihn später benötigen werden.
Generieren Sie ein Authentifizierungstoken für Ihren Workstation-Computer. Diese kurzlebige Authentifizierung beinhaltet das Token und ein Ablaufdatum. Ihr Spieleserver verwendet es, um die Kommunikation mit dem Amazon GameLift Servers Dienst zu authentifizieren. Speichere die Authentifizierung auf deinem Workstation-Computer, damit deine laufenden Spieleserverprozesse darauf zugreifen können.
Addition GameLift Amazon-Server Servercode für Ihr Unity-Projekt
Dein Spieleserver kommuniziert mit dem Amazon GameLift Servers Dienst, um Anweisungen zu erhalten und den aktuellen Status zu melden. Um dies zu erreichen, fügen Sie Spieleservercode hinzu, der das Amazon GameLift Servers Server-SDK verwendet.
Das mitgelieferte Codebeispiel veranschaulicht die grundlegenden erforderlichen Integrationselemente. Es verwendet aMonoBehavior, um eine einfache Initialisierung eines Spieleservers mit Amazon GameLift Servers zu veranschaulichen. Das Beispiel geht davon aus, dass der Spieleserver zu Testzwecken auf einer Amazon GameLift Servers Anywhere-Flotte läuft. Es enthält Code für:
-
Initialisieren Sie einen Amazon GameLift Servers API-Client. Das Beispiel verwendet die Version von
InitSDK()mit Serverparametern für Ihre Anywhere-Flotte und Berechnung. Verwenden Sie die WebSocket URL, die Flotten-ID, den Berechnungsnamen (Host-ID) und das Authentifizierungstoken, wie im vorherigen Thema definiertRichten Sie ein GameLift Amazon-Server Flotte überall zum Testen. -
Implementieren Sie Rückruffunktionen, um auf Anfragen des Amazon GameLift Servers Dienstes zu antworten, einschließlich
OnStartGameSessionOnProcessTerminate, undonHealthCheck. -
Rufen Sie ProcessReady () mit einem bestimmten Port auf, um den Amazon GameLift Servers Dienst zu benachrichtigen, wenn der Prozess bereit ist, Spielsitzungen zu hosten.
Der mitgelieferte Beispielcode stellt die Kommunikation mit dem Amazon GameLift Servers Dienst her. Er implementiert auch eine Reihe von Rückruffunktionen, die auf Anfragen des Amazon GameLift Servers Dienstes reagieren. Weitere Informationen zu den einzelnen Funktionen und zur Funktionsweise des Codes finden Sie unter Initialisieren des Serverprozesses. Weitere Informationen zu den in diesem Code verwendeten SDK-Aktionen und Datentypen finden C#-Server-SDK 5.x für Amazon-Server GameLift -- Aktionen Sie unter.
Der Beispielcode zeigt, wie Sie die erforderliche Funktionalität hinzufügen, wie unter Amazon GameLift Servers Zu deinem Spieleserver hinzufügen beschrieben. Weitere Informationen zu Server-SDK-Aktionen finden Sie unterC#-Server-SDK 5.x für Amazon-Server GameLift -- Aktionen.
using System.Collections.Generic; using Aws.GameLift.Server; using UnityEngine; public class ServerSDKManualTest : MonoBehaviour { //This example is a simple integration that initializes a game server process //that is running on an Amazon GameLift Servers Anywhere fleet. void Start() { //Identify port number (hard coded here for simplicity) the game server is listening on for player connections var listeningPort = 7777; //WebSocketUrl from RegisterHost call var webSocketUrl = "wss://us-west-2.api.amazongamelift.com"; //Unique identifier for this process var processId = "myProcess"; //Unique identifier for your host that this process belongs to var hostId = "myHost"; //Unique identifier for your fleet that this host belongs to var fleetId = "myFleet"; //Authorization token for this host process var authToken = "myAuthToken"; //Server parameters are required for an Amazon GameLift Servers Anywhere fleet. //They are not required for an Amazon GameLift Servers managed EC2 fleet. ServerParameters serverParameters = new ServerParameters( webSocketUrl, processId, hostId, fleetId, authToken); //InitSDK establishes a local connection with an Amazon GameLift Servers agent //to enable further communication. var initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters); if (initSDKOutcome.Success) { //Implement callback functions ProcessParameters processParameters = new ProcessParameters( //Implement OnStartGameSession callback (gameSession) => { //Amazon GameLift Servers sends a game session activation request to the game server //with game session object containing game properties and other settings. //Here is where a game server takes action based on the game session object. //When the game server is ready to receive incoming player connections, //it invokes the server SDK call ActivateGameSession(). GameLiftServerAPI.ActivateGameSession(); }, (updateGameSession) => { //Amazon GameLift Servers sends a request when a game session is updated (such as for //FlexMatch backfill) with an updated game session object. //The game server can examine matchmakerData and handle new incoming players. //updateReason explains the purpose of the update. }, () => { //Implement callback function OnProcessTerminate //Amazon GameLift Servers invokes this callback before shutting down the instance hosting this game server. //It gives the game server a chance to save its state, communicate with services, etc., //and initiate shut down. When the game server is ready to shut down, it invokes the //server SDK call ProcessEnding() to tell Amazon GameLift Servers it is shutting down. GameLiftServerAPI.ProcessEnding(); }, () => { //Implement callback function OnHealthCheck //Amazon GameLift Servers invokes this callback approximately every 60 seconds. //A game server might want to check the health of dependencies, etc. //Then it returns health status true if healthy, false otherwise. //The game server must respond within 60 seconds, or Amazon GameLift Servers records 'false'. //In this example, the game server always reports healthy. return true; }, //The game server gets ready to report that it is ready to host game sessions //and that it will listen on port 7777 for incoming player connections. listeningPort, new LogParameters(new List<string>() { //Here, the game server tells Amazon GameLift Servers where to find game session log files. //At the end of a game session, Amazon GameLift Servers uploads everything in the specified //location and stores it in the cloud for access later. "/local/game/logs/myserver.log" })); //The game server calls ProcessReady() to tell Amazon GameLift Servers it's ready to host game sessions. var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParameters); if (processReadyOutcome.Success) { print("ProcessReady success."); } else { print("ProcessReady failure : " + processReadyOutcome.Error.ToString()); } } else { print("InitSDK failure : " + initSDKOutcome.Error.ToString()); } } void OnApplicationQuit() { //Make sure to call GameLiftServerAPI.ProcessEnding() and GameLiftServerAPI.Destroy() before terminating the server process. //These actions notify Amazon GameLift Servers that the process is terminating and frees the API client from memory. GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); GameLiftServerAPI.Destroy(); if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); } } }
Nächste Schritte
Nachdem Sie nun einen Spieleserver-Build mit den für das Hosting erforderlichen Mindestfunktionen vorbereitet habenAmazon GameLift Servers, sollten Sie die folgenden möglichen nächsten Schritte in Betracht ziehen:
-
Stellen Sie Ihren integrierten Spieleserver zum Testen und Entwickeln bereit. Mit einer Anywhere-Flotte kannst du deinen lokalen Computer als Hosting-Ressource einrichten und ihn zum Testen deiner Spieleserver- und Spieleclient-Verbindungen verwenden. Stellen Sie Ihren Spieleserver für Cloud-basiertes Hosting in einer verwalteten EC2- oder verwalteten Containerflotte bereit. Eine Anleitung finden Sie in diesen Themen:
-
Passe deine Spieleserver-Integration an, indem du optionale Funktionen hinzufügst. Beispielsweise möchtest du vielleicht Spielersitzungen mit eindeutigen Spieler-IDs hinzufügen, das Matchmaking-Backfill einrichten oder den Spielserverzugriff auf deine anderen AWS Ressourcen verwalten (z. B. eine Datenbank oder einen Inhaltsspeicherdienst). Eine Anleitung finden Sie in diesen Themen:
-
Passe deine Spieleclient-Komponente so an, dass du Spielsitzungen anforderst, Verbindungsinformationen erhältst und dich direkt mit einem Spielserver verbindest, um ein Spiel zu spielen. Eine Anleitung finden Sie in diesen Themen: