Integrar Amazon GameLift Servers en un proyecto de Unity - Amazon GameLift Servers

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Integrar Amazon GameLift Servers en un proyecto de Unity

Aprende a integrar el Amazon GameLift Servers SDK para Unity en tus proyectos de juegos para acceder al conjunto completo de funciones del SDK del servidor.

Sugerencia

Para una implementación más rápida, prueba el complemento Amazon GameLift Servers independiente para Unity. Proporciona flujos de trabajo de interfaz de usuario guiados para implementar rápidamente tu servidor de juegos con una configuración mínima, de modo que puedas probar los componentes del juego en acción. Consulte Amazon GameLift Serverscomplemento para Unity (SDK de servidor 5.x).

Recursos adicionales:

Instalar el SDK de servidor para Unity

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

Configure una flota de Amazon GameLift Servers Anywhere para realizar pruebas

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

Para obtener instrucciones sobre cómo configurar su estación de trabajo, consulte Configure las 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. Crea una flota Amazon GameLift Servers en cualquier lugar con tu 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 una unidad de cómputo 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 final del SDK de servicio, en forma de WebSocket URL. 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 Amazon GameLift Servers servicio. 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.

Agrega el código Amazon GameLift Servers del servidor a tu proyecto de Unity

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

El ejemplo de código proporcionado muestra los elementos básicos de integración necesarios. Utiliza un MonoBehavior para ilustrar una sencilla inicialización de un servidor de juegos conAmazon GameLift Servers. El ejemplo supone que el servidor del juego se ejecuta en una flota de Amazon GameLift Servers Anywhere para realizar pruebas. Incluye código para lo siguiente:

  • Inicializa un cliente Amazon GameLift Servers de API. En el ejemplo, se utiliza la versión de InitSDK() con parámetros de servidor para su flota y procesamiento de Anywhere. Usa la WebSocket URL, el ID de flota, el nombre del equipo (ID de host) y el token de autenticación, tal y como se definió en el tema anteriorConfigure una flota de Amazon GameLift Servers Anywhere para realizar pruebas.

  • Implemente funciones de devolución de llamadas para responder a las solicitudes del Amazon GameLift Servers servicio OnStartGameSessionOnProcessTerminate, incluidas las siguientes: yonHealthCheck.

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

El código de muestra proporcionado establece la comunicación con el Amazon GameLift Servers servicio. También implementa un conjunto de funciones de devolución de llamada que responden a las solicitudes del Amazon GameLift Servers servicio. 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 de servidor C# para Amazon GameLift Servers -- Acciones.

El código de ejemplo muestra cómo añadir la funcionalidad necesaria, tal y como se describe en Añadir Amazon GameLift Servers al servidor de juegos. Para obtener más información sobre las acciones del SDK del servidor, consulta laSDK 5.x de servidor 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 has preparado una versión de servidor de juegos con la funcionalidad mínima requerida para el alojamientoAmazon GameLift Servers, considera estos posibles pasos a seguir: