아마존 GameLift 서버 SDK (언리얼) 5.x 레퍼런스: 액션 - 아마존 GameLift

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

아마존 GameLift 서버 SDK (언리얼) 5.x 레퍼런스: 액션

이 Amazon GameLift Unreal 서버 SDK 레퍼런스를 사용하면 Amazon에서 사용할 멀티플레이어 게임을 준비하는 데 도움이 됩니다. GameLift 통합 프로세스에 대한 자세한 내용은 GameLift Amazon을 게임 서버에 추가 섹션을 참조하고, Unreal SDK Server 플러그인 사용에 대한 자세한 내용은 GameLift Amazon을 언리얼 엔진 프로젝트에 통합 섹션을 참조하세요.

참고

이 주제에서는 언리얼 엔진용으로 빌드할 때 사용할 수 있는 Amazon GameLift C++ API에 대해 설명합니다. 특히, 이 설명서는 -DBUILD_FOR_UNREAL=1 옵션을 사용하여 컴파일하는 코드에 적용됩니다.

GetSdkVersion()

현재 서버 프로세스에 빌드된 SDK 버전 번호를 반환합니다.

구문

FGameLiftStringOutcome GetSdkVersion();

반환 값

성공하면 현재 SDK 버전을 FGameLiftStringOutcome 객체로 반환합니다. 반환된 객체는 버전 번호(예: 5.0.0)를 포함합니다. 실패하면 오류 메시지를 반환합니다.

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

InitSDK()

관리형 EC2 플릿을 위한 Amazon GameLift SDK를 초기화합니다. GameLift Amazon과 관련된 다른 초기화가 발생하기 전에 시작 시 이 메서드를 호출하십시오. 이 메서드는 호스트 환경에서 서버 파라미터를 읽어 서버와 Amazon GameLift 서비스 간의 통신을 설정합니다.

구문

FGameLiftGenericOutcome InitSDK()

반환 값

성공하는 경우, 서버 프로세스가 ProcessReady()를 호출할 준비가 되었음을 나타내는 InitSdkOutcome 객체를 반환합니다.

//Call InitSDK to establish a local connection with the GameLift agent to enable further communication. FGameLiftGenericOutcome initSdkOutcome = gameLiftSdkModule->InitSDK();

InitSDK()

플릿의 Amazon GameLift SDK를 초기화합니다. Anywhere GameLift Amazon과 관련된 다른 초기화가 발생하기 전에 시작 시 이 메서드를 호출하십시오. 이 방법을 사용하려면 서버와 Amazon GameLift 서비스 간의 통신을 설정하기 위한 명시적인 서버 파라미터가 필요합니다.

구문

FGameLiftGenericOutcome InitSDK(serverParameters)

파라미터

FServerParameters

Amazon GameLift Anywhere 플릿에서 게임 서버를 초기화하려면 다음 정보를 사용하여 ServerParameters 객체를 생성하십시오.

  • 게임 서버에 연결하는 데 WebSocket 사용되는 URL입니다.

  • 게임 서버를 호스팅하는 데 사용되는 프로세스의 ID입니다.

  • 게임 서버 프로세스를 호스팅하는 컴퓨팅의 ID입니다.

  • Amazon GameLift Anywhere 컴퓨팅을 포함하는 아마존 GameLift 플릿의 ID입니다.

  • Amazon GameLift 작업에서 생성된 인증 토큰입니다.

반환 값

성공하는 경우, 서버 프로세스가 ProcessReady()를 호출할 준비가 되었음을 나타내는 InitSdkOutcome 객체를 반환합니다.

참고

Anywhere 플릿에 배포된 게임 빌드에 대한 InitSDK()로의 호출이 실패하는 경우 빌드 리소스를 생성할 때 사용된 ServerSdkVersion 파라미터를 확인합니다. 명시적으로 이 값을 사용 중인 Server SDK 버전으로 설정해야 합니다. 이 파라미터의 기본값은 4.x이며 호환되지 않습니다. 이 문제를 해결하려면 새 빌드를 생성하여 새 플릿에 배포해야 합니다.

