

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於 -- 動作的 C\$1\$1 (Unreal) 伺服器 SDK Amazon GameLift Servers 5.x
<a name="integration-server-sdk5-unreal-actions"></a>

使用 Amazon GameLift Servers Unreal 伺服器 SDK 5.x 參考，協助您準備多玩家遊戲以搭配 使用。 Amazon GameLift Servers如需整合程序的詳細資訊，請參閱 [使用伺服器 SDK 將 Amazon GameLift Servers新增至您的遊戲伺服器](gamelift-sdk-server-api.md)。如果您使用的是 Unreal 的 Amazon GameLift Servers 外掛程式，另請參閱 [Amazon GameLift Servers Unreal Engine 的外掛程式](unreal-plugin.md)。

**注意**  
本主題說明您可以在為 Unreal Engine 建置時使用的 Amazon GameLift Servers C\$1\$1 API。具體而言，本文件適用於您使用 `-DBUILD_FOR_UNREAL=1`選項編譯的程式碼。

# 適用於 -- 資料類型的 C\$1\$1 (Unreal) 伺服器 SDK Amazon GameLift Servers 5.x
<a name="integration-server-sdk5-unreal-datatypes"></a>

使用 Amazon GameLift Servers Unreal 伺服器 SDK 5.x 參考，協助您準備多玩家遊戲以搭配 使用。 Amazon GameLift Servers如需整合程序的詳細資訊，請參閱 [使用伺服器 SDK 將 Amazon GameLift Servers新增至您的遊戲伺服器](gamelift-sdk-server-api.md)。如果您使用的是 Unreal 的 Amazon GameLift Servers 外掛程式，另請參閱 [Amazon GameLift Servers Unreal Engine 的外掛程式](unreal-plugin.md)。

**注意**  
本主題說明您可以在為 Unreal Engine 建置時使用的 Amazon GameLift Servers C\$1\$1 API。具體而言，本文件適用於您使用 `-DBUILD_FOR_UNREAL=1`選項編譯的程式碼。

[適用於 -- 動作的 C\$1\$1 (Unreal) 伺服器 SDK Amazon GameLift Servers 5.x](integration-server-sdk5-unreal-actions.md)

**Topics**
+ [FProcessParameters](#integration-server-sdk5-unreal-dataypes-process)
+ [UpdateGameSession](#integration-server-sdk5-unreal-dataypes-updategamesession)
+ [GameSession](#integration-server-sdk5-unreal-dataypes-gamesession)
+ [FServerParameters](#integration-server-sdk5-unreal-dataypes-serverparameters)
+ [FStartMatchBackfillRequest](#integration-server-sdk5-unreal-dataypes-startmatchbackfillrequest)
+ [FPlayer](#integration-server-sdk5-unreal-dataypes-player)
+ [FGameLiftDescribePlayerSessionsRequest](#integration-server-sdk5-unreal-dataypes-playersessions)
+ [FStopMatchBackfillRequest](#integration-server-sdk5-unreal-dataypes-stopmatchbackfillrequest)
+ [FAttributeValue](#integration-server-sdk5-unreal-dataypes-attributevalue)
+ [FGameLiftGetFleetRoleCredentialsRequest](#integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsrequest)
+ [FGameLiftLongOutcome](#integration-server-sdk5-unreal-dataypes-awslongoutcome)
+ [FGameLiftStringOutcome](#integration-server-sdk5-unreal-dataypes-awsstringoutcome)
+ [FGameLiftDescribePlayerSessionsOutcome](#integration-server-sdk5-unreal-dataypes-describeplayersessionsoutcome)
+ [FGameLiftDescribePlayerSessionsResult](#integration-server-sdk5-unreal-dataypes-describeplayersessionresult)
+ [FGenericOutcome](#integration-server-sdk5-unreal-dataypes-genericoutcome)
+ [FGameLiftPlayerSession](#integration-server-sdk5-unreal-dataypes-playersession)
+ [FGameLiftGetComputeCertificateOutcome](#integration-server-sdk5-unreal-dataypes-getcomputecertificateoutcome)
+ [FGameLiftGetComputeCertificateResult](#integration-server-sdk5-unreal-dataypes-getcomputecertificateresult)
+ [FGameLiftGetFleetRoleCredentialsOutcome](#integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsoutcome)
+ [FGetFleetRoleCredentialsResult](#integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsresult)
+ [FGameLiftError](#integration-server-sdk5-unreal-dataypes-gamelifterror)
+ [列舉](#integration-server-sdk5-unreal-dataypes-enums)

## FProcessParameters
<a name="integration-server-sdk5-unreal-dataypes-process"></a>

此資料類型包含傳送至 Amazon GameLift Servers的一組參數[ProcessReady()](integration-server-sdk5-unreal-actions.md#integration-server-sdk5-unreal-processready)。


|  |  | 
| --- |--- |
|  **屬性**  | Description | 
| LogParameters | 具有在遊戲工作階段期間產生之檔案目錄路徑的物件。 會Amazon GameLift Servers複製和存放檔案以供日後存取。**Type (類型)**：`TArray<FString>`**必要**：否 | 
| OnHealthCheck | Amazon GameLift Servers 呼叫 從伺服器程序請求運作狀態報告的回呼函數。 每 60 秒會Amazon GameLift Servers呼叫此函數，並等待 60 秒進行回應。FALSE 如果運作狀態TRUE良好，伺服器程序會傳回 。如果未傳回任何回應， 會將伺服器程序Amazon GameLift Servers記錄為運作狀態不佳。此屬性是定義為 的委派函數`DECLARE_DELEGATE_RetVal(bool, FOnHealthCheck)`；  **Type (類型)**：`FOnHealthCheck`**必要**：否 | 
| OnProcessTerminate | Amazon GameLift Servers 呼叫 以強制伺服器程序關閉的回呼函數。呼叫此函數後， 會Amazon GameLift Servers等待 5 分鐘讓伺服器程序關閉，並在關閉伺服器程序之前回應[ProcessEnding()](integration-server-sdk5-unreal-actions.md#integration-server-sdk5-unreal-processending)呼叫。**Type (類型)**：`FSimpleDelegate`**必要**：是 | 
| OnStartGameSession | Amazon GameLift Servers 叫用以啟用新遊戲工作階段的回呼函數。 會Amazon GameLift Servers呼叫此函數以回應用戶端請求 [CreateGameSession](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateGameSession.html)。回呼函數會傳遞[GameSession](#integration-server-sdk5-unreal-dataypes-gamesession)物件。此屬性是定義為 的委派函數 `DECLARE_DELEGATE_OneParam(FOnStartGameSession, Aws::GameLift::Server::Model::GameSession);`  **Type (類型)**：`FOnStartGameSession`**必要**：是 | 
| OnUpdateGameSession | Amazon GameLift Servers 呼叫 以將更新後的遊戲工作階段物件傳遞至伺服器程序的回呼函數。 會在處理配對回填請求時Amazon GameLift Servers呼叫此函數，以提供更新後的配對建構器資料。它會傳遞[GameSession](#integration-server-sdk5-unreal-dataypes-gamesession)物件、狀態更新 (updateReason) 和相符回填票證 ID。此屬性是定義為 的委派函數 `DECLARE_DELEGATE_OneParam(FOnUpdateGameSession, Aws::GameLift::Server::Model::UpdateGameSession);` **Type (類型)**：`FOnUpdateGameSession`**必要**：否 | 
| 站點 | 伺服器程序接聽新玩家連線的連接埠號碼。值必須屬於為部署此遊戲伺服器組建之機群所設定的連接埠範圍。此連接埠號碼包含在遊戲工作階段和遊戲工作階段物件中，遊戲工作階段會使用該物件來連接到伺服器程序。**Type (類型)**：`int`**必要**：是 | 

## UpdateGameSession
<a name="integration-server-sdk5-unreal-dataypes-updategamesession"></a>

此資料類型會更新至遊戲工作階段物件，其中包括遊戲工作階段已更新的原因，以及如果回填用於填入遊戲工作階段中的玩家工作階段，則相關的回填票證 ID。


| Properties | **Description** | 
| --- | --- | 
| GameSession | [GameSession](#integration-server-sdk5-unreal-dataypes-gamesession) 物件。GameSession 物件包含描述遊戲工作階段的屬性。**Type (類型)**：`Aws::GameLift::Server::GameSession`**必要**：否 | 
| UpdateReason | 正在更新遊戲工作階段的原因。**Type (類型)**：`enum class UpdateReason` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/gameliftservers/latest/developerguide/integration-server-sdk5-unreal-datatypes.html) **必要**：否   | 
| BackfillTicketId | 嘗試更新遊戲工作階段的回填票證 ID。**Type (類型)**：`char[]`**必要**：否 | 

## GameSession
<a name="integration-server-sdk5-unreal-dataypes-gamesession"></a>

此資料類型提供遊戲工作階段的詳細資訊。


| Properties | **Description** | 
| --- | --- | 
| GameSessionId |  遊戲工作階段的唯一識別符。遊戲工作階段 ARN 的格式如下：`arn:aws:gamelift:<region>::gamesession/<fleet ID>/<custom ID string or idempotency token>`。 **Type (類型)**：`char[]` **必要**：否  | 
| 名稱 |  遊戲工作階段的描述性標籤。 **Type (類型)**：`char[]` **必要**：否  | 
| FleetId |  遊戲工作階段執行所在的機群的唯一識別符。 **Type (類型)**：`char[]` **必要**：否  | 
| MaximumPlayerSessionCount |  遊戲工作階段的玩家連線數目上限。 **Type (類型)**：`int` **必要**：否  | 
| 站點 |  遊戲工作階段的連接埠號碼。若要連線到Amazon GameLift Servers遊戲伺服器，應用程式需要 IP 地址和連接埠號碼。 **Type (類型)**：`int` **必要**：否  | 
| IpAddress |  遊戲工作階段的 IP 地址。若要連線到Amazon GameLift Servers遊戲伺服器，應用程式需要 IP 地址和連接埠號碼。 **Type (類型)**：`char[]` **必要**：否  | 
| GameSessionData |  一組自訂遊戲工作階段屬性，格式為單一字串值。 **Type (類型)**：`char[]` **必要**：否  | 
| MatchmakerData |  用於建立遊戲工作階段的配對程序資訊，以 JSON 語法格式化為字串。除了使用的配對組態之外，還包含指派給配對的所有玩家的資料，包括玩家屬性和團隊指派。 **Type (類型)**：`char[]` **必要**：否  | 
| GameProperties |  一組遊戲工作階段的自訂屬性，格式為 key：value 對。這些屬性會與啟動新遊戲工作階段的請求一起傳遞。 **Type (類型)**：`GameProperty[]` **必要**：否  | 
| DnsName |  指派給執行遊戲工作階段之執行個體的 DNS 識別符。值的格式如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/gameliftservers/latest/developerguide/integration-server-sdk5-unreal-datatypes.html) 連線至在啟用 TLS 的機群上執行的遊戲工作階段時，您必須使用 DNS 名稱，而不是 IP 地址。 **Type (類型)**：`char[]` **必要**：否  | 

## FServerParameters
<a name="integration-server-sdk5-unreal-dataypes-serverparameters"></a>

用來維護 Amazon GameLift Servers Anywhere 伺服器與 Amazon GameLift Servers服務之間連線的資訊。使用 啟動新的伺服器程序時，會使用此資訊[InitSDK()](integration-server-sdk5-unreal-actions.md#integration-server-sdk5-unreal-initsdk)。對於託管在Amazon GameLift Servers受管 EC2 執行個體上的伺服器，請使用空物件。


| Properties | **Description** | 
| --- | --- | 
| webSocketUrl |  當您[https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_RegisterCompute.html](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_RegisterCompute.html)使用 Amazon GameLift Servers Anywhere 運算資源時， 會`GameLiftServerSdkEndpoint`Amazon GameLift Servers傳回 。 **Type (類型)**：`char[]` **必要**：是   | 
| processId |  向託管遊戲的伺服器程序註冊的唯一識別符。 **Type (類型)**：`char[]` **必要**：是  | 
| hostId | HostID 是當您註冊運算ComputeName時使用的 。如需詳細資訊，請參閱 [RegisterCompute](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_RegisterCompute.html)。**Type (類型)**：`char[]`**必要**：是 | 
| fleetId | 運算註冊目的地機群的唯一識別符。如需詳細資訊，請參閱 [RegisterCompute](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_RegisterCompute.html)。**Type (類型)**：`char[]`**必要**：是 | 
| authToken | 產生的身分驗證字符Amazon GameLift Servers，用於向 驗證您的伺服器Amazon GameLift Servers。如需詳細資訊，請參閱 [GetComputeAuthToken](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_GetComputeAuthToken.html)。**Type (類型)**：`char[]`**必要**：是 | 

## FStartMatchBackfillRequest
<a name="integration-server-sdk5-unreal-dataypes-startmatchbackfillrequest"></a>

用來建立配對回填請求的資訊。遊戲伺服器會在[StartMatchBackfill()](integration-server-sdk5-unreal-actions.md#integration-server-sdk5-unreal-startmatchbackfill)通話Amazon GameLift Servers中將此資訊傳達給 。


| Properties | **Description** | 
| --- | --- | 
| GameSessionArn |  唯一的遊戲工作階段識別符。API 操作會以 ARN 格式`[GetGameSessionId](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/integration-server-sdk5-unreal-actions.html#integration-server-sdk5-unreal-getgamesessionid)`傳回識別符。 **Type (類型)**：`char[]` **必要**：是  | 
| MatchmakingConfigurationArn |  配對建構器用於此請求的唯一識別符，格式為 ARN。原始遊戲工作階段的配對建構器 ARN 位於配對建構器資料屬性中的遊戲工作階段物件中。進一步了解使用配對建構器資料中的[配對建構器資料](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-server.html#match-server-data.html)。 **Type (類型)**：`char[]` **必要**：是  | 
| Players |  一組資料，代表遊戲工作階段中的所有玩家。配對建構器使用此項資訊搜尋適合配對現有玩家的新玩家。 **Type (類型)**：`TArray<FPlayer>` **必要**：是  | 
| TicketId |  配對或配對回填請求票證的唯一識別符。如果您不提供值， Amazon GameLift Servers會產生值。您可使用此識別項依據需求追蹤配對回填票證狀態或取消要求。 **Type (類型)**：`char[]` **必要**：否  | 

## FPlayer
<a name="integration-server-sdk5-unreal-dataypes-player"></a>

此資料類型代表配對中的玩家。啟動配對請求時，玩家會有玩家 ID、屬性和可能的延遲資料。 會在配對完成後Amazon GameLift Servers新增隊伍資訊。


| Properties | **Description** | 
| --- | --- | 
| LatencyInMS |  一組以毫秒為單位的值，指出玩家連線到某個位置時所經歷的延遲量。 如果使用此屬性，則玩家只會符合列出的位置。若配對構建器有評估玩家延遲的規則，玩家則必須回報延遲度，方可配對。 **Type (類型)**：`TMap>FString, int32<` **必要**：否  | 
| PlayerAttributes |  金鑰：值對的集合，其中包含用於配對的玩家資訊。玩家屬性金鑰必須符合配對規則集中使用的 PlayerAttributes。 如需玩家屬性的詳細資訊，請參閱 [AttributeValue](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_AttributeValue.html)。 **Type (類型)**：`TMap>FString, FAttributeValue<` **必要**：否  | 
| PlayerId |  玩家的唯一識別符。 **Type (類型)**：`std::string` **必要**：否  | 
| 團隊 |  玩家在配對中獲指派的隊伍名稱。您可以在配對規則集中定義團隊名稱。 **Type (類型)**：`FString` **必要**：否  | 

## FGameLiftDescribePlayerSessionsRequest
<a name="integration-server-sdk5-unreal-dataypes-playersessions"></a>

指定要擷取哪些玩家工作階段的物件。伺服器程序會在[DescribePlayerSessions()](integration-server-sdk5-unreal-actions.md#integration-server-sdk5-unreal-describeplayersessions)呼叫 時提供此資訊Amazon GameLift Servers。


| Properties | **Description** | 
| --- | --- | 
| GameSessionId |  唯一的遊戲工作階段識別符。請使用此參數要求特定遊戲工作階段的所有玩家工作階段。 遊戲工作階段 ID 格式為 `FString`。`GameSessionID` 是自訂 ID 字串或 **Type (類型)**：`std::string` **必要**：否  | 
| PlayerSessionId |  玩家工作階段的唯一識別符。使用此參數請求單一特定玩家工作階段。 **Type (類型)**：`FString` **必要**：否  | 
| PlayerId |  玩家的唯一識別符。使用此參數來請求特定玩家的所有玩家工作階段。請參閱 [產生玩家 IDs](player-sessions-player-identifiers.md)。 **Type (類型)**：`FString` **必要**：否  | 
| PlayerSessionStatusFilter |  要篩選結果的玩家工作階段狀態。可能的玩家工作階段狀態包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/gameliftservers/latest/developerguide/integration-server-sdk5-unreal-datatypes.html) **Type (類型)**：`FString` **必要**：否  | 
| NextToken |  表示結果下一頁開始的字符。若要指定結果集的開頭，請不要提供值。如果您提供玩家工作階段 ID，則會忽略此參數。 **Type (類型)**：`FString` **必要**：否  | 
| 限制 |  回傳結果的數量上限。如果您提供玩家工作階段 ID，則會忽略此參數。 **Type (類型)**：`int` **必要**：否  | 

## FStopMatchBackfillRequest
<a name="integration-server-sdk5-unreal-dataypes-stopmatchbackfillrequest"></a>

用來取消配對回填請求的資訊。遊戲伺服器會在[StopMatchBackfill()](integration-server-sdk5-unreal-actions.md#integration-server-sdk5-unreal-stopmatchbackfill)通話中將此資訊傳達給 Amazon GameLift Servers 服務。


| Properties | **Description** | 
| --- | --- | 
| GameSessionArn |  取消請求的唯一遊戲工作階段識別符。 **Type (類型)**：`FString` **必要**：是  | 
| MatchmakingConfigurationArn |  此請求傳送到的配對建構器的唯一識別符。 **Type (類型)**：`FString` **必要**：是  | 
| TicketId |  要取消之回填請求票證的唯一識別符。 **Type (類型)**：`FString` **必要**：是  | 

## FAttributeValue
<a name="integration-server-sdk5-unreal-dataypes-attributevalue"></a>

在[FPlayer](#integration-server-sdk5-unreal-dataypes-player)屬性鍵/值對中使用這些值。此物件可讓您使用任何有效的資料類型來指定屬性值：字串、數字、字串陣列或資料映射。每個`AttributeValue`物件只能使用其中一個可用的屬性。


| Properties | Description | 
| --- | --- | 
| attrType |  指定屬性值的類型。 **類型：**`FAttributeType`[列舉](#integration-server-sdk5-unreal-dataypes-enums)值。 **必要**：否  | 
| S |  代表字串屬性值。 **Type (類型)**：`FString` **必要**：否  | 
| N |  代表數值屬性值。 **Type (類型)**：`double` **必要**：否  | 
| SL |  代表字串屬性值的陣列。 **Type (類型)**：`TArray<FString>` **必要**：否  | 
| SDM |  代表字串索引鍵和雙值的字典。 **Type (類型)**：`TMap<FString, double>` **必要**：否  | 

## FGameLiftGetFleetRoleCredentialsRequest
<a name="integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsrequest"></a>

此資料類型提供角色登入資料，可將 資源 AWS 的有限存取權延伸到遊戲伺服器。如需詳細資訊，請參閱 [設定 的 IAM 服務角色 Amazon GameLift Servers](setting-up-role.md)。


| Properties | **Description** | 
| --- | --- | 
| RoleArn | 服務角色的 Amazon Resource Name (ARN)，可延伸 AWS 資源的有限存取權。**Type (類型)**：`FString`**必要**：否 | 
| RoleSessionName | 描述使用角色登入資料的工作階段名稱。**Type (類型)**：`FString`**必要**：否 | 

## FGameLiftLongOutcome
<a name="integration-server-sdk5-unreal-dataypes-awslongoutcome"></a>

此資料類型來自 動作，並產生具有下列屬性的物件：


| Properties | Description | 
| --- | --- | 
| 結果 |  動作的結果。 **Type (類型)**：`long` **必要**：否  | 
| ResultWithOwnership |   動作的結果會轉換為 rvalue，以便呼叫程式碼可以取得物件的擁有權。 **Type (類型)**：`long&&` **必要**：否  | 
| 成功 |  動作是否成功。 **Type (類型)**：`bool` **必要**：是  | 
| 錯誤 |  動作失敗時發生的錯誤。 **Type (類型)**：[FGameLiftError](#integration-server-sdk5-unreal-dataypes-gamelifterror) **必要**：否  | 

## FGameLiftStringOutcome
<a name="integration-server-sdk5-unreal-dataypes-awsstringoutcome"></a>

此資料類型來自 動作，並產生具有下列屬性的物件：


| Properties | Description | 
| --- | --- | 
| 結果 |  動作的結果。 **Type (類型)**：`FString` **必要**：否  | 
| ResultWithOwnership |   動作的結果會轉換為 rvalue，以便呼叫程式碼可以取得物件的擁有權。 **Type (類型)**：`FString&&` **必要**：否  | 
| 成功 |  動作是否成功。 **Type (類型)**：`bool` **必要**：是  | 
| 錯誤 |  動作失敗時發生的錯誤。 **Type (類型)**：[FGameLiftError](#integration-server-sdk5-unreal-dataypes-gamelifterror) **必要**：否  | 

## FGameLiftDescribePlayerSessionsOutcome
<a name="integration-server-sdk5-unreal-dataypes-describeplayersessionsoutcome"></a>

此資料類型來自 動作，並產生具有下列屬性的物件：


| Properties | Description | 
| --- | --- | 
| 結果 |  動作的結果。 **Type (類型)**：[FGameLiftDescribePlayerSessionsResult](#integration-server-sdk5-unreal-dataypes-describeplayersessionresult) **必要**：否   | 
| ResultWithOwnership |   動作的結果會轉換為 rvalue，以便呼叫程式碼可以取得物件的擁有權。 **Type (類型)**：`FGameLiftDescribePlayerSessionsResult&&` **必要**：否  | 
| 成功 |  動作是否成功。 **Type (類型)**：`bool` **必要**：是  | 
| 錯誤 |  動作失敗時發生的錯誤。 **Type (類型)**：[FGameLiftError](#integration-server-sdk5-unreal-dataypes-gamelifterror) **必要**：否  | 

## FGameLiftDescribePlayerSessionsResult
<a name="integration-server-sdk5-unreal-dataypes-describeplayersessionresult"></a>


| Properties | Description | 
| --- | --- | 
| PlayerSessions |   **Type (類型)**：`TArray<FGameLiftPlayerSession>` **必要**：是  | 
| NextToken |  表示結果下一頁開始的字符。若要指定結果集的開頭，請不要提供值。如果您提供玩家工作階段 ID，則會忽略此參數。 **Type (類型)**：`FString` **必要**：否  | 
| 成功 |  動作是否成功。 **Type (類型)**：`bool` **必要**：是  | 
| 錯誤 |  動作失敗時發生的錯誤。 **Type (類型)**：[FGameLiftError](#integration-server-sdk5-unreal-dataypes-gamelifterror) **必要**：否  | 

## FGenericOutcome
<a name="integration-server-sdk5-unreal-dataypes-genericoutcome"></a>

此資料類型來自 動作，並產生具有下列屬性的物件：


| Properties | Description | 
| --- | --- | 
| 成功 |  動作是否成功。 **Type (類型)**：`bool` **必要**：是  | 
| 錯誤 |  動作失敗時發生的錯誤。 **Type (類型)**：[FGameLiftError](#integration-server-sdk5-unreal-dataypes-gamelifterror) **必要**：否  | 

## FGameLiftPlayerSession
<a name="integration-server-sdk5-unreal-dataypes-playersession"></a>


| Properties | Description | 
| --- | --- | 
| CreationTime |  **Type (類型)**：`long` **必要**：是  | 
| FleetId |  **Type (類型)**：`FString` **必要**：是  | 
| GameSessionId |  **Type (類型)**：`FString` **必要**：是  | 
| IpAddress |  **Type (類型)**：`FString` **必要**：是  | 
| PlayerData |  **Type (類型)**：`FString` **必要**：是  | 
| PlayerId |  **Type (類型)**：`FString` **必要**：是  | 
| PlayerSessionId |  **Type (類型)**：`FString` **必要**：是  | 
| 站點 |  **Type (類型)**：`int` **必要**：是  | 
| 狀態 |  **類型：**`PlayerSessionStatus`[列舉](integration-server-sdk5-cpp-datatypes.md#integration-server-sdk5-cpp-dataypes-enums)。 **必要**：是  | 
| TerminationTime |  **Type (類型)**：`long` **必要**：是  | 
| DnsName |  **Type (類型)**：`FString` **必要**：是  | 

## FGameLiftGetComputeCertificateOutcome
<a name="integration-server-sdk5-unreal-dataypes-getcomputecertificateoutcome"></a>

此資料類型來自 動作，並產生具有下列屬性的物件：


| Properties | Description | 
| --- | --- | 
| 結果 |  動作的結果。 **Type (類型)**：[FGameLiftGetComputeCertificateResult](#integration-server-sdk5-unreal-dataypes-getcomputecertificateresult) **必要**：否   | 
| ResultWithOwnership |   動作的結果會轉換為 rvalue，以便呼叫程式碼可以取得物件的擁有權。 **Type (類型)**：`FGameLiftGetComputeCertificateResult&&` **必要**：否  | 
| 成功 |  動作是否成功。 **Type (類型)**：`bool` **必要**：是  | 
| 錯誤 |  動作失敗時發生的錯誤。 **Type (類型)**：[FGameLiftError](#integration-server-sdk5-unreal-dataypes-gamelifterror) **必要**：否  | 

## FGameLiftGetComputeCertificateResult
<a name="integration-server-sdk5-unreal-dataypes-getcomputecertificateresult"></a>

運算上 TLS 憑證的路徑和運算的主機名稱。


| Properties | Description | 
| --- | --- | 
| CertificatePath |  **Type (類型)**：`FString` **必要**：是  | 
| ComputeName |  **Type (類型)**：`FString` **必要**：是  | 

## FGameLiftGetFleetRoleCredentialsOutcome
<a name="integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsoutcome"></a>

此資料類型來自 動作，並產生具有下列屬性的物件：


| Properties | Description | 
| --- | --- | 
| 結果 |  動作的結果。 **Type (類型)**：[FGetFleetRoleCredentialsResult](#integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsresult) **必要**：否   | 
| ResultWithOwnership |   動作的結果會轉換為 rvalue，以便呼叫程式碼可以取得物件的擁有權。 **Type (類型)**：`FGameLiftGetFleetRoleCredentialsResult&&` **必要**：否  | 
| 成功 |  動作是否成功。 **Type (類型)**：`bool` **必要**：是  | 
| 錯誤 |  動作失敗時發生的錯誤。 **Type (類型)**：[FGameLiftError](#integration-server-sdk5-unreal-dataypes-gamelifterror) **必要**：否  | 

## FGetFleetRoleCredentialsResult
<a name="integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsresult"></a>


| Properties | Description | 
| --- | --- | 
| AccessKeyId |  要驗證並提供 AWS 資源存取權的存取金鑰 ID。 **Type (類型)**：`FString` **必要**：否  | 
| AssumedRoleId |  服務角色所屬的使用者 ID。 **Type (類型)**：`FString` **必要**：否  | 
| AssumedRoleUserArn |  服務角色所屬使用者的 Amazon Resource Name (ARN)。 **Type (類型)**：`FString` **必要**：否  | 
| Expiration |  工作階段登入資料過期前的時間長度。 **Type (類型)**：`FDateTime` **必要**：否  | 
| SecretAccessKey |  用於身分驗證的私密存取金鑰 ID。 **Type (類型)**：`FString` **必要**：否  | 
| SessionToken |  識別目前作用中工作階段與 AWS 資源互動的字符。 **Type (類型)**：`FString` **必要**：否  | 
| 成功 |  動作是否成功。 **Type (類型)**：`bool` **必要**：是  | 
| 錯誤 |  動作失敗時發生的錯誤。 **Type (類型)**：[GameLiftError](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-gamelifterror) **必要**：否  | 

## FGameLiftError
<a name="integration-server-sdk5-unreal-dataypes-gamelifterror"></a>


| Properties | Description | 
| --- | --- | 
| ErrorType |  錯誤類型。 **類型：**`GameLiftErrorType`[列舉](integration-server-sdk5-cpp-datatypes.md#integration-server-sdk5-cpp-dataypes-enums)。 **必要**：否   | 
| ErrorName |  錯誤的名稱。  **Type (類型)**：`std::string` **必要**：否   | 
| ErrorMessage |  錯誤訊息。  **Type (類型)**：`std::string` **必要**：否   | 

## 列舉
<a name="integration-server-sdk5-unreal-dataypes-enums"></a>

為適用於 Amazon GameLift Servers（非真實） 的伺服器 SDK 定義的列舉定義如下：

**FAttributeType**  
+ **NONE**
+ **STRING**
+ **雙倍**
+ **STRING\$1LIST**
+ **STRING\$1DOUBLE\$1MAP**

**GameLiftErrorType**  
指出錯誤類型的字串值。有效值包含：  
+ **SERVICE\$1CALL\$1FAILED** – 呼叫 AWS 服務失敗。
+ **LOCAL\$1CONNECTION\$1FAILED** – 與 的本機連線Amazon GameLift Servers失敗。
+ **NETWORK\$1NOT\$1INITIALIZED** – 網路尚未初始化。
+ **GAMESESSION\$1ID\$1NOT\$1SET** – 尚未設定遊戲工作階段 ID。
+ **BAD\$1REQUEST\$1EXCEPTION** 
+ **INTERNAL\$1SERVICE\$1EXCEPTION** 
+ **ALREADY\$1INITIALIZED** – Amazon GameLift Servers 伺服器或用戶端已使用 Initialize() 初始化。
+ **FLEET\$1MISMATCH** – 目標機群與 gameSession 或 playerSession 的機群不相符。
+ **GAMELIFT\$1CLIENT\$1NOT\$1INITIALIZED** – Amazon GameLift Servers用戶端尚未初始化。
+ **GAMELIFT\$1SERVER\$1NOT\$1INITIALIZED** – Amazon GameLift Servers 伺服器尚未初始化。
+ **GAME\$1SESSION\$1ENDED\$1FAILED** – 的 伺服器開發套件Amazon GameLift Servers無法聯絡 服務以報告遊戲工作階段已結束。
+ **GAME\$1SESSION\$1NOT\$1READY** – Amazon GameLift Servers 伺服器遊戲工作階段未啟用。
+ **GAME\$1SESSION\$1READY\$1FAILED** – 的伺服器 SDK Amazon GameLift Servers 無法聯絡 服務來報告遊戲工作階段已就緒。
+ **INITIALIZATION\$1MISMATCH** – 在 Server：：Initialize() 之後呼叫用戶端方法，反之亦然。
+ **NOT\$1INITIALIZED** – Amazon GameLift Servers 伺服器或用戶端尚未使用 Initialize() 初始化。
+ **NO\$1TARGET\$1ALIASID\$1SET** – 尚未設定目標aliasId。
+ **NO\$1TARGET\$1FLEET\$1SET** – 尚未設定目標機群。
+ **PROCESS\$1ENDING\$1FAILED** – 的伺服器 SDK Amazon GameLift Servers 無法聯絡 服務來報告程序即將結束。
+ **PROCESS\$1NOT\$1ACTIVE** – 伺服器程序尚未啟動、未繫結至 GameSession，且無法接受或處理 PlayerSessions。
+ **PROCESS\$1NOT\$1READY** – 伺服器程序尚未準備好啟用。
+ **PROCESS\$1READY\$1FAILED** – 的伺服器 SDK Amazon GameLift Servers 無法聯絡 服務以報告程序已就緒。
+ **SDK\$1VERSION\$1DETECTION\$1FAILED** – SDK 版本偵測失敗。
+ **STX\$1CALL\$1FAILED** – 呼叫 XStx 伺服器後端元件失敗。
+ **STX\$1INITIALIZATION\$1FAILED** – XStx 伺服器後端元件無法初始化。
+ **UNEXPECTED\$1PLAYER\$1SESSION** – 伺服器遇到未註冊的玩家工作階段。
+ **WEBSOCKET\$1CONNECT\$1FAILURE** 
+ **WEBSOCKET\$1CONNECT\$1FAILURE\$1FORBIDDEN** 
+ **WEBSOCKET\$1CONNECT\$1FAILURE\$1INVALID\$1URL** 
+ **WEBSOCKET\$1CONNECT\$1FAILURE\$1TIMEOUT** 
+ **WEBSOCKET\$1RETRIABLE\$1SEND\$1MESSAGE\$1FAILURE** – 將訊息傳送至 GameLift Service WebSocket 的可重試失敗。
+ **WEBSOCKET\$1SEND\$1MESSAGE\$1FAILURE** – 無法傳送訊息至 GameLift Service WebSocket。
+ **MATCH\$1BACKFILL\$1REQUEST\$1VALIDATION** – 驗證請求失敗。
+ **PLAYER\$1SESSION\$1REQUEST\$1VALIDATION** – 驗證請求失敗。

**EPlayerSessionCreationPolicy**  
字串值代表遊戲工作階段是否可接受新玩家。有效值包含：  
+ **ACCEPT\$1ALL** – 接受所有新玩家工作階段。
+ **DENY\$1ALL** – 拒絕所有新玩家工作階段。
+ **NOT\$1SET** – 遊戲工作階段未設定為接受或拒絕新的玩家工作階段。

**EPlayerSessionStatus**  
+ **ACTIVE**
+ **COMPLETED (已完成)**
+ **NOT\$1SET**
+ **RESERVED**
+ **逾時**

[適用於 -- 資料類型的 C\$1\$1 (Unreal) 伺服器 SDK Amazon GameLift Servers 5.x](integration-server-sdk5-unreal-datatypes.md)

**Topics**
+ [適用於 -- 資料類型的 C\$1\$1 (Unreal) 伺服器 SDK Amazon GameLift Servers 5.x](integration-server-sdk5-unreal-datatypes.md)
+ [GetSdkVersion()](#integration-server-sdk5-unreal-getsdkversion)
+ [InitSDK()](#integration-server-sdk5-unreal-initsdk)
+ [InitSDK()](#integration-server-sdk5-unreal-initsdk-anywhere)
+ [ProcessReady()](#integration-server-sdk5-unreal-processready)
+ [ProcessEnding()](#integration-server-sdk5-unreal-processending)
+ [ActivateGameSession()](#integration-server-sdk5-unreal-activategamesession)
+ [UpdatePlayerSessionCreationPolicy()](#integration-server-sdk5-unreal-updateplayersessioncreationpolicy)
+ [GetGameSessionId()](#integration-server-sdk5-unreal-getgamesessionid)
+ [GetTerminationTime()](#integration-server-sdk5-unreal-getterm)
+ [AcceptPlayerSession()](#integration-server-sdk5-unreal-acceptplayersession)
+ [RemovePlayerSession()](#integration-server-sdk5-unreal-removeplayersession)
+ [DescribePlayerSessions()](#integration-server-sdk5-unreal-describeplayersessions)
+ [StartMatchBackfill()](#integration-server-sdk5-unreal-startmatchbackfill)
+ [StopMatchBackfill()](#integration-server-sdk5-unreal-stopmatchbackfill)
+ [GetComputeCertificate()](#integration-server-sdk5-unreal-getcomputecertificate)
+ [GetFleetRoleCredentials()](#integration-server-sdk5-unreal-getfleetrolecredentials)
+ [Destroy()](#integration-server-sdk5-unreal-ref-destroy)

## GetSdkVersion()
<a name="integration-server-sdk5-unreal-getsdkversion"></a>

傳回內建至伺服器程序的目前開發套件版本編號。

### 語法
<a name="integration-server-sdk5-unreal-getsdkversion-syntax"></a>

```
FGameLiftStringOutcome GetSdkVersion();
```

### 傳回值
<a name="integration-server-sdk5-unreal-getsdkversion-return"></a>

如果成功，將目前開發套件版本以 [FGameLiftStringOutcome](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-awsstringoutcome) 物件傳回。傳回的物件包含版本編號 （範例 `5.0.0`)。如果不成功，則會傳回錯誤訊息。

### 範例
<a name="integration-server-sdk5-unreal-getsdkversion-example"></a>

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

## InitSDK()
<a name="integration-server-sdk5-unreal-initsdk"></a>

初始化受管 EC2 機群的 Amazon GameLift Servers SDK。在與 相關的任何其他初始化Amazon GameLift Servers發生之前，請在啟動時呼叫此方法。此方法會從主機環境讀取伺服器參數，以設定伺服器與服務之間的通訊Amazon GameLift Servers。它使用等冪符記，因此您可以在失敗時安全地重試此呼叫。

### 語法
<a name="integration-server-sdk5-unreal-initsdk-syntax"></a>

```
FGameLiftGenericOutcome InitSDK()
```

### 傳回值
<a name="integration-server-sdk5-unreal-initsdk-return"></a>

如果成功， 會傳回 `InitSdkOutcome` 物件，指出伺服器程序已準備好呼叫 [ProcessReady()](#integration-server-sdk5-unreal-processready)。

### 範例
<a name="integration-server-sdk5-unreal-initsdk-example"></a>

```
//Call InitSDK to establish a local connection with the Amazon GameLift Servers Agent to enable further communication.
FGameLiftGenericOutcome initSdkOutcome = GameLiftSdkModule->InitSDK();
```

## InitSDK()
<a name="integration-server-sdk5-unreal-initsdk-anywhere"></a>

初始化 Anywhere 機群或受管容器機群的 Amazon GameLift Servers SDK。在與 相關的任何其他初始化Amazon GameLift Servers發生之前，請在啟動時呼叫此方法。此方法需要明確的伺服器參數，才能設定伺服器和服務之間的通訊Amazon GameLift Servers。它使用等冪符記，因此您可以在失敗時安全地重試此呼叫。

### 語法
<a name="integration-server-sdk5-unreal-initsdk-anywhere-syntax"></a>

```
FGameLiftGenericOutcome InitSDK(serverParameters)
```

### Parameters
<a name="integration-server-sdk5-unreal-initsdk-anywhere-parameter"></a>

[FServerParameters](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-serverparameters)  
若要在 Amazon GameLift Servers Anywhere 機群上初始化遊戲伺服器，請使用下列資訊建構`ServerParameters`物件：  
+ 用來連線至遊戲伺服器的 WebSocket URL。
+ 用於託管遊戲伺服器的程序 ID。
+ 託管遊戲伺服器程序的運算 ID。
+ 包含 Amazon GameLift Servers Anywhere 運算的Amazon GameLift Servers機群 ID。
+ Amazon GameLift Servers 操作產生的授權字符。

### 傳回值
<a name="integration-server-sdk5-unreal-initsdk-anywhere-return"></a>

如果成功， 會傳回 `InitSdkOutcome` 物件，指出伺服器程序已準備好呼叫 [ProcessReady()](#integration-server-sdk5-unreal-processready)。

**注意**  
如果針對部署到 Anywhere 機群的遊戲組建呼叫`InitSDK()`失敗，請檢查建立組建資源時使用的`ServerSdkVersion`參數。您必須將此值明確設定為正在使用的伺服器 SDK 版本。此參數的預設值為 4.x，不相容。若要解決此問題，請建立新的組建，並將其部署到新的機群。

### 範例
<a name="integration-server-sdk5-unreal-initsdk-anywhere-example"></a>

```
//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 Amazon GameLift Servers Agent to enable further communication.
FGameLiftGenericOutcome initSdkOutcome = GameLiftSdkModule->InitSDK(serverParameters);
```

## ProcessReady()
<a name="integration-server-sdk5-unreal-processready"></a>

Amazon GameLift Servers 通知伺服器程序已準備好託管遊戲工作階段。叫用 後呼叫此方法[InitSDK()](#integration-server-sdk5-unreal-initsdk)。每個程序只能呼叫此方法一次。

### 語法
<a name="integration-server-sdk5-unreal-processready-syntax"></a>

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

### Parameters
<a name="integration-server-sdk5-unreal-processready-parameter"></a>

**processParameters**  
傳達下列伺服器程序相關資訊的[FProcessParameters](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-process)物件：  
+ 在遊戲伺服器程式碼中實作的回呼方法名稱，Amazon GameLift Servers服務會叫用它來與伺服器程序通訊。
+ 伺服器程序正在接聽的埠號。
+ 任何要 Amazon GameLift Servers 擷取並存放的遊戲工作階段特定檔案路徑。

### 傳回值
<a name="integration-server-sdk5-unreal-processready-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-unreal-processready-example"></a>

此範例會說明 [ProcessReady()](#integration-server-sdk5-unreal-processready) 呼叫和委派函數的實作。

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

## ProcessEnding()
<a name="integration-server-sdk5-unreal-processending"></a>

Amazon GameLift Servers 通知伺服器程序正在終止。在所有其他清除任務 （包括關閉作用中的遊戲工作階段） 之後，以及在終止程序之前，呼叫此方法。根據 的結果`ProcessEnding()`，程序會以成功 (0) 或錯誤 (-1) 結束並產生機群事件。如果程序因錯誤而終止，產生的機群事件為 `SERVER_PROCESS_TERMINATED_UNHEALTHY`)。

### 語法
<a name="integration-server-sdk5-unreal-processending-syntax"></a>

```
FGameLiftGenericOutcome ProcessEnding()
```

### 傳回值
<a name="integration-server-sdk5-unreal-processending-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-unreal-processending-example"></a>

```
//OnProcessTerminate callback. Amazon GameLift Servers 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 Amazon GameLift Servers we are indeed going to shutdown.
params->OnTerminate.BindLambda([=]() {
  UE_LOG(GameServerLog, Log, TEXT("Game Server Process is terminating"));
  GameLiftSdkModule->ProcessEnding();
});
```

## ActivateGameSession()
<a name="integration-server-sdk5-unreal-activategamesession"></a>

Amazon GameLift Servers 通知伺服器程序已啟用遊戲工作階段，現在已準備好接收玩家連線。在所有遊戲工作階段初始化之後，應該呼叫此動作做為回`onStartGameSession()`呼函數的一部分。

### 語法
<a name="integration-server-sdk5-unreal-activategamesession-syntax"></a>

```
FGameLiftGenericOutcome ActivateGameSession()
```

### 傳回值
<a name="integration-server-sdk5-unreal-activategamesession-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-unreal-activategamesession-example"></a>

此範例顯示`ActivateGameSession()`稱為`onStartGameSession()`委派函數的一部分。

```
//When a game session is created, Amazon GameLift Servers 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()
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy"></a>

更新目前遊戲工作階段的能力，以接受新的玩家工作階段。遊戲工作階段可設定為接受或拒絕所有新的玩家工作階段。

### 語法
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy-syntax"></a>

```
FGameLiftGenericOutcome UpdatePlayerSessionCreationPolicy(EPlayerSessionCreationPolicy policy)
```

### Parameters
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy-parameter"></a>

**playerCreationSessionPolicy**  
字串值代表遊戲工作階段是否可接受新玩家。  
有效值包含：  
+ **ACCEPT\$1ALL** – 接受所有新玩家工作階段。
+ **DENY\$1ALL** – 拒絕所有新玩家工作階段。

### 傳回值
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy-example"></a>

此範例設定目前遊戲工作階段的加入政策為可接受所有玩家。

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

## GetGameSessionId()
<a name="integration-server-sdk5-unreal-getgamesessionid"></a>

擷取作用中伺服器程序託管的遊戲工作階段 ID。

對於未使用遊戲工作階段啟用的閒置程序，呼叫會傳回 [FGameLiftError](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-gamelifterror)。

### 語法
<a name="integration-server-sdk5-unreal-getgamesessionid-syntax"></a>

```
FGameLiftStringOutcome GetGameSessionId()
```

### Parameters
<a name="integration-server-sdk5-unreal-getgamesessionid-parameter"></a>

此動作沒有參數。

### 傳回值
<a name="integration-server-sdk5-unreal-getgamesessionid-return"></a>

如果成功，則會把遊戲工作階段 ID 當成 [FGameLiftStringOutcome](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-awsstringoutcome) 物件傳回。如果不成功， 會傳回錯誤訊息。」

對於未使用遊戲工作階段啟用的閒置程序，呼叫會傳回 `Success`=`True` 和 `GameSessionId`=`""`。

### 範例
<a name="integration-server-sdk5-unreal-getgamesessionid-example"></a>

```
//When a game session is created, Amazon GameLift Servers 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()
<a name="integration-server-sdk5-unreal-getterm"></a>

若設有終止時間，即傳回伺服器程序排定關閉的時間。伺服器程序在收到來自 的回`onProcessTerminate()`呼後會採取動作Amazon GameLift Servers。 Amazon GameLift Servers會`onProcessTerminate()`呼叫 ，原因如下：
+ 當伺服器程序回報運作狀態不佳或未回應 時Amazon GameLift Servers。
+ 在縮減規模事件期間終止執行個體時。
+ 當執行個體因 [spot-instance 中斷](spot-tasks.md)而終止時。

### 語法
<a name="integration-server-sdk5-unreal-getterm-syntax"></a>

```
AwsDateTimeOutcome GetTerminationTime()
```

### 傳回值
<a name="integration-server-sdk5-unreal-getterm-return"></a>

如果成功， 會將終止時間傳回為 `AwsDateTimeOutcome` 物件。值是終止時間，以自 以來經過的刻度表示`0001 00:00:00`。例如，日期時間值`2020-09-13 12:26:40 -000Z`等於`637355968000000000`刻度。如果沒有可用的終止時間， 會傳回錯誤訊息。

如果程序尚未收到` ProcessParameters.OnProcessTerminate()`回呼，則會傳回錯誤訊息。如需關閉伺服器程序的詳細資訊，請參閱 [回應伺服器程序關閉通知](gamelift-sdk-server-api.md#gamelift-sdk-server-terminate)。

### 範例
<a name="integration-server-sdk5-unreal-getterm-example"></a>

```
AwsDateTimeOutcome TermTimeOutcome = GameLiftSdkModule->GetTerminationTime();
```

## AcceptPlayerSession()
<a name="integration-server-sdk5-unreal-acceptplayersession"></a>

Amazon GameLift Servers 通知具有指定玩家工作階段 ID 的玩家已連線至伺服器程序，且需要驗證。 Amazon GameLift Servers 會驗證玩家工作階段 ID 是否有效。驗證玩家工作階段後， 會將玩家位置Amazon GameLift Servers的狀態從 RESERVED 變更為 ACTIVE。

### 語法
<a name="integration-server-sdk5-unreal-acceptplayersession-syntax"></a>

```
FGameLiftGenericOutcome AcceptPlayerSession(const FString& playerSessionId)
```

### Parameters
<a name="integration-server-sdk5-unreal-acceptplayersession-parameter"></a>

playerSessionId  
建立新玩家工作階段Amazon GameLift Servers時由 發出的唯一 ID。

### 傳回值
<a name="integration-server-sdk5-unreal-acceptplayersession-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-unreal-acceptplayersession-example"></a>

此範例會處理連線請求，其中包含驗證和拒絕非有效的玩家工作階段 IDs。

```
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()
<a name="integration-server-sdk5-unreal-removeplayersession"></a>

Amazon GameLift Servers 通知玩家已中斷與伺服器程序的連線。作為回應， Amazon GameLift Servers 會將玩家位置變更為可用。

### 語法
<a name="integration-server-sdk5-unreal-removeplayersession-syntax"></a>

```
FGameLiftGenericOutcome RemovePlayerSession(const FString& playerSessionId)
```

### Parameters
<a name="integration-server-sdk5-unreal-removeplayersession-parameter"></a>

**`playerSessionId`**  
建立新玩家工作階段Amazon GameLift Servers時由 發出的唯一 ID。

### 傳回值
<a name="integration-server-sdk5-unreal-removeplayersession-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-unreal-removeplayersession-example"></a>

```
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()
<a name="integration-server-sdk5-unreal-describeplayersessions"></a>

擷取玩家工作階段資料，其中包括設定、工作階段中繼資料和玩家資料。使用此方法取得下列相關資訊：
+ 單一玩家工作階段
+ 遊戲工作階段中的所有玩家工作階段
+ 與單一玩家 ID 相關聯的所有玩家工作階段

### 語法
<a name="integration-server-sdk5-unreal-describeplayersessions-syntax"></a>

```
FGameLiftDescribePlayerSessionsOutcome DescribePlayerSessions(const FGameLiftDescribePlayerSessionsRequest &describePlayerSessionsRequest)
```

### Parameters
<a name="integration-server-sdk5-unreal-describeplayersessions-parameter"></a>

**[FGameLiftDescribePlayerSessionsRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-playersessions)**  
描述要擷取哪些玩家工作階段的[FGameLiftDescribePlayerSessionsRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-playersessions)物件。

### 傳回值
<a name="integration-server-sdk5-unreal-describeplayersessions-return"></a>

如果成功，會傳回 [FGameLiftDescribePlayerSessionsOutcome](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-describeplayersessionsoutcome) 物件，內含一組與請求參數相符的玩家工作階段物件。

### 範例
<a name="integration-server-sdk5-unreal-describeplayersessions-example"></a>

此範例會請求主動連線到指定遊戲工作階段的所有玩家工作階段。透過省略 *NextToken* 並將*限制*值設定為 10， 會Amazon GameLift Servers傳回符合請求的前 10 個玩家工作階段記錄。

```
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()
<a name="integration-server-sdk5-unreal-startmatchbackfill"></a>

此動作會傳送請求，以便替 FlexMatch 所建立的遊戲工作階段​開放空位找到新玩家。如需詳細資訊，請參閱[FlexMatch回填功能](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-backfill.html)。

此為非同步動作。如果新玩家相符， 會使用回呼函數 Amazon GameLift Servers交付更新的配對建構器資料`OnUpdateGameSession()`。

一個伺服器程序一次僅能有一個使用中的配對回填請求。若要發送新請求，請先呼叫 [StopMatchBackfill()](#integration-server-sdk5-unreal-stopmatchbackfill) 取消原始請求。

### 語法
<a name="integration-server-sdk5-unreal-startmatchbackfill-syntax"></a>

```
FGameLiftStringOutcome StartMatchBackfill (FStartMatchBackfillRequest &startBackfillRequest);
```

### Parameters
<a name="integration-server-sdk5-unreal-startmatchbackfill-parameter"></a>

**[FStartMatchBackfillRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-startmatchbackfillrequest)**  
StartMatchBackfillRequest 物件，可傳達下列資訊：  
+ 指派給回填請求的票證 ID。此資訊是選用的；如果未提供 ID， Amazon GameLift Servers將產生一個 ID。
+ 傳送請求對象的配對建構器。必須填入完整的組態 ARN。此值位於遊戲工作階段的配對建構器資料中。
+ 要回填的遊戲工作階段 ID。
+ 遊戲工作階段目前玩家的可用配對資料。

### 傳回值
<a name="integration-server-sdk5-unreal-startmatchbackfill-return"></a>

傳回具有相符回填票證 ID 或失敗並顯示錯誤訊息的`StartMatchBackfillOutcome`物件。

### 範例
<a name="integration-server-sdk5-unreal-startmatchbackfill-example"></a>

```
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()
<a name="integration-server-sdk5-unreal-stopmatchbackfill"></a>

取消作用中的配對回填請求。如需詳細資訊，請參閱[FlexMatch回填功能](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-backfill.html)。

### 語法
<a name="integration-server-sdk5-unreal-stopmatchbackfill-syntax"></a>

```
FGameLiftGenericOutcome StopMatchBackfill (FStopMatchBackfillRequest &stopBackfillRequest);
```

### Parameters
<a name="integration-server-sdk5-unreal-stopmatchbackfill-parameter"></a>

**[FStopMatchBackfillRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-stopmatchbackfillrequest)**  
識別要取消之配對票證的 StopMatchBackfillRequest 物件：  
+ 指派給回填請求的票證 ID。
+ 回填請求傳送到的配對建構器。
+ 與回填請求相關聯的遊戲工作階段。

### 傳回值
<a name="integration-server-sdk5-unreal-stopmatchbackfill-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-unreal-stopmatchbackfill-example"></a>

```
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()
<a name="integration-server-sdk5-unreal-getcomputecertificate"></a>

擷取用於加密 Amazon GameLift Servers Anywhere 運算資源與 之間網路連線的 TLS 憑證路徑Amazon GameLift Servers。您可以在向 Amazon GameLift Servers Anywhere 機群註冊運算裝置時使用憑證路徑。如需詳細資訊，請參閱 [RegisterCompute](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_RegisterCompute.html)。

### 語法
<a name="integration-server-sdk5-unreal-getcomputecertificate-syntax"></a>

```
FGameLiftGetComputeCertificateOutcome FGameLiftServerSDKModule::GetComputeCertificate()
```

### 傳回值
<a name="integration-server-sdk5-unreal-getcomputecertificate-return"></a>

傳回包含下列項目的`GetComputeCertificateResponse`物件：
+ CertificatePath：運算資源上 TLS 憑證的路徑。
+ HostName：運算資源的主機名稱。

### 範例
<a name="integration-server-sdk5-unreal-getcomputecertificate-example"></a>

```
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()
<a name="integration-server-sdk5-unreal-getfleetrolecredentials"></a>

擷取授權 與其他 互動的 IAM 角色登入Amazon GameLift Servers資料 AWS 服務。如需詳細資訊，請參閱[將Amazon GameLift Servers託管遊戲伺服器連接到其他 AWS 資源](gamelift-sdk-server-resources.md)。

### 語法
<a name="integration-server-sdk5-unreal-getfleetrolecredentials-syntax"></a>

```
FGameLiftGetFleetRoleCredentialsOutcome FGameLiftServerSDKModule::GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest &request)
```

### Parameters
<a name="integration-server-sdk5-unreal-getfleetrolecredentials-parameters"></a>

[FGameLiftGetFleetRoleCredentialsRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsrequest)

### 傳回值
<a name="integration-server-sdk5-unreal-getfleetrolecredentials-return"></a>

其會傳回 [FGameLiftGetFleetRoleCredentialsOutcome](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsoutcome) 物件。

### 範例
<a name="integration-server-sdk5-unreal-getfleetrolecredentials-example"></a>

```
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
}
```

## Destroy()
<a name="integration-server-sdk5-unreal-ref-destroy"></a>

從記憶體釋放Amazon GameLift Servers遊戲伺服器 SDK。最佳實務是在終止程序之後`ProcessEnding()`和之前呼叫此方法。如果您使用的是 Anywhere 機群，而且沒有在每次遊戲工作階段後終止伺服器程序，請在通知程序已準備好使用 託管遊戲工作階段之前，先呼叫 Amazon GameLift Servers `Destroy()`，然後`InitSDK()`重新初始化 `ProcessReady()`。

### 語法
<a name="integration-server-sdk5-unreal-ref-destroy-syntax"></a>

```
FGameLiftGenericOutcome Destroy();
```

### Parameters
<a name="integration-server-sdk5-unreal-ref-destroy-parameter"></a>

沒有參數。

### 傳回值
<a name="integration-server-sdk5-unreal-ref-destroy-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-unreal-ref-destroy-example"></a>

```
// First call ProcessEnding()
FGameLiftGenericOutcome processEndingOutcome = GameLiftSdkModule->ProcessEnding();
  
// Then call Destroy() to free the SDK from memory
FGameLiftGenericOutcome destroyOutcome = GameLiftSdkModule->Destroy();
  
// Exit the process with success or failure
if (processEndingOutcome.IsSuccess() && destroyOutcome.IsSuccess()) 
    {
    UE_LOG(GameServerLog, Log, TEXT("Server process ending successfully"));
}
else {
    if (!processEndingOutcome.IsSuccess()) {
        const FGameLiftError& error = processEndingOutcome.GetError();
        UE_LOG(GameServerLog, Error, TEXT("ProcessEnding() failed. Error: %s"),
        error.m_errorMessage.IsEmpty() ? TEXT("Unknown error") : *error.m_errorMessage);
    }
    if (!destroyOutcome.IsSuccess()) {
        const FGameLiftError& error = destroyOutcome.GetError();
        UE_LOG(GameServerLog, Error, TEXT("Destroy() failed. Error: %s"),
        error.m_errorMessage.IsEmpty() ? TEXT("Unknown error") : *error.m_errorMessage);
    }
}
```