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.
Integre Amazon GameLift con un proyecto de servidor de juegos de Unity
nota
En este tema se proporciona información sobre una versión anterior del GameLift complemento Amazon para Unity. La versión 1.0.0 (publicada en 2021) usa el SDK 4.x o anterior para GameLift servidores de Amazon. Para obtener documentación sobre la última versión del complemento, que utiliza el SDK 5.x del servidor y es compatible con Amazon GameLift Anywhere, consulteGuía GameLift del complemento de Amazon para Unity para el SDK de servidor 5.x.
Este tema te ayuda a preparar tu servidor de juegos personalizado para alojarlo en Amazon GameLift. El servidor del juego debe poder notificar a Amazon GameLift su estado, iniciar y detener las sesiones de juego cuando se le solicite y realizar otras tareas. Para obtener más información, consulte Añade Amazon GameLift a tu servidor de juegos.
Requisitos previos
Antes de integrar el servidor de juegos, realice las siguientes tareas:
Configuración de un proceso del servidor nuevo
nota
Este tema hace referencia al GameLift complemento Amazon para Unity versión 1.0.0, que usa el SDK de servidor 4.x o anterior.
Establece la comunicación con Amazon GameLift e informa que el proceso del servidor está listo para albergar una sesión de juego.
-
Inicie el SDK del servidor mediante una llamada a
InitSDK()
-
Para preparar el servidor para que acepte una sesión de juego, llame a
ProcessReady()
con el puerto de conexión y los detalles de la ubicación de la sesión de juego. Incluye los nombres de las funciones de devolución de llamada que invoca el GameLift servicio de Amazon, comoOnGameSession()
,OnGameSessionUpdate()
,OnProcessTerminate()
.OnHealthCheck()
Amazon GameLift puede tardar unos minutos en devolverte la llamada. -
Amazon GameLift actualiza el estado del proceso del servidor a
ACTIVE
. -
Amazon GameLift llama
onHealthCheck
periódicamente.
El siguiente ejemplo de código muestra cómo configurar un proceso de servidor sencillo con Amazon GameLift.
//initSDK var initSDKOutcome = GameLiftServerAPI.InitSDK(); //processReady // Set parameters and call ProcessReady var processParams = new ProcessParameters( this.OnGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnGameSessionUpdate, port, // Examples of log and error files written by the game server new LogParameters(new List<string>() { "C:\\game\\logs", "C:\\game\\error" }) ); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams); // Implement callback functions void OnGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); } void OnProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup var ProcessEndingOutcome = GameLiftServerAPI.ProcessEnding(); } bool OnHealthCheck() { bool isHealthy; // complete health evaluation within 60 seconds and set health return isHealthy; }
Inicio de una sesión de juego
nota
Este tema hace referencia al GameLift complemento Amazon para Unity versión 1.0.0, que usa el SDK de servidor 4.x o anterior.
Una vez completada la inicialización del juego, podrá iniciar una sesión de juego.
-
Implemente la función de devolución de llamada
onStartGameSession
. Amazon GameLift invoca este método para iniciar una nueva sesión de juego en el proceso del servidor y recibir las conexiones de los jugadores. -
Para activar una sesión de juego, llame a
ActivateGameSession()
. Para obtener más información sobre los SDK, consulte Referencia del SDK del servidor de Amazon GameLift (C#): Acciones.
El siguiente ejemplo de código ilustra cómo iniciar una sesión de juego con Amazon GameLift.
void OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map ... // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }
Finalización de una sesión de juego
nota
Este tema hace referencia al GameLift complemento Amazon para Unity versión 1.0.0, que usa el SDK de servidor 4.x o anterior.
Notifica a Amazon GameLift cuando finalice una sesión de juego. Como práctica recomendada, cierre los procesos del servidor una vez finalizada la sesión de juego para reciclar y actualizar los recursos de alojamiento.
-
Configura una función llamada
onProcessTerminate
para recibir solicitudes de Amazon GameLift y llamaProcessEnding()
. -
El estado del proceso cambia a
TERMINATED
.
El siguiente ejemplo describe cómo finalizar un proceso de una sesión de juego.
var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // otherwise, exit with error code Environment.Exit(errorCode);
Crear un servidor, compilarlo y subirlo a Amazon GameLift
nota
Este tema hace referencia al GameLift complemento Amazon para Unity versión 1.0.0, que usa el SDK de servidor 4.x o anterior.
Tras integrar tu servidor de juegos con Amazon GameLift, sube los archivos de compilación a una flota para que Amazon GameLift pueda desplegarlos como alojamiento de juegos. Para obtener más información sobre cómo subir tu servidor a Amazon GameLift, consultaCarga de una compilación del servidor de juegos personalizada en Amazon GameLift.