//Define the server parameters FServerParameters serverParameters; parameters.m_authToken = "1111aaaa-22bb-33cc-44dd-5555eeee66ff"; parameters.m_fleetId = "arn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa"; parameters.m_hostId = "HardwareAnywhere"; parameters.m_processId = "PID1234"; parameters.m_webSocketUrl = "wss://us-west-1.api.amazongamelift.com"; //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. FGameLiftGenericOutcome initSdkOutcome = gameLiftSdkModule->InitSDK(serverParameters);

ProcessReady()

서버 프로세스가 게임 세션을 호스팅할 준비가 GameLift 되었음을 Amazon에 알립니다. InitSDK() 호출 후 이 메서드를 호출합니다. 이 메서드는 프로세스당 한 번만 호출해야 합니다.

구문

GenericOutcome ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters);

파라미터

processParameters

다음 서버 프로세스 관련 정보를 전달하는 FProcessParameters 객체입니다.

  • Amazon GameLift 서비스가 서버 프로세스와 통신하기 위해 호출하는 게임 서버 코드에 구현된 콜백 메서드의 이름입니다.

  • 서버 프로세스가 수신하는 포트 번호입니다.

  • GameLift Amazon에서 캡처하여 저장하려는 게임 세션별 파일의 경로입니다.

반환 값

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

이 예에서는 ProcessReady() 호출 및 위임 함수 구현을 모두 보여줍니다.

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

ProcessEnding()

서버 프로세스가 종료되고 GameLift 있음을 Amazon에 알립니다. 다른 모든 정리 작업 (활성 게임 세션 종료 포함) 이 끝난 후 프로세스를 종료하기 전에 이 메서드를 호출합니다. ProcessEnding()의 결과에 따라 프로세스가 성공(0) 또는 오류(-1)로 종료되고 플릿 이벤트가 생성됩니다. 오류가 발생하여 프로세스가 종료되는 경우 생성되는 플릿 이벤트는 SERVER_PROCESS_TERMINATED_UNHEALTHY입니다.

구문

FGameLiftGenericOutcome ProcessEnding()

반환 값

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

//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()

서버 프로세스가 게임 세션을 활성화했으며 이제 플레이어 연결을 수신할 준비가 GameLift 되었음을 Amazon에 알립니다. 이 작업은 모든 게임 세션 초기화 후 onStartGameSession() 콜백 함수의 일부로 호출되어야 합니다.

구문

FGameLiftGenericOutcome ActivateGameSession()

반환 값

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

이 예에서는 onStartGameSession() 위임 함수의 일부로 ActivateGameSession()이 호출되는 것을 보여줍니다.

//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()

현재 게임 세션의 새 플레이어 세션 수락 가능성을 업데이트합니다. 모든 새 플레이어 세션을 수락하거나 거부하도록 게임 세션을 설정할 수 있습니다.

구문

FGameLiftGenericOutcome UpdatePlayerSessionCreationPolicy(EPlayerSessionCreationPolicy policy)

파라미터

playerCreationSession정책

게임 세션이 새 플레이어를 수락하는지 여부를 나타내는 문자열 값입니다.

유효한 값으로는 다음이 포함됩니다.

  • ACCEPT_ALL - 모든 새 플레이어 세션을 수락합니다.

  • DENY_ALL - 모든 새 플레이어 세션을 거부합니다.

반환 값

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

이 예는 모든 플레이어를 수락하도록 현재 게임 세션의 참여 정책을 설정합니다.

FGameLiftGenericOutcome outcome = gameLiftSdkModule->UpdatePlayerSessionCreationPolicy(Aws::GameLift::Model::EPlayerSessionCreationPolicy::ACCEPT_ALL);

GetGameSessionId()

활성 서버 프로세스가 호스팅된 게임 세션의 ID를 가져옵니다.

게임 세션으로 활성화되지 않은 유휴 프로세스의 경우 호출은 FGameLiftError를 반환합니다.

구문

FGameLiftStringOutcome GetGameSessionId()

