Referencia GameLift del SDK del servidor Amazon para C# y Unity: acciones - Amazon GameLift

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.

Referencia GameLift del SDK del servidor Amazon para C# y Unity: acciones

Esta referencia del SDK del servidor GameLift C# de Amazon te ayuda a preparar tu juego multijugador para usarlo con Amazon GameLift. Para obtener más información sobre el proceso de integración, consulte Adición de Amazon GameLift al servidor de juegos y para obtener información sobre el uso del complemento del SDK del servidor de C# para Unity, consulte Integración de Amazon GameLift en un proyecto de Unity.

GetSdkVersion()

Devuelve el número de versión actual del SDK integrado en el proceso del servidor.

Sintaxis

AwsStringOutcome GetSdkVersion();

Valor devuelto

Si funciona correctamente, devuelve la versión del SDK actual como objeto AwsStringOutcome. La cadena devuelta solo incluye el número de versión (por ejemplo, 5.0.0). Si no funciona, devuelve un mensaje de error.

Ejemplo

var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();

InitSDK()

Inicializa el Amazon GameLift SDK para una flota de EC2 gestionada. Llama a este método al lanzarlo, antes de que se GameLift produzca cualquier otra inicialización relacionada con Amazon. Este método lee los parámetros del servidor del entorno anfitrión para configurar la comunicación entre el servidor y el GameLift servicio de Amazon.

Sintaxis

GenericOutcome InitSDK();

Valor devuelto

Si tiene éxito, devuelve un InitSdkOutcome objeto que indica que el proceso del servidor está listo para la llamadaProcessReady().

Ejemplo

//Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK();

InitSDK()

Inicializa el Amazon GameLift SDK para una Anywhere flota. Llama a este método al lanzarlo, antes de que se GameLift produzca cualquier otra inicialización relacionada con Amazon. Este método requiere parámetros de servidor explícitos para configurar la comunicación entre el servidor y el GameLift servicio de Amazon.

Sintaxis

GenericOutcome InitSDK(ServerParameters serverParameters);

Parámetros

ServerParameters

Para inicializar un servidor de juegos en una GameLift Anywhere flota de Amazon, construye un ServerParameters objeto con la siguiente información:

  • La URL WebSocket utilizada para conectarte a tu servidor de juegos.

  • El ID del proceso utilizado para alojar su servidor de juegos.

  • El ID del proceso utilizado para alojar los procesos del servidor de juegos.

  • El ID de la GameLift flota de Amazon que contiene tu ordenador de GameLift Anywhere Amazon.

  • El token de autorización generado por la GameLift operación de Amazon.

Valor devuelto

Si se ejecuta correctamente, devuelve un InitSdkOutcome objeto que indica que el proceso del servidor está listo para la llamadaProcessReady().

nota

Si las llamadas a InitSDK() no funcionan en las compilaciones de juegos implementadas en las flotas de Anywhere, compruebe el parámetro ServerSdkVersion que se utiliza al crear el recurso de compilación. Debe establecer este valor de forma explícita en la versión del SDK del servidor en uso. El valor predeterminado de este parámetro es 4.x, que no es compatible. Para resolver este problema, cree una compilación nueva e impleméntela en una flota nueva.

Ejemplo

//Define the server parameters string websocketUrl = "wss://us-west-1.api.amazongamelift.com"; string processId = "PID1234"; string fleetId = "aarn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa"; string hostId = "HardwareAnywhere"; string authToken = "1111aaaa-22bb-33cc-44dd-5555eeee66ff"; ServerParameters serverParameters = new ServerParameters(webSocketUrl, processId, hostId, fleetId, authToken); //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters);

ProcessReady()

Notifica a Amazon de GameLift que el proceso del servidor está listo para albergar sesiones de juego. Llame a este método después de invocar InitSDK(). Se debe llamar a este método solo una vez por proceso.

Sintaxis

GenericOutcome ProcessReady(ProcessParameters processParameters)

Parámetros

ProcessParameters

Un objeto ProcessParameters contiene información sobre el proceso del servidor.

Valor devuelto

Devuelve un resultado genérico correcto o erróneo con un mensaje de error.

Ejemplo

Este ejemplo muestra las implementaciones tanto de la función de método como de la función de delegación.

