Referencia 5.x GameLift del SDK (C++) del servidor de Amazon: 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 5.x GameLift del SDK (C++) del servidor de Amazon: Acciones

Puedes usar esta referencia del SDK del servidor GameLift C++ de Amazon como ayuda para preparar tu juego multijugador para usarlo con Amazon GameLift. Para obtener detalles sobre el proceso de integración, consulteAñade Amazon GameLift a tu servidor de juegos.

GetSdkVersion()

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

Sintaxis

FGameLiftStringOutcome GetSdkVersion();

Valor devuelto

Si tiene éxito, devuelve la versión actual del SDK como AwsStringOutcome objeto. El objeto devuelto incluye el número de versión (ejemplo5.0.0). Si no funciona, devuelve un mensaje de error.

Ejemplo

Aws::GameLift::AwsStringOutcome SdkVersionOutcome = Aws::GameLift::Server::GetSdkVersion();

InitSDK()

Inicializa el GameLift SDK de Amazon. Ejecute este método en el momento del lanzamiento, antes de que GameLift se produzca cualquier otra inicialización relacionada con Amazon.

Sintaxis

FGameLiftGenericOutcome InitSDK(serverParameters)

Parámetros

FServerParameters

UnServerParameters objeto comunica la siguiente información sobre la comunicación del servidor con Amazon GameLift desde un GameLift Anywhere servidor de Amazon.

  • La URL WebSocket 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 la GameLift flota de Amazon que contiene su GameLift Anywhere ordenador de Amazon.

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

Para inicializar un servidor de juegos en un EC2 GameLift administrado por Amazon, cree su servidorServerParameters connull valores. Tras proporcionarnull los valores, Amazon GameLift configura el entorno informático y se conecta automáticamente a Amazon GameLift por usted.

Valor devuelto

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

Ejemplo

GameLift AnywhereEjemplo de Amazon

//Define the server parameters FServerParameters serverParameters; parameters.m_authToken = ; // authentication token parameters.m_fleetId = ; // id for the fleet running the server parameters.m_hostId = ; // id for the host parameters.m_processId = ; // id for the process parameters.m_webSocketUrl = ; // web socket URL //InitSDK will establish a local connection with GameLift's agent to enable further communication. gameLiftSdkModule->InitSDK(serverParameters);

Ejemplo de EC2 GameLift gestionado por Amazon

//Define the server parameters FServerParameters serverParameters; parameters.m_authToken = null; parameters.m_fleetId = null; parameters.m_hostId = null; parameters.m_processId = null; parameters.m_webSocketUrl = null; //InitSDK will establish a local connection with GameLift's agent to enable further communication. gameLiftSdkModule->InitSDK(serverParameters);

ProcessReady()

Notifica a Amazon GameLift 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(const Aws::GameLift::Server::ProcessParameters &processParameters);

Parámetros

processParameters

Es un objeto FProcessParameters que comunica la siguiente información acerca del proceso del servidor:

  • Nombres de los métodos de devolución de llamada implementados en el código del servidor del juego que el GameLift servicio de Amazon invoca para comunicarse con el proceso del servidor.

  • Número de puerto de escucha del servidor de proceso.

  • Ruta a cualquier archivo específico de la sesión de juego que quieras GameLift que Amazon capture y almacene.

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 tanto de la función de llamada ProcessReady() como de la función de delegación.

//Calling ProcessReady tells GameLift this game server is ready to receive incoming game sessions! UE_LOG(GameServerLog, Log, TEXT("Calling Process Ready")); gameLiftSdkModule->ProcessReady(*params);

ProcessEnding()

Notifica a Amazon GameLift que el proceso del servidor se está cerrando. Usa este método después de realizar todas las demás tareas de limpieza, como cerrar 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.

Cuando 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ó con un error (SERVER_PROCESS_TERMINATED_UNHEALTHY).

Sintaxis

FGameLiftGenericOutcome ProcessEnding()

Valor devuelto

Devuelve un resultado genérico que consiste en el éxito o el fracaso con un mensaje de error.

Ejemplo