파라미터

이 작업에는 파라미터가 없습니다.

반환 값

성공하면 게임 세션 ID를 FGameLiftStringOutcome 객체로 반환합니다. 실패하면 오류 메시지를 반환합니다.

게임 세션으로 활성화되지 않은 유휴 프로세스의 경우 호출은 Success=TrueGameSessionId=""를 반환합니다.

//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()

종료 시간을 사용할 수 있는 경우 서버 프로세스가 종료되도록 예약된 시간을 반환합니다. 서버 프로세스는 GameLift Amazon으로부터 onProcessTerminate() 콜백을 받은 후 조치를 취합니다. Amazon에서 GameLift 전화를 거는 onProcessTerminate() 이유는 다음과 같습니다.

  • 서버 프로세스가 상태가 좋지 않다고 보고되었거나 GameLift Amazon에 응답하지 않은 경우

  • 스케일 다운 이벤트 중에 인스턴스를 종료하는 경우

  • 스팟 인스턴스 중단으로 인해 인스턴스가 종료되는 경우

구문

AwsDateTimeOutcome GetTerminationTime()

반환 값

성공하면 종료 시간을 AwsDateTimeOutcome 객체로 반환합니다. 값은 종료 시간이며, 0001 00:00:00 이후 경과된 틱 수로 표시됩니다. 예를 들어, 날짜 시간 값 2020-09-13 12:26:40 -000Z637355968000000000 틱 수와 같습니다. 사용 가능한 종료 시간이 없는 경우 오류 메시지를 반환합니다.

프로세스가 ProcessParameters.OnProcessTerminate() 콜백을 받지 못한 경우 오류 메시지가 반환됩니다. 서버 프로세스 종료에 대한 자세한 내용은 서버 프로세스 종료 알림에 응답 섹션을 참조하세요.

AwsDateTimeOutcome TermTimeOutcome = gameLiftSdkModule->GetTerminationTime();

AcceptPlayerSession()

지정된 플레이어 세션 ID를 가진 플레이어가 서버 프로세스에 연결되었으며 검증이 GameLift 필요함을 Amazon에 알립니다. Amazon은 플레이어 세션 ID가 유효한지 GameLift 확인합니다. 플레이어 세션이 검증된 후 Amazon은 플레이어 슬롯의 상태를 예약됨에서 ACTIVE로 GameLift 변경합니다.

구문

FGameLiftGenericOutcome AcceptPlayerSession(const FString& playerSessionId)

파라미터

playerSessionId

새 플레이어 세션이 GameLift 생성될 때 Amazon에서 발급하는 고유 ID입니다.

반환 값

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

이 예제는 유효하지 않은 플레이어 세션 ID의 검증 및 거부를 포함하는 연결 요청을 처리합니다.

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()

플레이어가 서버 프로세스와의 연결이 GameLift 끊겼음을 Amazon에 알립니다. 이에 대해 Amazon은 플레이어 슬롯을 사용 가능한 것으로 GameLift 변경합니다.

구문

FGameLiftGenericOutcome RemovePlayerSession(const FString& playerSessionId)

파라미터

playerSessionId

새 플레이어 세션이 GameLift 생성될 때 Amazon에서 발급하는 고유 ID입니다.

반환 값

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

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()

설정, 세션 메타데이터 및 플레이어 데이터 등의 플레이어 세션 데이터를 가져옵니다. 이 메서드를 사용하여 다음에 대한 정보를 얻을 수 있습니다.

  • 단일 플레이어 세션

  • 게임 세션의 모든 플레이어 세션

  • 단일 플레이어 ID와 연결된 모든 플레이어 세션

구문

FGameLiftDescribePlayerSessionsOutcome DescribePlayerSessions(const FGameLiftDescribePlayerSessionsRequest &describePlayerSessionsRequest)

파라미터

FGameLiftDescribePlayerSessionsRequest

검색할 플레이어 세션을 설명하는 FGameLiftDescribePlayerSessionsRequest 객체입니다.

반환 값