// Set parameters and call ProcessReady ProcessParameters processParams = new ProcessParameters( this.OnStartGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnUpdateGameSession, port, new LogParameters(new List<string>() // Examples of log and error files written by the game server { "C:\\game\\logs", "C:\\game\\error" }) ); GenericOutcome processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);

ProcessEnding()

Notifica a Amazon de GameLift que el proceso del servidor está finalizando. Utiliza este método después de realizar todas las demás tareas de limpieza (incluido el cierre de la sesión de juego activa) y antes de finalizar el proceso. Según el resultado de ProcessEnding(), el proceso finaliza con éxito (0) o error (-1) y genera un evento de flota. Si el proceso termina con un error, se generará el evento de flota. SERVER_PROCESS_TERMINATED_UNHEALTHY

Sintaxis

GenericOutcome ProcessEnding()

Valor devuelto

Devuelve un resultado genérico correcto o erróneo con un mensaje de error.

Ejemplo

En este ejemplo, se llama a ProcessEnding() y Destroy() antes de finalizar el proceso del servidor con un código de salida correcto o erróneo.

GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); GameLiftServerAPI.Destroy(); if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); }

ActivateGameSession()

Notifica a Amazon GameLift que el proceso del servidor ha activado una sesión de juego y ya está listo para recibir las conexiones de los jugadores. Esta acción debe llamarse como parte de la función de devolución de llamada onStartGameSession(), después de la inicialización de todas las sesiones de juego.

Sintaxis

GenericOutcome ActivateGameSession()

Valor devuelto

Devuelve un resultado genérico correcto o erróneo con un mensaje de error.

Ejemplo

Este ejemplo muestra cómo se llama a ActivateGameSession() como parte de la función de delegación onStartGameSession().

void OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players GenericOutcome activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }

UpdatePlayerSessionCreationPolicy()

Actualiza la capacidad de la sesión de juego actual para aceptar sesiones de jugador nuevas. Una sesión de juego se puede configurar para que acepte o deniegue todas las sesiones nuevas de los jugadores.

Sintaxis

GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)

Parámetros

playerSessionPolicy

Valor de cadena que indica si la sesión de juego acepta jugadores nuevos.

Los valores válidos son:

  • ACCEPT_ALL: se aceptan todas las sesiones de jugador nuevas.

  • DENY_ALL: se rechazan todas las sesiones de jugador nuevas.

Valor devuelto

Devuelve un resultado genérico correcto o erróneo con un mensaje de error.

Ejemplo

Este ejemplo establece la política de participación en la sesión de juego actual para aceptar todos los jugadores.

GenericOutcome updatePlayerSessionPolicyOutcome = GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.ACCEPT_ALL);

GetGameSessionId()

Recupera el ID de la sesión de juego alojada por el proceso del servidor.

En el caso de los procesos inactivos que no se activan con una sesión de juego, la llamada devuelve GameLiftError.

Sintaxis

AwsStringOutcome GetGameSessionId()

Valor devuelto

Si funciona correctamente, devuelve el ID de sesión del juego como objeto AwsStringOutcome. Si no funciona, devuelve un mensaje de error.

Ejemplo

AwsStringOutcome getGameSessionIdOutcome = GameLiftServerAPI.GetGameSessionId();

GetTerminationTime()

Devuelve la hora a la que está programada el cierre de un proceso de servidor, si hay una hora de terminación disponible. Un proceso de servidor realiza esta acción tras recibir una onProcessTerminate() llamada de Amazon GameLift. Amazon GameLift solicita onProcessTerminate() por los siguientes motivos:

Sintaxis

AwsDateTimeOutcome GetTerminationTime()

Valor devuelto

Si el proceso se realiza correctamente, devuelve la hora de terminación como un objeto AwsDateTimeOutcome. El valor es la hora de terminación expresado en ciclos transcurridos desde 0001 00:00:00. Por ejemplo, el valor de la fecha y hora 2020-09-13 12:26:40 -000Z es igual a 637355968000000000 ciclos. Si no hay una hora de terminación disponible, devuelve un mensaje de error.

Ejemplo

AwsDateTimeOutcome getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();

AcceptPlayerSession()

Notifica a Amazon GameLift que un jugador con el identificador de sesión de jugador especificado se ha conectado al proceso del servidor y necesita ser validado. Amazon GameLift verifica que el identificador de sesión del jugador sea válido. Una vez validada la sesión del jugador, Amazon GameLift cambia el estado del espacio del jugador de RESERVADO a ACTIVO.

Sintaxis

