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.
ReferenciaGameLift de la API del servidor Amazon (C#): Acciones
Esta referencia de la API del servidor AmazonGameLift C# le ayuda a preparar su juego multijugador para usarlo con AmazonGameLift. Para obtener información detallada acerca del proceso de integración, consulteAñade Amazon GameLift a tu servidor de juegos.
Acciones
- GetSdkVersion()
- InitSDK()
- ProcessReady()
- ProcessEnding()
- ActivateGameSession()
- UpdatePlayerSessionCreationPolicy()
- GetGameSessionId()
- GetTerminationTime()
- AcceptPlayerSession()
- RemovePlayerSession()
- DescribePlayerSessions()
- StartMatchBackfill()
- StopMatchBackfill()
- GetComputeCertificate()
- GetFleetRoleCredentials()
- Destruir ()
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 incluye el número de versión (ejemplo5.0.0
). Si no funciona, devuelve un mensaje de error.
Ejemplo
var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();
InitSDK()
Inicializa elGameLift SDK de Amazon. Ejecute este método en el momento del lanzamiento antes de queGameLift se produzca cualquier otra inicialización relacionada con Amazon.
Sintaxis
GenericOutcome InitSDK(ServerParameters serverParameters);
Parámetros
- ServerParameters
-
Un
ServerParameters
objeto contiene información sobre la comunicación del servidor con AmazonGameLift desde unGameLiftAnywhere servidor de Amazon.-
La URLWebSocket utilizada para conectarse a tu servidor de juegos.
-
El ID del proceso utilizado para alojar el servidor de juegos.
-
El ID del equipo que aloja los procesos del servidor del juego.
-
El ID de laGameLift flota de Amazon que contiene suGameLiftAnywhere ordenador de Amazon.
-
El token de autorización generado por laGameLift operación de Amazon.
Para inicializar un servidor de juegos en un EC2GameLift administrado por Amazon, cree su servidor
ServerParameters
connull
valores. Tras proporcionarnull
los valores, AmazonGameLift configura el entorno informático y se conecta automáticamente a AmazonGameLift por usted. -
Valor devuelto
Si tiene éxito, devuelve unInitSdkOutcome objeto para indicar que el proceso del servidor está listo para la llamadaProcessReady().
Ejemplo
GameLiftAnywhereEjemplo de Amazon
//Define the server parameters ServerParameters serverParameters = new ServerParameters( webSocketUrl, processId, hostId, fleetId, authToken); //InitSDK establishes a local connection with GameLift's agent to enable further communication. var initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters);
Ejemplo de EC2GameLift gestionado por Amazon
//Define the server parameters ServerParameters serverParameters = new ServerParameters(null, null, null, null, null); //InitSDK establishes a connection with GameLift's websocket server for communication. var initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters);
ProcessReady()
Notifica a AmazonGameLift que el proceso del servidor está listo para albergar sesiones de juego. Llame a este método después de la invocaciónInitSDK(). Este método debe invocarse solo una vez por proceso.
Sintaxis
GenericOutcome ProcessReady(ProcessParameters processParameters)
Parámetros
- ProcessParameters
-
Un
ProcessParameters
objeto contiene información sobre el proceso del servidor.
Valor devuelto
Devuelve un resultado genérico que consiste en el éxito o el fracaso con un mensaje de error.
Ejemplo
Este ejemplo ilustra las implementaciones del método y de la función delegada.
// Set parameters and call ProcessReady var 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" }) ); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);
ProcessEnding()
Notifica a AmazonGameLift que el proceso del servidor se está cerrando. Este método debe llamarse después de realizar las demás tareas de limpieza, incluido el cierre de todas las sesiones de juego activas. Se debe salir de este método con un código de salida de 0; un código de salida que no sea 0 provoca un mensaje de evento que afirma que no se ha salido del proceso correctamente.
Una vez que el método salga con un código de 0, puede finalizar el proceso con un código de salida correcto. También puede salir del proceso con un código de error. Si sales con un código de error, el evento de la flota indicará que el proceso finalizó de forma anormal (SERVER_PROCESS_TERMINATED_UNHEALTHY
).
Sintaxis
GenericOutcome ProcessEnding()
Valor devuelto
Devuelve un resultado genérico que consiste en el éxito o el fracaso con un mensaje de error.
Ejemplo
var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // otherwise, exit with error code Environment.Exit(errorCode);
ActivateGameSession()
Notifica a AmazonGameLift que el proceso del servidor ha activado una sesión de juego y ahora está listo para recibir las conexiones de los jugadores. Esta acción debe ejecutarse como parte de la función deonStartGameSession()
devolución de llamada, después de inicializar toda la sesión de juego.
Sintaxis
GenericOutcome ActivateGameSession()
Valor devuelto
Devuelve un resultado genérico que consiste en el éxito o el fracaso 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 var 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
-
Nombre 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 que consiste en el éxito o el fracaso 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.
var updatePlayerSessionPolicyOutcome = GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.ACCEPT_ALL);
GetGameSessionId()
Recupera el ID de la sesión de juego alojada en el proceso del servidor activo.
Para los procesos inactivos que no se activan con una sesión de juego, la llamada devuelve unGameLiftError
.
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
var 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 del servidor realiza esta acción después de recibir unaonProcessTerminate()
llamada de AmazonGameLift. AmazonGameLift llamaonProcessTerminate()
por los siguientes motivos:
-
Cuando el proceso del servidor ha informado de problemas o no ha respondido a AmazonGameLift.
-
Al finalizar la instancia durante un evento de reducción de escala.
-
Cuando se termina una instancia debido a una interrupción puntual.
Sintaxis
AwsDateTimeOutcome GetTerminationTime()
Valor devuelto
Si tiene éxito, devuelve la hora de terminación como unAwsDateTimeOutcome
objeto. El valor es el tiempo de finalización, expresado en marcas transcurridas desde entonces0001 00:00:00
. Por ejemplo, el valor de fecha y hora2020-09-13
12:26:40 -000Z
es igual a637355968000000000
las marcas. Si no hay una hora de finalización disponible, devuelve un mensaje de error.
Ejemplo
var getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();
AcceptPlayerSession()
Notifica a AmazonGameLift que un jugador con el identificador de sesión especificado se ha conectado al proceso del servidor y necesita ser validado. AmazonGameLift comprueba que el ID de sesión del jugador es válido. Una vez validada la sesión del jugador, AmazonGameLift cambia el estado del espacio de jugador de RESERVADO a ACTIVO.
Sintaxis
GenericOutcome AcceptPlayerSession(String playerSessionId)
Parámetros
- playerSessionId
-
ID único queGameLift se emite cuando se crea una nueva sesión de jugador.
Valor devuelto
Devuelve un resultado genérico que consiste en el éxito o el fracaso 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){ var acceptPlayerSessionOutcome = GameLiftServerAPI.AcceptPlayerSession(playerSessionId); if(acceptPlayerSessionOutcome.Success) { connectionToSessionMap.emplace(connection, playerSessionId); connection.Accept(); } else { connection.Reject(acceptPlayerSessionOutcome.Error.ErrorMessage); } }
RemovePlayerSession()
Notifica a AmazonGameLift que un jugador se ha desconectado del proceso del servidor. En respuesta, AmazonGameLift cambia el espacio del jugador a disponible.
Sintaxis
GenericOutcome RemovePlayerSession(String playerSessionId)
Parámetros
- playerSessionId
-
ID único emitido por AmazonGameLift cuando se crea una nueva sesión de jugador.
Valor devuelto
Devuelve un resultado genérico que consiste en el éxito o el fracaso con un mensaje de error.
Ejemplo
Aws::GameLift::GenericOutcome disconnectOutcome = Aws::GameLift::Server::RemovePlayerSession(playerSessionId);
DescribePlayerSessions()
Recupera los datos de la sesión del jugador, que incluyen la configuración, los metadatos de la sesión y los datos del 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
DescribePlayerSessionsRequest
objeto describe qué sesiones del jugador se van a recuperar.
Valor devuelto
Si tiene éxito, devuelve unDescribePlayerSessionsOutcome
objeto que contiene un conjunto de objetos de sesión del jugador que se ajustan 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, AmazonGameLift devolverá los registros de sesión de los 10 primeros jugadores que coincidan con la solicitud.
// Set request parameters var describePlayerSessionsRequest = new Aws.GameLift.Server.Model.DescribePlayerSessionsRequest() { GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, //gets the ID for the current game session Limit = 10, PlayerSessionStatusFilter = PlayerSessionStatusMapper.GetNameForPlayerSessionStatus(PlayerSessionStatus.ACTIVE) }; // Call DescribePlayerSessions Aws::GameLift::DescribePlayerSessionsOutcome playerSessionsOutcome =
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, consulte la función deFlexMatch relleno.
Esta acción es asíncrona. Si se emparejan nuevos jugadores, AmazonGameLift envía datos actualizados del matchmaker mediante la función de devolución de llamadasOnUpdateGameSession()
.
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
StartMatchBackfillRequest
objeto contiene información sobre la solicitud de relleno.
Valor devuelto
Devuelve unStartMatchBackfillOutcome objeto con el identificador del ticket de relleno coincidente o un error con un mensaje de error.
Ejemplo
// Build a backfill request var startBackfillRequest = new AWS.GameLift.Server.Model.StartMatchBackfillRequest() { TicketId = "
a ticket ID
", //optional MatchmakingConfigurationArn = "the matchmaker configuration ARN
", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, // gets ID for current game session //get player data for all currently connected players 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 var 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 partidas activa. Para obtener más información, consulte la función deFlexMatch relleno.
Sintaxis
GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);
Parámetros
- StopMatchBackfillRequest
-
Un
StopMatchBackfillRequest
objeto que proporciona detalles sobre el ticket de matchmaking que estás deteniendo.
Valor devuelto
Devuelve un resultado genérico que consiste en el éxito o el fracaso con un mensaje de error.
Ejemplo
// Set backfill stop request parameters var stopBackfillRequest = new AWS.GameLift.Server.Model.StopMatchBackfillRequest() { TicketId = "
a ticket ID
", //optional, if not provided one is autogenerated MatchmakingConfigurationArn = "the matchmaker configuration ARN
", //from the game session matchmaker data GameSessionId = GameLiftServerAPI.GetGameSessionId().Result //gets the ID for the current game session }; var stopBackfillOutcome = GameLiftServerAPI.StopMatchBackfillRequest(stopBackfillRequest);
GetComputeCertificate()
Recupera la ruta al certificado TLS utilizado para cifrar la conexión de red entre su recursoGameLiftAnywhere informático de Amazon y AmazonGameLift. Puede utilizar la ruta del certificado al registrar su dispositivo informático en unaGameLiftAnywhere flota de Amazon. Para obtener más información, consulte RegisterCompute.
Sintaxis
GetComputeCertificateOutcome GetComputeCertificate();
Valor devuelto
Devuelve unGetComputeCertificateResponse objeto que contiene lo siguiente:
-
CertificatePath: la ruta al certificado TLS de su recurso de cómputo.
-
ComputeName: el nombre del recurso de cómputo.
Ejemplo
var getComputeCertificateOutcome = GameLiftServerAPI.GetComputeCertificate();
GetFleetRoleCredentials()
Recupera las credenciales del rol de servicio que creas para extender los permisos a tu otroServicios de AWS en AmazonGameLift. Estas credenciales permiten que el servidor del juego utilice tusAWS recursos. Para obtener más información, consulte Configure un rol de servicio de IAM para Amazon GameLift.
Sintaxis
GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(GetFleetRoleCredentialsRequest request);
Parámetros
- GetFleetRoleCredentialsRequest
-
Credenciales de rol que amplían el acceso limitado a tusAWS recursos al servidor del juego.
Valor devuelto
Devuelve unGetFleetRoleCredentialsOutcome objeto que contiene lo siguiente:
-
AssumedRoleUserArnNombre de recurso de Amazon (ARN) del usuario al que pertenece el rol de servicio.
-
AssumedRoleId- El ID del usuario al que pertenece la función de servicio.
-
AccessKeyId- El identificador de la clave de acceso para autenticar y proporcionar acceso a susAWS recursos.
-
SecretAccessKey- Nombre de acceso secreto para la autenticación.
-
SessionToken- Un token para identificar la sesión activa actual que interactúa con susAWS recursos.
-
Vencimiento: el tiempo transcurrido hasta que caduquen las credenciales de la sesión.
Ejemplo
// form the fleet credentials request var getFleetRoleCredentialsRequest = new AWS.GameLift.Server.Model.GetFleetRoleCredentialsRequest(){ RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction" } var GetFleetRoleCredentialsOutcome credentials = GetFleetRoleCredentials(getFleetRoleCredentialsRequest)
Destruir ()
Elimina la instancia del SDK del servidor deGameLift juegos de Amazon de tu recurso. Esto elimina toda la información de estado, detiene la comunicación de Heartbeat con AmazonGameLift, detiene la gestión de las sesiones del juego y cierra cualquier conexión. Llame a esta opción una vez finalizados los procesos del servidor.
Sintaxis
GenericOutcome Destroy()
Valor devuelto
Devuelve un resultado genérico que consiste en el éxito o el fracaso con un mensaje de error.
Ejemplo
// Operations to end game sessions and the server process var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // Otherwise, exit with error code Environment.Exit(errorCode); // Shutdown and destroy the instance of the GameLift Game Server SDK var destroyOutcome = GameLiftServerAPI.Destroy();