//OnProcessTerminate callback. GameLift will invoke this callback before shutting down an instance hosting this game server. //It gives this game server a chance to save its state, communicate with services, etc., before being shut down. //In this case, we simply tell GameLift we are indeed going to shutdown. params->OnTerminate.BindLambda([=]() { UE_LOG(GameServerLog, Log, TEXT("Game Server Process is terminating")); gameLiftSdkModule->ProcessEnding(); });

ActivateGameSession()

Notifica a Amazon GameLift 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

FGameLiftGenericOutcome ActivateGameSession()

Valor devuelto

Devuelve un resultado genérico que consiste en el éxito o el fracaso con un mensaje de error.

Ejemplo

En este ejemploActivateGameSession() se muestran las llamadas como parte de la funciónonStartGameSession() delegada.

//When a game session is created, GameLift sends an activation request to the game server and passes along the game session object containing game properties and other settings. //Here is where a game server should take action based on the game session object. //Once the game server is ready to receive incoming player connections, it should invoke GameLiftServerAPI.ActivateGameSession() auto onGameSession = [=](Aws::GameLift::Server::Model::GameSession gameSession) { FString gameSessionId = FString(gameSession.GetGameSessionId()); UE_LOG(GameServerLog, Log, TEXT("GameSession Initializing: %s"), *gameSessionId); gameLiftSdkModule->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

FGameLiftGenericOutcome UpdatePlayerSessionCreationPolicy(EPlayerSessionCreationPolicy policy)

Parámetros

playerCreationSessionPolítica

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 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.