GenericOutcome AcceptPlayerSession(String playerSessionId)

Parámetros

playerSessionId

ID único que se emite GameLift cuando se crea una nueva sesión de jugador.

Valor devuelto

Devuelve un resultado genérico correcto o erróneo con un mensaje de error.

Ejemplo

Este ejemplo muestra una función para gestionar una solicitud de conexión, incluida la validación y el rechazo de ID de sesión de jugador no válidos.

void ReceiveConnectingPlayerSessionID (Connection connection, String playerSessionId) { GenericOutcome acceptPlayerSessionOutcome = GameLiftServerAPI.AcceptPlayerSession(playerSessionId); if(acceptPlayerSessionOutcome.Success) { connectionToSessionMap.emplace(connection, playerSessionId); connection.Accept(); } else { connection.Reject(acceptPlayerSessionOutcome.Error.ErrorMessage); } }

RemovePlayerSession()

Notifica a Amazon GameLift que un jugador se ha desconectado del proceso del servidor. En respuesta, Amazon GameLift cambia el espacio del jugador para que esté disponible.

Sintaxis

GenericOutcome RemovePlayerSession(String playerSessionId)

Parámetros

playerSessionId

ID único emitido por Amazon GameLift cuando se crea una nueva sesión de jugador.

Valor devuelto

Devuelve un resultado genérico correcto o erróneo con un mensaje de error.

Ejemplo

GenericOutcome removePlayerSessionOutcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId);

DescribePlayerSessions()

Recupera datos de sesión de jugador, incluida la configuración, los metadatos de la sesión y los datos de jugador. Utilice esta acción para obtener información para una única sesión de jugador, para todas las sesiones de jugador de una sesión de juego o para todas las sesiones de jugador asociadas a un solo ID de jugador.

Sintaxis

DescribePlayerSessionsOutcome DescribePlayerSessions(DescribePlayerSessionsRequest describePlayerSessionsRequest)

Parámetros

DescribePlayerSessionsRequest

Un objeto DescribePlayerSessionsRequest que describe las sesiones de jugador que recuperar.

Valor devuelto

Si funciona correctamente, devuelve un objeto DescribePlayerSessionsOutcome que contiene un conjunto de objetos de sesión de jugador que se ajusta a los parámetros de la solicitud.

Ejemplo

Este ejemplo muestra una solicitud de todas las sesiones de jugador conectadas activamente a una sesión de juego específica. Al omitir NextTokeny establecer el valor límite en 10, Amazon GameLift devolverá los registros de las sesiones de los primeros 10 jugadores que coincidan con la solicitud.

// Set request parameters DescribePlayerSessionsRequest describePlayerSessionsRequest = new DescribePlayerSessionsRequest() { GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, //gets the ID for the current game session Limit = 10, PlayerSessionStatusFilter = PlayerSessionStatusMapper.GetNameForPlayerSessionStatus(PlayerSessionStatus.ACTIVE) }; // Call DescribePlayerSessions DescribePlayerSessionsOutcome describePlayerSessionsOutcome = GameLiftServerAPI.DescribePlayerSessions(describePlayerSessionsRequest);

StartMatchBackfill()

Envía una solicitud para encontrar nuevos jugadores para ranuras abiertas en una sesión de juego creada con FlexMatch. Para obtener más información, consulta la función FlexMatchde relleno.

Esta acción es asíncrona. Si se emparejan nuevos jugadores, Amazon GameLift proporciona datos actualizados de los emparejadores mediante la función de devolución de llamada. OnUpdateGameSession()

Un proceso del servidor solo puede tener una solicitud de reposición de emparejamiento activa a la vez. Para enviar una nueva solicitud, en primer lugar llame a StopMatchBackfill() para cancelar la solicitud original.

Sintaxis

StartMatchBackfillOutcome StartMatchBackfill (StartMatchBackfillRequest startBackfillRequest);

Parámetros

StartMatchBackfillRequest

Un objeto StartMatchBackfillRequest contiene información sobre la solicitud de reposición.

Valor devuelto

Devuelve un objeto StartMatchBackfillOutcome con el ID del ticket de reposición de emparejamiento o un error con un mensaje de error.

Ejemplo