성공하는 경우, 요청 파라미터에 적합한 플레이어 세션 객체 집합이 들어 있는 FGameLiftDescribePlayerSessionsOutcome 객체를 반환합니다.

다음은 지정된 게임 세션에 활성 상태로 연결되어 있는 모든 플레이어 세션을 요청하는 예입니다. 제한 값을 NextToken생략하고 10으로 설정하면 Amazon은 요청과 일치하는 처음 10개의 플레이어 세션 레코드를 GameLift 반환합니다.

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()

로 만든 게임 세션에서 열린 슬롯에 새 플레이어를 찾아달라는 요청을 보냅니다. FlexMatch 자세한 내용은 FlexMatch 백필 기능을 참조하십시오.

이 작업은 비동기식입니다. 신규 플레이어가 매칭되면 Amazon은 콜백 함수를 사용하여 업데이트된 매치메이커 데이터를 GameLift 제공합니다. OnUpdateGameSession()

서버 프로세스는 한 번에 하나의 활성 매치 채우기 요청만 할 수 있습니다. 새 요청을 보내려면 먼저 StopMatchBackfill()을 호출하여 원본 요청을 취소해야 합니다.

구문

FGameLiftStringOutcome StartMatchBackfill (FStartMatchBackfillRequest &startBackfillRequest);

파라미터

FStartMatchBackfillRequest

다음 정보를 전달하는 StartMatchBackfillRequest 객체입니다.

  • 채우기 요청에 할당할 티켓 ID. 이 정보는 선택 사항입니다. ID를 제공하지 GameLift 않으면 Amazon에서 ID를 생성합니다.

  • 요청을 보낼 매치메이커. 전체 구성 ARN이 필요합니다. 이 값은 게임 세션의 매치메이커 데이터에 있습니다.

  • 채울 게임 세션의 ID입니다.

  • 게임 세션의 현재 플레이어에 대해 사용 가능한 매치메이킹 데이터입니다.

반환 값

매치 채우기 티켓 ID와 함께 StartMatchBackfillOutcome 객체나 오류 메시지를 포함한 결함을 반환합니다.

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()

활성 매치 채우기 요청을 취소합니다. 자세한 내용은 FlexMatch백필 기능을 참조하십시오.

구문

FGameLiftGenericOutcome StopMatchBackfill (FStopMatchBackfillRequest &stopBackfillRequest);

파라미터

FStopMatchBackfillRequest

취소할 매치메이킹 티켓을 식별하는 StopMatchBackfillRequest 객체:

  • 채우기 요청에 할당된 티켓 ID

  • 채우기 요청을 보낸 매치메이커

  • 채우기 요청과 연결된 게임 세션

반환 값

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

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()

Amazon GameLift Anywhere 컴퓨팅 리소스와 Amazon 간의 네트워크 연결을 암호화하는 데 사용되는 TLS 인증서의 경로를 검색합니다. GameLift Amazon GameLift Anywhere 플릿에 컴퓨팅 디바이스를 등록할 때 인증서 경로를 사용할 수 있습니다. 자세한 내용은, 을 참조하십시오 RegisterCompute.

구문

FGameLiftGetComputeCertificateOutcome FGameLiftServerSDKModule::GetComputeCertificate()

반환 값

다음을 포함하는 GetComputeCertificateResponse 객체를 반환합니다.

  • CertificatePath: 컴퓨팅 리소스의 TLS 인증서 경로.

  • HostName: 컴퓨팅 리소스의 호스트 이름.

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()

GameLift Amazon이 다른 사람과 상호 작용할 수 있도록 승인하는 IAM 역할 자격 증명을 검색합니다. AWS 서비스자세한 정보는 플릿에서 다른 AWS 리소스와 통신을 참조하세요.

구문

FGameLiftGetFleetRoleCredentialsOutcome FGameLiftServerSDKModule::GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest &request)

파라미터

FGameLiftGetFleetRoleCredentialsRequest

반환 값

FGameLiftGetFleetRoleCredentialsOutcome 객체를 반환합니다.

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 }