FGameLiftGenericOutcome outcome = Aws::GameLift::Server::UpdatePlayerSessionCreationPolicy(Aws::GameLift::Model::EPlayerSessionCreationPolicy::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

FGameLiftStringOutcome GetGameSessionId()

Parámetros

Esta acción no tiene parámetros.

Valor devuelto

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

Para los procesos inactivos que no se activan con una sesión de juego, la llamada devuelveSuccess =True yGameSessionId ="".

Ejemplo

//When a game session is created, GameLift sends an activation request to the game server and passes along the game session object containing game properties and other settings. //Here is where a game server should take action based on the game session object. //Once the game server is ready to receive incoming player connections, it should invoke GameLiftServerAPI.ActivateGameSession() auto onGameSession = [=](Aws::GameLift::Server::Model::GameSession gameSession) { FString gameSessionId = FString(gameSession.GetGameSessionId()); UE_LOG(GameServerLog, Log, TEXT("GameSession Initializing: %s"), *gameSessionId); gameLiftSdkModule->ActivateGameSession(); };

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 actúa después de recibir unaonProcessTerminate() llamada de Amazon GameLift. Amazon GameLift llamaonProcessTerminate() por los siguientes motivos:

  • Cuando el proceso del servidor ha informado de problemas o no ha respondido a Amazon GameLift.

  • 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.

Si el proceso no ha recibido un ProcessParameters. OnProcessTerminate() devolución de llamada, se devuelve un mensaje de error. Para obtener más información sobre cómo cerrar un proceso de servidor, consulteResponder a una notificación de cierre de un proceso del servidor.

Ejemplo

Aws::GameLift::AwsLongOutcome TermTimeOutcome = Aws::GameLift::Server::GetTerminationTime();

AcceptPlayerSession()

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

Sintaxis

FGameLiftGenericOutcome AcceptPlayerSession(const FString& 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 que consiste en el éxito o el fracaso con un mensaje de error.

Ejemplo

En este ejemplo se gestiona una solicitud de conexión que incluye la validación y el rechazo de los ID de sesión de un jugador no válidos.

bool GameLiftManager::AcceptPlayerSession(const FString& playerSessionId, const FString& playerId) { #if WITH_GAMELIFT UE_LOG(GameServerLog, Log, TEXT("Accepting GameLift PlayerSession: %s . PlayerId: %s"), *playerSessionId, *playerId); FString gsId = GetCurrentGameSessionId(); if (gsId.IsEmpty()) { UE_LOG(GameServerLog, Log, TEXT("No GameLift GameSessionId. Returning early!")); return false; } if (!gameLiftSdkModule->AcceptPlayerSession(playerSessionId).IsSuccess()) { UE_LOG(GameServerLog, Log, TEXT("PlayerSession not Accepted.")); return false; } // Add PlayerSession from internal data structures keeping track of connected players connectedPlayerSessionIds.Add(playerSessionId); idToPlayerSessionMap.Add(playerSessionId, PlayerSession{ playerId, playerSessionId }); return true; #else return false; #endif }

RemovePlayerSession()

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

Sintaxis

FGameLiftGenericOutcome RemovePlayerSession(const FString& 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 que consiste en el éxito o el fracaso con un mensaje de error.

Ejemplo

bool GameLiftManager::RemovePlayerSession(const FString& playerSessionId) { #if WITH_GAMELIFT UE_LOG(GameServerLog, Log, TEXT("Removing GameLift PlayerSession: %s"), *playerSessionId); if (!gameLiftSdkModule->RemovePlayerSession(playerSessionId).IsSuccess()) { UE_LOG(GameServerLog, Log, TEXT("PlayerSession Removal Failed")); return false; } // Remove PlayerSession from internal data structures that are keeping track of connected players connectedPlayerSessionIds.Remove(playerSessionId); idToPlayerSessionMap.Remove(playerSessionId); // end the session if there are no more players connected if (connectedPlayerSessionIds.Num() == 0) { EndSession(); } return true; #else return false; #endif }

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 este método para obtener información sobre lo siguiente:

  • Una sesión para un jugador

  • Todas las sesiones de jugador en una sesión de juego

  • Todas las sesiones de jugador asociadas a un ID de jugador único

Sintaxis

FGameLiftDescribePlayerSessionsOutcome DescribePlayerSessions(const FGameLiftDescribePlayerSessionsRequest &describePlayerSessionsRequest)

Parámetros

FDescribePlayerSessionsRequest

Un objeto de describePlayerSessions solicitud que describe qué sesiones de jugador se van a 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

En este ejemplo, se solicitan todas las sesiones de jugadores que estén conectadas activamente a una sesión de juego específica. Al omitir NextTokeny establecer el valor límite en 10, Amazon GameLift devuelve los primeros registros de sesión de los 10 jugadores que coinciden con la solicitud.

void GameLiftManager::DescribePlayerSessions() { #if WITH_GAMELIFT FString localPlayerSessions; for (auto& psId : connectedPlayerSessionIds) { PlayerSession ps = idToPlayerSessionMap[psId]; localPlayerSessions += FString::Printf(TEXT("%s : %s ; "), *(ps.playerSessionId), *(ps.playerId)); } UE_LOG(GameServerLog, Log, TEXT("LocalPlayerSessions: %s"), *localPlayerSessions); UE_LOG(GameServerLog, Log, TEXT("Describing PlayerSessions in this GameSession")); FGameLiftDescribePlayerSessionsRequest request; request.m_gameSessionId = GetCurrentGameSessionId(); FGameLiftDescribePlayerSessionsOutcome outcome = gameLiftSdkModule->DescribePlayerSessions(request); LogDescribePlayerSessionsOutcome(outcome); #endif }

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 función deFlexMatch relleno.

Esta acción es asíncrona. Si se emparejan nuevos jugadores, Amazon GameLift 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

FGameLiftStringOutcome StartMatchBackfill (FStartMatchBackfillRequest &startBackfillRequest);

Parámetros

FStartMatchBackfillRequest

Un StartMatchBackfillRequest objeto que comunica la siguiente información:

  • Un ID de ticket que se asignará a la solicitud de reposición. Esta información es opcional; si no se proporciona ningún identificador, Amazon GameLift generará uno.

  • El creador de emparejamientos al que se enviará la solicitud. El ARN de configuración completo es obligatorio. Este valor se encuentra en los datos del matchmaker de la sesión de juego.

  • El ID de la sesión de juego que se va a rellenar.

  • Los datos de emparejamiento disponibles para los jugadores actuales de la sesión de juego.

Valor devuelto

Devuelve un StartMatchBackfillOutcome objeto con el identificador del ticket de relleno coincidente o un error con un mensaje de error.

Ejemplo

FGameLiftStringOutcome FGameLiftServerSDKModule::StartMatchBackfill(const FStartMatchBackfillRequest& request) { #if WITH_GAMELIFT Aws::GameLift::Server::Model::StartMatchBackfillRequest sdkRequest; sdkRequest.SetTicketId(TCHAR_TO_UTF8(*request.m_ticketId)); sdkRequest.SetGameSessionArn(TCHAR_TO_UTF8(*request.m_gameSessionArn)); sdkRequest.SetMatchmakingConfigurationArn(TCHAR_TO_UTF8(*request.m_matchmakingConfigurationArn)); for (auto player : request.m_players) { Aws::GameLift::Server::Model::Player sdkPlayer; sdkPlayer.SetPlayerId(TCHAR_TO_UTF8(*player.m_playerId)); sdkPlayer.SetTeam(TCHAR_TO_UTF8(*player.m_team)); for (auto entry : player.m_latencyInMs) { sdkPlayer.WithLatencyMs(TCHAR_TO_UTF8(*entry.Key), entry.Value); } std::map<std::string, Aws::GameLift::Server::Model::AttributeValue> sdkAttributeMap; for (auto attributeEntry : player.m_playerAttributes) { FAttributeValue value = attributeEntry.Value; Aws::GameLift::Server::Model::AttributeValue attribute; switch (value.m_type) { case FAttributeType::STRING: attribute = Aws::GameLift::Server::Model::AttributeValue(TCHAR_TO_UTF8(*value.m_S)); break; case FAttributeType::DOUBLE: attribute = Aws::GameLift::Server::Model::AttributeValue(value.m_N); break; case FAttributeType::STRING_LIST: attribute = Aws::GameLift::Server::Model::AttributeValue::ConstructStringList(); for (auto sl : value.m_SL) { attribute.AddString(TCHAR_TO_UTF8(*sl)); }; break; case FAttributeType::STRING_DOUBLE_MAP: attribute = Aws::GameLift::Server::Model::AttributeValue::ConstructStringDoubleMap(); for (auto sdm : value.m_SDM) { attribute.AddStringAndDouble(TCHAR_TO_UTF8(*sdm.Key), sdm.Value); }; break; } sdkPlayer.WithPlayerAttribute((TCHAR_TO_UTF8(*attributeEntry.Key)), attribute); } sdkRequest.AddPlayer(sdkPlayer); } auto outcome = Aws::GameLift::Server::StartMatchBackfill(sdkRequest); if (outcome.IsSuccess()) { return FGameLiftStringOutcome(outcome.GetResult().GetTicketId()); } else { return FGameLiftStringOutcome(FGameLiftError(outcome.GetError())); } #else return FGameLiftStringOutcome(""); #endif }

StopMatchBackfill()

Cancela una solicitud de reposición de partidas activa. Para obtener más información, consulte la función deFlexMatch relleno.

Sintaxis

FGameLiftGenericOutcome StopMatchBackfill (FStopMatchBackfillRequest &stopBackfillRequest);

Parámetros

FStopMatchBackfillRequest

Un StopMatchBackfillRequest objeto que identifica el billete de emparejamiento que se va a cancelar:

  • El ID de entrada asignado a la solicitud de recarga.

  • El casamentero al que se envió la solicitud de relleno.

  • La sesión de juego asociada a la solicitud de relleno.

Valor devuelto

Devuelve un resultado genérico que consiste en el éxito o el fracaso con un mensaje de error.

Ejemplo

FGameLiftGenericOutcome FGameLiftServerSDKModule::StopMatchBackfill(const FStopMatchBackfillRequest& request) { #if WITH_GAMELIFT Aws::GameLift::Server::Model::StopMatchBackfillRequest sdkRequest; sdkRequest.SetTicketId(TCHAR_TO_UTF8(*request.m_ticketId)); sdkRequest.SetGameSessionArn(TCHAR_TO_UTF8(*request.m_gameSessionArn)); sdkRequest.SetMatchmakingConfigurationArn(TCHAR_TO_UTF8(*request.m_matchmakingConfigurationArn)); auto outcome = Aws::GameLift::Server::StopMatchBackfill(sdkRequest); if (outcome.IsSuccess()) { return FGameLiftGenericOutcome(nullptr); } else { return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); } #else return FGameLiftGenericOutcome(nullptr); #endif }

GetComputeCertificate()

Recupera la ruta al certificado TLS utilizado para cifrar la conexión de red entre su recurso GameLift Anywhere informático de Amazon y Amazon GameLift. Puede utilizar la ruta del certificado al registrar su dispositivo informático en una GameLift Anywhere flota de Amazon. Para obtener más información, consulte RegisterCompute.

Sintaxis

FGameLiftGetComputeCertificateOutcome FGameLiftServerSDKModule::GetComputeCertificate()

Valor devuelto

Devuelve un GetComputeCertificateResponse objeto que contiene lo siguiente:

  • CertificatePath: la ruta al certificado TLS de su recurso de cómputo.

  • HostName: el nombre de host de su recurso de cómputo.

Ejemplo

FGameLiftGetComputeCertificateOutcome FGameLiftServerSDKModule::GetComputeCertificate() { #if WITH_GAMELIFT auto outcome = Aws::GameLift::Server::GetComputeCertificate(); if (outcome.IsSuccess()) { auto& outres = outcome.GetResult(); FGameLiftGetComputeCertificateResult result; result.m_certificate_path = UTF8_TO_TCHAR(outres.GetCertificatePath()); result.m_computeName = UTF8_TO_TCHAR(outres.GetComputeName()); return FGameLiftGetComputeCertificateOutcome(result); } else { return FGameLiftGetComputeCertificateOutcome(FGameLiftError(outcome.GetError())); } #else return FGameLiftGetComputeCertificateOutcome(FGameLiftGetComputeCertificateResult()); #endif }

GetFleetRoleCredentials()

Recupera las credenciales del rol de servicio que creaste para extender los permisos a tu otraServicios de AWS persona en Amazon GameLift. Estas credenciales autorizan al servidor del juego a utilizar tusAWS recursos. Para obtener más información, consulte Configure un rol de servicio de IAM para Amazon GameLift.

Sintaxis

FGameLiftGetFleetRoleCredentialsOutcome FGameLiftServerSDKModule::GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest &request)

Parámetros

FGetCustomerRoleCredentialsRequest

Valor devuelto

Devuelve un GetFleetRoleCredentialsOutcome objeto que contiene lo siguiente:

  • AssumedRoleUserArn Nombre 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 - El ID de clave 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

FGameLiftGetFleetRoleCredentialsOutcome FGameLiftServerSDKModule::GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest &request) { #if WITH_GAMELIFT Aws::GameLift::Server::Model::GetFleetRoleCredentialsRequest sdkRequest; sdkRequest.SetRoleArn(TCHAR_TO_UTF8(*request.m_roleArn)); sdkRequest.SetRoleSessionName(TCHAR_TO_UTF8(*request.m_roleSessionName)); auto outcome = Aws::GameLift::Server::GetFleetRoleCredentials(sdkRequest); if (outcome.IsSuccess()) { auto& outres = outcome.GetResult(); FGameLiftGetFleetRoleCredentialsResult result; result.m_assumedUserRoleArn = UTF8_TO_TCHAR(outres.GetAssumedUserRoleArn()); result.m_assumedRoleId = UTF8_TO_TCHAR(outres.GetAssumedRoleId()); result.m_accessKeyId = UTF8_TO_TCHAR(outres.GetAccessKeyId()); result.m_secretAccessKey = UTF8_TO_TCHAR(outres.GetSecretAccessKey()); result.m_sessionToken = UTF8_TO_TCHAR(outres.GetSessionToken()); result.m_expiration = FDateTime::FromUnixTimestamp(outres.GetExpiration()); return FGameLiftGetFleetRoleCredentialsOutcome(result); } else { return FGameLiftGetFleetRoleCredentialsOutcome(FGameLiftError(outcome.GetError())); } #else return FGameLiftGetFleetRoleCredentialsOutcome(FGameLiftGetFleetRoleCredentialsResult()); #endif }