// Build a backfill request StartMatchBackfillRequest startBackfillRequest = new StartMatchBackfillRequest() { TicketId = "1111aaaa-22bb-33cc-44dd-5555eeee66ff", //optional MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, // gets ID for current game session MatchmakerData matchmakerData = MatchmakerData.FromJson(gameSession.MatchmakerData), // gets matchmaker data for current players // get matchmakerData.Players // remove data for players who are no longer connected Players = ListOfPlayersRemainingInTheGame }; // Send backfill request StartMatchBackfillOutcome startBackfillOutcome = GameLiftServerAPI.StartMatchBackfill(startBackfillRequest); // Implement callback function for backfill void OnUpdateGameSession(GameSession myGameSession) { // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed }

StopMatchBackfill()

Cancela una solicitud de reposición de emparejamiento activa. Para obtener más información, consulta la función de FlexMatch relleno.

Sintaxis

GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);

Parámetros

StopMatchBackfillRequest

Un objeto StopMatchBackfillRequest que proporciona detalles sobre el ticket de emparejamiento que va a detener.

Valor devuelto

Devuelve un resultado genérico correcto o erróneo con un mensaje de error.

Ejemplo

// Set backfill stop request parameters StopMatchBackfillRequest stopBackfillRequest = new StopMatchBackfillRequest(){ TicketId = "1111aaaa-22bb-33cc-44dd-5555eeee66ff", //optional, if not provided one is autogenerated MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result //gets the ID for the current game session }; GenericOutcome stopBackfillOutcome = GameLiftServerAPI.StopMatchBackfillRequest(stopBackfillRequest);

GetComputeCertificate()

Recupera la ruta al certificado TLS utilizado para cifrar la conexión de red entre el servidor de juegos y el cliente de juego. Puedes usar la ruta del certificado al registrar tu dispositivo informático en una GameLift Anywhere flota de Amazon. Para obtener más información, consulte, RegisterCompute.

Sintaxis

GetComputeCertificateOutcome GetComputeCertificate();

Valor devuelto

Devuelve un GetComputeCertificateResponse objeto que contiene lo siguiente:

  • CertificatePath: La ruta al certificado TLS de su recurso informático. Cuando se utiliza una flota GameLift gestionada por Amazon, esta ruta contiene:

    • certificate.pem: el certificado del usuario final. La cadena de certificados completa es la combinación del certificateChain.pem adjunto a este certificado.

    • certificateChain.pem: la cadena de certificados que contiene el certificado raíz y los certificados intermedios.

    • rootCertificate.pem: el certificado raíz.

    • privateKey.pem: la clave privada del certificado del usuario final.

  • ComputeName: el nombre del recurso informático.

Ejemplo

GetComputeCertificateOutcome getComputeCertificateOutcome = GameLiftServerAPI.GetComputeCertificate();

GetFleetRoleCredentials()

Recupera las credenciales del rol de IAM que autorizan GameLift a Amazon a interactuar con otros. Servicios de AWS Para obtener más información, consulte Comunicación con otros recursos de AWS de sus flotas.

Sintaxis

GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(GetFleetRoleCredentialsRequest request);

Parámetros

GetFleetRoleCredentialsRequest

Credenciales de rol que amplían el acceso limitado a sus recursos de AWS al servidor de juegos.

Valor devuelto

Devuelve un objeto GetFleetRoleCredentialsOutcome.

Ejemplo

// form the fleet credentials request GetFleetRoleCredentialsRequest getFleetRoleCredentialsRequest = new GetFleetRoleCredentialsRequest(){ RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction" }; GetFleetRoleCredentialsOutcome GetFleetRoleCredentialsOutcome credentials = GetFleetRoleCredentials(getFleetRoleCredentialsRequest);

Destroy()

Libera de memoria el SDK del servidor de GameLift juegos de Amazon. Como práctica recomendada, llame a este método después de ProcessEnding() y antes de finalizar el proceso. Si utilizas una flota de Anywhere y no vas a finalizar los procesos del servidor después de cada sesión de juego, llama Destroy() y, InitSDK() a continuación, reinicializa antes de notificar a Amazon GameLift que el proceso está listo para organizar una sesión de juego. ProcessReady()

Sintaxis

GenericOutcome Destroy()

Valor devuelto

Devuelve un resultado genérico correcto o erróneo con un mensaje de error.

Ejemplo

// Operations to end game sessions and the server process GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); // Shut down and destroy the instance of the GameLift Game Server SDK GenericOutcome destroyOutcome = GameLiftServerAPI.Destroy(); // Exit the process with success or failure if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); }