

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

# Unity 的外掛程式：使用 Amazon GameLift Servers Anywhere 設定本機測試
<a name="unity-plug-in-anywhere"></a>

在此工作流程中，您可以新增 Amazon GameLift Servers功能的用戶端和伺服器遊戲程式碼，並使用 外掛程式將本機工作站指定為測試遊戲伺服器主機。當您完成整合任務時，請使用 外掛程式來建置遊戲用戶端和伺服器元件。

**若要啟動 Amazon GameLift Servers Anywhere 工作流程：**
+ 在 Unity 編輯器主功能表中，選擇**Amazon GameLift Servers**並選取 **Host with Anywhere**。此動作會開啟外掛程式頁面，以使用 @Anywhere 機群設定您的遊戲。此頁面提供五個步驟的程序來整合、建置和啟動遊戲元件。

## 設定您的設定檔
<a name="unity-plug-in-anywhere-profile"></a>

選擇您要在遵循此工作流程時使用的設定檔。您選取的設定檔會影響工作流程中的所有步驟。您建立的所有資源都會與設定檔 AWS 的帳戶相關聯，並放置在設定檔的預設 AWS 區域中。設定檔使用者的許可決定您對 AWS 資源和動作的存取。

1. 從可用設定檔的下拉式清單中選取設定檔。如果您還沒有設定檔，或想要建立新的設定檔，請前往**Amazon GameLift Servers**選單並選擇**設定 AWS 帳戶設定檔**。

1. 如果引導狀態不是「作用中」，請選擇**引導設定檔**，並等待狀態變更為「作用中」。

## 將您的遊戲程式碼與 C\$1 伺服器 SDK 整合
<a name="unity-plug-in-anywhere-integrate"></a>

**注意**  
如果您匯入了範例遊戲，則可以略過此步驟。範例遊戲資產已有必要的伺服器和用戶端程式碼。

對於工作流程中的此步驟，您可以更新遊戲專案中的用戶端和伺服器程式碼。
+ 遊戲伺服器必須能夠與服務通訊Amazon GameLift Servers，以接收啟動遊戲工作階段、提供遊戲工作階段連線資訊以及報告狀態的提示。
+ 遊戲用戶端必須能夠取得遊戲工作階段的相關資訊、加入或啟動遊戲工作階段，以及取得連線資訊以加入遊戲。

### 整合您的伺服器程式碼
<a name="unity-plug-in-anywhere-integrate-server"></a>

如果您使用自己的遊戲專案搭配自訂場景，請使用提供的範例程式碼將必要的伺服器程式碼新增至您的遊戲專案：

1. 在您的遊戲專案檔案中，開啟 `Assets/Scripts/Server` 資料夾。如果不存在，請建立它。

1. 前往 GitHub repo [ aws/amazon-gamelift-plugin-unity](https://github.com/aws/amazon-gamelift-plugin-unity) 並開啟路徑 `Samples~/SampleGame/Assets/Scripts/Server`。

1. 找到 檔案並將其`GameLiftServer.cs`複製到遊戲專案的`Server`資料夾。當您建置伺服器可執行檔時，請使用此檔案做為建置目標。

範例程式碼包含這些最低必要元素，這些元素使用 Amazon GameLift Servers C\$1 伺服器 SDK （第 5 版）：
+ 初始化 Amazon GameLift Servers API 用戶端。Amazon GameLift Servers Anywhere 機群需要具有伺服器參數的`InitSDK()`呼叫。這些設定會自動設定為在 外掛程式中使用。
+ 實作必要的回呼函數，以回應來自 Amazon GameLift Servers服務的請求，包括 `OnStartGameSession`、 `OnProcessTerminate`和 `onHealthCheck`。
+ `ProcessReady()` 使用指定的連接埠呼叫 ，以在伺服器程序準備好託管遊戲工作階段時通知Amazon GameLift Servers服務。

如果您想要自訂範例伺服器程式碼，請參閱這些資源：
+ [使用伺服器 SDK 將 Amazon GameLift Servers新增至您的遊戲伺服器](gamelift-sdk-server-api.md)
+ [適用於 -- 動作的 C\$1 伺服器 SDK Amazon GameLift Servers 5.x](integration-server-sdk5-csharp-actions.md)

### 整合您的用戶端程式碼
<a name="unity-plug-in-anywhere-integrate-client"></a>

如果您使用自己的遊戲專案搭配自訂場景，則需要將基本功能整合到您的遊戲用戶端。您也需要新增 UI 元素，讓玩家可以登入並加入遊戲工作階段。使用適用於 的服務 API Amazon GameLift Servers（在 AWS SDK 中） 取得遊戲工作階段資訊、建立新的遊戲工作階段，或加入現有的遊戲工作階段，

使用 Anywhere 機群建置用戶端進行本機測試時，您可以將直接呼叫新增至Amazon GameLift Servers服務。當您為雲端託管開發遊戲時，或者如果您計劃使用 Anywhere 機群進行生產託管時，您將需要建立用戶端後端服務，以處理遊戲用戶端與 Amazon GameLift Servers服務之間的所有通訊。

若要Amazon GameLift Servers整合到您的用戶端程式碼，請使用下列資源做為指南。
+ 將用戶端與 GitHub repo aws/amazon-gamelift-plugin-unity 中的 GameLiftCoreApi 類別整合。此類別提供玩家身分驗證和擷取遊戲工作階段資訊的控制項。
+ 檢視遊戲整合範例，請參閱 GitHub repo aws/amazon-gamelift-plugin-unity，`Samples~/SampleGame/Assets/Scripts/Client/GameLiftClient.cs`。
+ 請遵循將 Amazon GameLift Servers 新增至 Unity 遊戲用戶端中的指示。

對於連接到 Anywhere 機群的遊戲用戶端，您的遊戲用戶端需要以下資訊。外掛程式會自動更新您的遊戲專案，以使用您在外掛程式中建立的資源。
+ FleetId - Anywhere 機群的唯一識別符。
+ FleetLocation - Anywhere 機群的自訂位置。
+ AwsRegion - Anywhere 機群託管 AWS 的區域。這是您在使用者設定檔中設定的區域。
+ ProfileName - 本機電腦上的 AWS 登入資料設定檔，允許存取適用於 Amazon GameLift Servers 的 AWS SDK。遊戲用戶端使用這些登入資料來驗證對 Amazon GameLift Servers服務的請求。

**注意**  
登入資料設定檔是由 外掛程式產生，並存放在本機電腦上。因此，您必須在本機機器 （或具有相同設定檔的機器） 上執行用戶端。

## 連線至 Anywhere 機群
<a name="unity-plug-in-anywhere-fleet"></a>

在此步驟中，您會指定要使用的 Anywhere 機群。Anywhere 機群定義了運算資源的集合，這些資源可以位於任何地方，用於遊戲伺服器託管。
+ 如果您目前使用的 AWS 帳戶有現有的 Anywhere 機群，請開啟**機群名稱**下拉式清單欄位，然後選擇機群。此下拉式清單只會顯示目前作用中使用者設定檔 AWS 區域中的 Anywhere 機群。
+ 如果沒有現有機群，或者您想要建立新的機群，請選擇**建立新的 Anywhere 機群**並提供機群名稱。

在您為專案選擇 Anywhere 機群之後， Amazon GameLift Servers 會驗證機群狀態為作用中，並顯示機群 ID。您可以在 Unity 編輯器的輸出日誌中追蹤此請求的進度。

## 註冊運算
<a name="unity-plug-in-anywhere-register"></a>

在此步驟中，您會將本機工作站註冊為新 Anywhere 機群中的運算資源。

1. 輸入本機電腦的運算名稱。如果您在機群中新增多個運算，名稱必須是唯一的。

1. 選擇**註冊運算**。您可以在 Unity 編輯器的輸出日誌中追蹤此請求的進度。

外掛程式會使用設定為 localhost (127.0.0.1) 的 IP 地址註冊您的本機工作站。此設定假設您將在相同的機器上執行遊戲用戶端和伺服器。

為了回應此動作， Amazon GameLift Servers 會驗證它是否可以連接到運算，並傳回有關新註冊的運算的資訊。

## 啟動遊戲
<a name="unity-plug-in-anywhere-launch"></a>

在此步驟中，您將建置遊戲元件並啟動它們來玩遊戲。完成下列任務：

1. 設定您的遊戲用戶端。在此步驟中，您會提示外掛程式更新遊戲專案的`GameLiftClientSettings`資產。外掛程式會使用此資產來存放遊戲用戶端連線至Amazon GameLift Servers服務所需的特定資訊。

   1. 如果您未匯入並初始化範例遊戲，請建立新的`GameLiftClientSettings`資產。在 Unity 編輯器主功能表中，選擇**資產、建立、Amazon GameLift、用戶端設定**。如果您在專案`GameLiftClientSettings`中建立多個 複本，外掛程式會自動偵測此情況，並通知您外掛程式將更新的資產。

   1. 在**啟動遊戲**中，選擇**設定用戶端：Application Anywhere 設定**。此動作會更新您的遊戲用戶端設定，以使用您剛設定的 Anywhere 機群。

1. 建置並執行您的遊戲用戶端。

   1. 使用標準 Unity 建置程序建置用戶端可執行檔。在**檔案、建置設定**中，將平台切換到 **Windows、Mac、Linux**。如果您匯入範例遊戲並初始化設定，則建置清單和建置目標會自動更新。

   1. 啟動新建置的遊戲用戶端可執行檔的一或多個執行個體。

1. 在 Anywhere 機群中啟動遊戲伺服器。選擇**伺服器：在編輯器中啟動伺服器**。只要 Unity 編輯器保持開啟狀態，此任務就會啟動用戶端可以連線的即時伺服器。

1. 開始或加入遊戲工作階段。在您的遊戲用戶端執行個體中，使用 UI 將每個用戶端加入遊戲工作階段。如何執行此操作取決於如何將功能新增至用戶端。

如果您使用的是範例遊戲用戶端，則具有下列特性：
+ 玩家登入元件。連線至 Anywhere 機群上的遊戲伺服器時，沒有玩家驗證。您可以輸入任何值來加入遊戲工作階段。
+ 簡單加入遊戲 UI。當用戶端嘗試加入遊戲時，用戶端會自動尋找具有可用玩家位置的作用中遊戲工作階段。如果沒有可用的遊戲工作階段，用戶端會請求新的遊戲工作階段。如果遊戲工作階段可用，用戶端會請求加入可用的遊戲工作階段。使用多個並行用戶端測試遊戲時，第一個用戶端會啟動遊戲工作階段，其餘用戶端會自動加入現有的遊戲工作階段。
+ 具有四個玩家位置的遊戲工作階段。您可以同時啟動最多四個遊戲用戶端執行個體，它們將加入相同的遊戲工作階段。

**從伺服器可執行檔啟動 （選用）**

您可以建置和啟動遊戲伺服器可執行檔，以便在 Anywhere 機群上進行測試。

1. 使用標準 Unity 建置程序建置伺服器可執行檔。在**檔案、建置設定**中，將平台切換到**專用伺服器**和建置。

1. 使用 Anywhere 機群 ID 和 AWS 區域呼叫 AWS CLI 命令 [get-compute-auth-token](https://docs.aws.amazon.com/cli/latest/reference/gamelift/get-compute-auth-token.html)，以取得短期身分驗證字符。當您建立機群時，機群 ID 會顯示在**連線至 Anywhere **機群中。當您選取作用中的設定檔時， AWS 區域會顯示在設定設定檔中。 ****

   ```
   aws gamelift get-compute-auth-token --fleet-id [your anywhere fleet ID] --region [your AWS region]
   ```

1. 從命令列啟動新建置的遊戲伺服器可執行檔，並傳遞有效的身分驗證字符。

   ```
   my_project.exe --authToken [token]
   ```