Integración de Amazon GameLift Servers en un proyecto de Unity - Amazon GameLift Servers

Integración de Amazon GameLift Servers en un proyecto de Unity

Aprenda a integrar el SDK de Amazon GameLift Servers para Unity en sus proyectos de juegos para acceder al conjunto completo de características del SDK del servidor.

Sugerencia

Para agilizar la implementación, pruebe el complemento independiente de Amazon GameLift Servers para Unity. Proporciona flujos de trabajo de la IU guiados que le permitirán implementar rápidamente el servidor de juegos con una configuración mínima, para así poder probar los componentes del juego en acción. Consulte Complemento de Amazon GameLift Servers para Unity (SDK 5.x del servidor).

Recursos adicionales:

Instalación del SDK del servidor para Unity

Obtenga Amazon GameLift Servers para Unity de código abierto en GitHub. Los archivos readme del repositorio contienen los requisitos previos y las instrucciones de instalación.

Configuración de una flota de Amazon GameLift Servers Anywhere con fines de prueba

Puede configurar su estación de trabajo de desarrollo como una flota de alojamiento de Amazon GameLift Servers Anywhere para probar de forma iterativa la integración con Amazon GameLift Servers. Con esta configuración, puede iniciar los procesos del servidor de juegos en su estación de trabajo, enviar solicitudes de unión o emparejamiento de jugadores a Amazon GameLift Servers para iniciar sesiones de juego y conectar clientes a las nuevas sesiones de juego. Con su propia estación de trabajo configurada como servidor de alojamiento, podrá supervisar todos los aspectos de la integración de los juegos con Amazon GameLift Servers.

Para obtener instrucciones sobre cómo configurar su estación de trabajo, consulte Configuración de pruebas locales con Amazon GameLift Servers Anywhere para completar los siguientes pasos:

  1. Cree una ubicación personalizada para su estación de trabajo.

  2. Cree una flota de Amazon GameLift Servers Anywhere con su nueva ubicación personalizada. Si se realiza correctamente, esta solicitud devuelve un ID de la flota. Tome nota de ese valor, ya que lo necesitará más tarde.

  3. Registre su estación de trabajo como recurso de computación en la nueva flota de Anywhere. Proporcione un nombre de procesamiento único y especifique la dirección IP de su estación de trabajo. Si se realiza correctamente, esta solicitud devuelve un punto de conexión del SDK del servicio en forma de URL de WebSocket. Tome nota de ese valor, ya que lo necesitará más tarde.

  4. Genere un token de autenticación para el procesamiento de su estación de trabajo. Esta autenticación de corta duración incluye el token y una fecha de caducidad. El servidor de juegos lo usa para autenticar la comunicación con el servicio de Amazon GameLift Servers. Guarde la autenticación en el recurso informático de su estación de trabajo para que los procesos del servidor de juegos en ejecución puedan acceder a él.

Adición del código de servidor de Amazon GameLift Servers al proyecto

El servidor de juegos se comunica con el servicio de Amazon GameLift Servers para recibir instrucciones e informar sobre su estado actual. Para ello, debe añadir un código de servidor de juegos que utilice el SDK del servidor de Amazon GameLift Servers.

El ejemplo de código proporcionado muestra los elementos básicos de integración necesarios. Utiliza un MonoBehavior para ilustrar una inicialización sencilla de un servidor de juegos con Amazon GameLift Servers. En el ejemplo, se presupone que el servidor de juegos se ejecuta en una flota de Amazon GameLift Servers con fines de prueba. Incluye código para lo siguiente:

  • Inicializar un cliente de API de Amazon GameLift Servers. En el ejemplo, se utiliza la versión de InitSDK() con parámetros de servidor los recursos de computación y la flota de Anywhere. Utilice la URL de WebSocket, el ID de la flota, el nombre de computación (ID de host) y el token de autenticación, tal como se definió en el tema anterior Configuración de una flota de Amazon GameLift Servers Anywhere con fines de prueba.

  • Implemente funciones de devolución de llamada para responder a las solicitudes del servicio de Amazon GameLift Servers, incluidas OnStartGameSession, OnProcessTerminate y onHealthCheck.

  • Llame a ProcessReady() con un puerto designado para informar al servicio de Amazon GameLift Servers cuando el proceso esté listo para alojar sesiones de juego.

El código de muestra que se proporciona establece la comunicación con el servicio de Amazon GameLift Servers. También implementa un conjunto de funciones de devolución de llamada que responden a las solicitudes procedentes del servicio de Amazon GameLift Servers. Para obtener más información sobre cada función y lo que hace el código, consulte Inicialización del proceso del servidor. Para obtener más información sobre las acciones del SDK y los tipos de datos que se utilizan en este código, consulte SDK 5.x del servidor de C# para Amazon GameLift Servers: acciones.

El código de muestra indica cómo añadir la funcionalidad necesaria, tal y como se describe en Adición de Amazon GameLift Servers al servidor de juegos. Para obtener más información sobre las acciones del SDK del servidor, consulte SDK 5.x del servidor de C# para Amazon GameLift Servers: acciones.

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); } } }

Pasos a seguir a continuación

Ahora que ha preparado una compilación del servidor de juegos con la funcionalidad mínima necesaria para el alojamiento con Amazon GameLift Servers, considere la posibilidad de seguir estos pasos: