

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

# 使用 Amazon GameLift Servers Anywhere 設定本機測試
<a name="integration-testing"></a>

**注意**  
本主題涵蓋與適用於 5.x Amazon GameLift Servers版的伺服器 SDK 整合之遊戲的本機測試。如果您的遊戲使用伺服器 SDK 4.x 版或更早版本，請參閱 [使用 Amazon GameLift Servers Local 測試您的整合](integration-testing-local.md)。

使用 Amazon GameLift Servers Anywhere 機群和您自己的硬體，在模擬託管環境中反覆建置和測試遊戲元件。設定 Anywhere 機群並註冊本機裝置，以建立 Amazon GameLift Servers服務的連線。在裝置上安裝遊戲伺服器組建、啟動遊戲伺服器程序，並視需要測試遊戲功能。您可以視需要更新遊戲伺服器組建，以測試每個新的組建反覆運算。

透過 Anywhere 機群，您可以使用 AWS CLI 或測試指令碼進行測試。如果您已將遊戲用戶端與 整合Amazon GameLift Servers，您可以在相同的本機裝置上或不同的裝置上執行用戶端。

使用 Anywhere 機群在本機測試對於測試與 的遊戲伺服器整合特別有用Amazon GameLift Servers。您可以完整了解本機電腦上的所有託管活動，以及事件和記錄資料。

**注意**  
您是否使用 Unreal Engine 或 Unity 的Amazon GameLift Servers外掛程式？ 這些工具包括使用 Anywhere 機群設定本機測試的引導式工作流程。遵循 [Unity 的外掛程式：使用 Amazon GameLift Servers Anywhere 設定本機測試](unity-plug-in-anywhere.md)或 的文件[Unreal 的外掛程式：使用 Amazon GameLift Servers Anywhere 在本機託管您的遊戲](unreal-plugin-anywhere.md)。

**Topics**
+ [設定 local Anywhere 機群](#integration-testing-anywhere-fleet)
+ [更新並安裝遊戲伺服器](#integration-testing-dev)
+ [測試遊戲工作階段活動](#integration-testing-test)
+ [在您的遊戲伺服器上反覆運算](#fleet-anywhere-iteration)
+ [將您的遊戲轉換為Amazon GameLift Servers受管機群](#fleet-anywhere-transition)

## 設定 local Anywhere 機群
<a name="integration-testing-anywhere-fleet"></a>

請依照下列步驟，為您的本機工作站建立 Anywhere 機群。如需使用 AWS CLI 或 AWS 管理主控台 適用於 的 的詳細說明Amazon GameLift Servers，請參閱 [建立 Amazon GameLift ServersAnywhere 機群](fleets-creating-anywhere.md)。

**建立 Anywhere 機群**

1. **為您的本機工作站建立自訂位置。(AWS CLI 或主控台）。**自訂位置只是您計劃包含在 Anywhere 機群中的運算資源的標籤。自訂位置名稱必須以 開頭`custom-`。例如：`custom-my_laptop`。請參閱 [建立自訂位置](fleets-creating-anywhere.md#fleet-anywhere-location)。

1. **建立 Anywhere 機群 (AWS CLI 或主控台）。**在此步驟中，使用本機工作站的自訂位置建立機群資源。請參閱 [建立 Anywhere 機群](fleets-creating-anywhere.md#fleet-anywhere-create)。

   請記下新機群的 ID 或 ARN 值。在下一個步驟中，您將需要用到此值。

1. **將本機工作站註冊為機群運算 （僅限AWS CLI)。**Anywhere 機群必須至少有一個運算資源來託管您的遊戲伺服器。請參閱 [將運算新增至機群](fleets-creating-anywhere.md#fleet-anywhere-compute)。若要將運算新增至機群，您需要下列資訊：
   + 運算名稱。機群中的每個運算都必須具有唯一的名稱。
   + Anywhere 機群識別符。您可以使用 `FleetID`或 `FleetArn`。
   + 運算的連線資訊。指定 `IpAddress` 或 `DnsName`。這是 Amazon GameLift Servers和 遊戲用戶端連線到遊戲伺服器的方式。
   + Anywhere 機群中的自訂位置。

   記下`GameLiftServiceSdkEndpoint`傳回值。當您更新遊戲伺服器以在 Anywhere 機群上執行時，將需要此值。

## 更新並安裝遊戲伺服器
<a name="integration-testing-dev"></a>

此任務假設您已將遊戲伺服器組建與Amazon GameLift Servers伺服器 SDK 5.x 整合。整合程序涉及將程式碼新增至遊戲伺服器，以便與 Amazon GameLift Servers服務互動，以啟動和管理遊戲工作階段。

對於 Anywhere 機群，您需要手動設定特定遊戲伺服器設定。在 Amazon GameLift Servers 受管機群上，這些設定會自動設定。

**為 Anywhere 機群準備遊戲伺服器**

1. **取得身分驗證字符。**您的遊戲伺服器必須在與服務的每次通訊中包含身分驗證字符Amazon GameLift Servers。Amazon GameLift Servers身分驗證字符是短期的，必須定期重新整理。

   最佳實務是建立指令碼以完成下列任務：
   + 呼叫 AWS CLI 動作 `get-compute-auth-token`。
   + 將傳回的字符值存放在遊戲伺服器程序可以擷取的位置，例如本機運算的環境變數中。

   在運算中搭配遊戲伺服器安裝指令碼。將指令碼設定為在開始第一個遊戲伺服器程序之前執行。當遊戲伺服器程序處於作用中狀態時，請定期執行指令碼以維護有效的身分驗證字符。運算上的所有遊戲伺服器程序都可以使用相同的身分驗證字符。

1. **更新您的Amazon GameLift Servers遊戲伺服器程式碼。**當您將遊戲伺服器程式碼與適用於 的伺服器 SDK 整合時Amazon GameLift Servers，會將呼叫新增至動作 `InitSdk()`。當遊戲伺服器在 Anywhere 機群上執行時，此呼叫需要額外的伺服器參數。如需詳細資訊，請參閱開發語言[適用於 的伺服器 SDK 5.x Amazon GameLift Servers](reference-serversdk.md)的 [初始化伺服器程序](gamelift-sdk-server-api.md#gamelift-sdk-server-initialize)和 。伺服器參數為：
   + `webSocketUrl` – 將此參數設定為當您向機群註冊運算時傳回`GameLiftServiceSdkEndpoint`的值。
   + `hostId` – 將此參數設定為您在向 Anywhere 機群註冊運算時指定的運算名稱。
   + `fleetId` – 將此參數設定為 Anywhere 機群的 ID。
   + `authToken` – 將此參數設定為權杖，此權杖會傳回以回應擷取運算真我權杖的請求。
   + `processId` – 設定此參數以識別在本機運算上執行的遊戲伺服器程序。每個並行遊戲伺服器程序都必須具有唯一的程序 ID。

   每個遊戲伺服器程序使用的伺服器參數值，必須專屬於執行程序的 Anywhere 機群運算。如需如何取得運算適當值的詳細資訊，請參閱 [將運算新增至機群](fleets-creating-anywhere.md#fleet-anywhere-compute)。最佳實務是在本機運算上將 `webSocketUrl`、`fleetId`、 `hostId`和 `authToken`設定為環境變數。在運算上執行的所有伺服器程序都會使用這些值。

1. 在本機運算上安裝遊戲伺服器組建。包含執行遊戲伺服器所需的所有相依性。

1. 啟動在本機運算上執行的一或多個遊戲伺服器程序。當遊戲伺服器程序呼叫伺服器 SDK 動作 時`ProcessReady()`，程序已準備好託管遊戲工作階段。

## 測試遊戲工作階段活動
<a name="integration-testing-test"></a>

使用遊戲工作階段測試您的遊戲伺服器整合。如果您沒有與 Amazon GameLift Servers功能整合的遊戲用戶端，您可以使用 AWS CLI 來啟動遊戲工作階段。嘗試下列案例：
+ **建立遊戲工作階段。**呼叫 [create-game-session ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-game-session.html) 命令 （或 [ CreateGameSession](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateGameSession.html) API 操作）。指定您的 Anywhere 機群 ID 和自訂位置。此呼叫會傳回新遊戲工作階段的唯一識別符。
+ **檢查遊戲工作階段狀態。 **呼叫 [describe-game-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-game-sessions.html) 命令 （或 [DescribeGameSessions](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_DescribeGameSessions.html) API 動作）。指定遊戲工作階段 ID。此呼叫會傳回詳細的遊戲工作階段資訊，包括遊戲工作階段狀態。處於作用中狀態的遊戲工作階段已準備好供玩家連線。若要取得機群的所有遊戲工作階段清單，請呼叫 [list-game-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/list-game-sessions.html) 命令 （或 [ListGameSessions](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_ListGameSessions.html) API 動作）。
+ **連線至遊戲工作階段。**如果您的遊戲用戶端能夠加入遊戲工作階段，請使用遊戲工作階段資訊中包含的連線資訊。

## 在您的遊戲伺服器上反覆運算
<a name="fleet-anywhere-iteration"></a>

您可以使用相同的Anywhere機群和運算來測試遊戲伺服器組建的其他版本。

1. **清除現有的 `GameSession`。**如果遊戲伺服器程序當機或無法呼叫 `ProcessEnding()`， 會在遊戲伺服器停止傳送運作狀態檢查`GameSession`後Amazon GameLift Servers清除 。

1. **產生新的遊戲伺服器組建。**變更遊戲伺服器並封裝修訂後的組建。

1. **在本機運算上更新遊戲伺服器組建。**您先前的 Anywhere 機群仍處於作用中狀態，且您的筆記型電腦仍註冊為機群中的運算資源。

1. **取得更新的授權字符。**呼叫 [get-compute-auth-token](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/get-compute-auth-token.html) CLI 命令，並將權杖存放在本機運算上。

1. **啟動在本機運算上執行的一或多個遊戲伺服器程序。**當遊戲伺服器程序呼叫 時`ProcessReady()`，即可用於測試。

## 將您的遊戲轉換為Amazon GameLift Servers受管機群
<a name="fleet-anywhere-transition"></a>

完成開發測試並準備好準備啟動後，這是切換到Amazon GameLift Servers受管機群的好時機。使用受管機群來微調和測試您的遊戲託管資源。實作遊戲工作階段置放解決方案 （佇列和配對建構器），選取最佳託管硬體 （包括 Spot 機群） 和位置，然後選擇擴展容量的策略。您也可以開始使用 AWS CloudFormation ，更有效地管理所有遊戲託管資源的生命週期，包括機群、佇列和配對建構器。

您需要稍微修改，才能從本機 Anywhere 測試機群轉換到Amazon GameLift Servers受管機群。您可以重複使用相同的佇列和配對建構器。執行下列任務：
+ **將遊戲伺服器程式碼呼叫變更為 `InitSdk()`。**移除伺服器參數。對於受管機群， Amazon GameLift Servers會自動追蹤此資訊。
+ **建立Amazon GameLift Servers建置資源。**使用 Anywhere 測試機群，您必須手動將遊戲伺服器建置和相依性部署到每個機群運算。使用受管機群，您可以建立遊戲建置套件並將其上傳至 Amazon GameLift Servers，以自動將其部署至所有機群運算。[為 建立遊戲伺服器組建 Amazon GameLift Servers](gamelift-build-cli-uploading.md) 如需封裝遊戲建置檔案，以及使用 Amazon S3 儲存貯體中的檔案建立建置資源的詳細資訊，請參閱 。請勿包含註冊運算並取得身分驗證字符的指令碼，因為 Amazon GameLift Servers會自動使用受管機群處理這些任務。
+ **建立受管機群。**使用主控台或 AWS CLI 建立機群，指定 EC2 受管機群。這種類型的機群需要額外的組態設定，包括指定建置資源和執行個體類型。所有 都需要設定執行時間組態，以管理每個機群運算的遊戲伺服器生命週期。[建立Amazon GameLift Servers受管 EC2 機群](fleets-creating.md) 如需建立受管機群的詳細資訊，請參閱 。
+ **重新導向機群別名 （選用）。**如果您將別名設定為與 Anywhere 機群搭配使用，則可以為受管機群重複使用相同的別名。[建立Amazon GameLift Servers別名](aliases-creating.md) 如需建立或更新別名的詳細資訊，請參閱 。