

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

# Unreal 的外掛程式：將您的遊戲部署到受管 EC2 機群
<a name="unreal-plugin-ec2"></a>

在此工作流程中，部署您的遊戲以託管 管理的雲端型運算資源Amazon GameLift Servers。將您的整合遊戲伺服器建置上傳至 Amazon GameLift Servers服務以進行部署。如果您尚未整合遊戲程式碼，請參閱 [Unreal 的外掛程式：整合您的遊戲程式碼](unreal-plugin-integrate.md)。當此工作流程完成時，您將有一個運作中的遊戲用戶端，可以連接到雲端中的遊戲伺服器。

**若要啟動Amazon GameLift Servers受管 Amazon EC2 工作流程：**
+ 在 Unreal 編輯器主工具列中，選擇Amazon GameLift Servers選單，然後選取 **Host with Managed EC2**。此動作會開啟外掛程式頁面**部署 Amazon EC2 機群**，此機群提供六個步驟來整合、建置、部署和啟動遊戲元件。

## 步驟 1：設定您的設定檔
<a name="unreal-plugin-ec2-profile"></a>

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

**設定使用者設定檔**

1. 從可用設定檔的下拉式清單中選取設定檔。如果您還沒有設定檔，或想要建立新的設定檔，請前往 **Amazon GameLift** 功能表，然後選擇**設定 AWS 使用者設定檔**。

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

## 步驟 2：設定遊戲程式碼
<a name="unreal-plugin-ec2-integrate"></a>

在此步驟中，準備您的遊戲伺服器和遊戲用戶端組建，以使用適用於 Unreal 的 Amazon GameLift Servers C\$1\$1 伺服器 SDK。如果您尚未整合遊戲程式碼和建置遊戲用戶端和伺服器可執行檔，請參閱 [Unreal 的外掛程式：整合您的遊戲程式碼](unreal-plugin-integrate.md)。輸入本機工作站上遊戲可執行檔的路徑。

工作流程中的此步驟，外掛程式提供指示和原始程式碼的連結，用於設定 Unreal Editor 的來源建置版本。在建置用戶端和伺服器元件時，您需要使用來源建置的版本。

建置與伺服器 SDK 整合的遊戲伺服器後，請完成下列任務，以準備將其上傳至 Amazon GameLift Servers 進行託管。

### 準備您的伺服器建置以進行雲端部署 (Windows)
<a name="w2aab9c11b9c19c35b9b9b1"></a>

在 Unreal 編輯器預設存放伺服器建置檔案的 `WindowsServer`資料夾中，進行下列新增：

1. **將伺服器建置安裝指令碼複製到 `WindowsServer` 資料夾的根目錄。**安裝指令碼包含在外掛程式下載中。尋找 檔案 `[project-name]/Plugins/Resources/CloudFormation/extra_server_resources/install.bat`。 Amazon GameLift Servers 使用此檔案將伺服器建置安裝到您的託管運算。

1. **將 `VC_redist.x64.exe` 檔案複製到 `WindowsServer` 資料夾的根目錄。**如果您使用的是 Unreal Engine 5.6 版或更新版本，則可以略過此步驟。此檔案包含在 Visual Studio 安裝中。它通常位於 `C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Redist/MSVC/v142`。

1. **將 OpenSSL 程式庫檔案新增至遊戲伺服器組建。**如果您的遊戲伺服器與伺服器 SDK 5.3 或更新版本整合，您可以略過此步驟。此版本包含在 Unreal 3.0 版或更新版本的Amazon GameLift Servers外掛程式中。

   手動尋找 OpenSSL 程式庫並將其複製到位於 的遊戲組建套件目錄`<YourGame>/Binaries/Win64`。**您必須**使用與 Unreal Engine 5 版本相同的 OpenSSL 版本。使用錯誤的 OpenSSL 程式庫部署的遊戲組建將無法與服務通訊Amazon GameLift Servers。

   尋找遊戲引擎來源中的 OpenSSL 程式庫。位置會根據您的開發環境而有所不同：

   在 Windows 上：
   + `[ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libssl-1_1-x64.dll`
   + `[ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libcrypto-1_1-x64.dll` 

   在 Linux 上：
   + `Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libssl.so.1.1`
   + `Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libcrypto.so.1.1`

### 準備您的伺服器建置以進行雲端部署 (Linux)
<a name="w2aab9c11b9c19c35b9c11b1"></a>

如需準備專為 Linux 建置的遊戲伺服器的詳細指示，請參閱[在 Amazon Linux 上建置Amazon GameLift Servers適用於 Unreal Engine 5 的伺服器 SDK](https://github.com/aws/amazon-gamelift-toolkit/tree/main/building-gamelift-server-sdk-for-unreal-engine-and-amazon-linux)。

1. **指定工作目錄來組織您的建置檔案。**工作目錄的結構會依原樣部署到每個託管運算。新增 Linux 建置的遊戲伺服器和所有相依檔案。

1. **在工作目錄的根目錄中建立伺服器建置安裝指令碼。**如有需要，請建立 `install.sh` 檔案並新增任何必要命令，以正確安裝遊戲伺服器組建。 Amazon GameLift Servers使用此檔案將伺服器組建安裝到每個 EC2 託管資源。

1. **將 OpenSSL 程式庫檔案新增至您的遊戲伺服器建置。**如果您的遊戲伺服器與伺服器 SDK 5.3 或更新版本整合，您可以略過此步驟。

   手動尋找和複製程式庫。**您必須**使用與 Unreal Engine 5 版本相同的 OpenSSL 版本。使用錯誤的 OpenSSL 程式庫部署的遊戲組建將無法與服務通訊Amazon GameLift Servers。

   1. 尋找遊戲引擎來源中的 OpenSSL 程式庫。位置會根據您的開發環境而有所不同：

      在 Windows 上：
      + `[ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libssl-1_1-x64.dll`
      + `[ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libcrypto-1_1-x64.dll` 

      在 Linux 上：
      + `Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libssl.so.1.1`
      + `Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libcrypto.so.1.1`

   1. 當您找到 OpenSSL 程式庫時，請將其複製到位於 的遊戲組建套件目錄`<YourGame>/Binaries/Linux`。

## 步驟 3：選取部署案例
<a name="unreal-plugin-ec2-scenarios"></a>

在此步驟中，您可以選擇目前要部署的遊戲託管解決方案。您可以使用任何案例，對遊戲進行多個部署。
+ 單一區域機群：將您的遊戲伺服器部署到作用中設定檔預設 AWS 區域中的單一託管資源機群。此案例是測試與 和 伺服器建置組態之 AWS 伺服器整合的良好起點。它會部署下列資源：
  + AWS 機群 （隨需），您的遊戲伺服器建置已安裝並執行。
  + Amazon Cognito 使用者集區和用戶端可讓玩家驗證和啟動遊戲。
  + 將使用者集區與 API 連結APIs 閘道授權方。
  + WebACl 用於調節對 API 閘道的過多玩家呼叫。
  + API 閘道 \$1 Lambda 函數，讓玩家請求遊戲位置。`CreateGameSession()` 如果沒有可用，此函數會呼叫 。
  + API 閘道 \$1 Lambda 函數，讓玩家取得其遊戲請求的連線資訊。
+ FlexMatch 機群：將您的遊戲伺服器部署到一組機群，並使用規則設定 FlexMatch 配對建構器來建立玩家配對。此案例使用具有多機群、多位置結構的低成本 Spot 託管，以實現持久的可用性。當您準備好開始為託管解決方案設計配對建構器元件時，此方法非常有用。在此案例中，您將為此解決方案建立基本資源，之後可以視需要自訂。它會部署下列資源：
  + FlexMatch 配對組態和配對規則集，以接受玩家請求並形成配對。
  + 安裝遊戲伺服器組建並在多個位置執行的三個 AWS 機群。包含兩個 Spot 機群和一個隨需機群做為備份。
  + AWS 透過尋找最佳的託管資源 （根據可行性、成本、玩家延遲等） 並啟動遊戲工作階段，滿足對提議配對的請求的遊戲工作階段置放佇列。
  + Amazon Cognito 使用者集區和用戶端可讓玩家驗證和啟動遊戲。
  + 將使用者集區與 API 連結APIs 閘道授權方。
  + WebACl 用於調節對 API 閘道的過多玩家呼叫。
  + API 閘道 \$1 Lambda 函數，讓玩家請求遊戲位置。此函數會呼叫 `StartMatchmaking()`。
  + API 閘道 \$1 Lambda 函數，讓玩家取得其遊戲請求的連線資訊。
  + Amazon DynamoDB 資料表可存放玩家和遊戲工作階段資訊的配對票證。
  + SNS 主題 \$1 處理 GameSessionQueue 事件的 Lambda 函數。

## 步驟 4：設定遊戲參數
<a name="unreal-plugin-ec2-parameters"></a>

在此步驟中，您會描述要上傳到 的遊戲 AWS；
+ 伺服器建置名稱：為您的遊戲伺服器建置提供有意義的名稱。 AWS 使用此名稱來參考已上傳並用於部署的伺服器建置複本。
+ 伺服器建置作業系統：輸入您的伺服器建置用來執行的作業系統。這會告訴您 AWS 要用來託管遊戲的運算資源類型。
+ 遊戲伺服器資料夾：識別本機伺服器建置資料夾的路徑。
+ 遊戲伺服器建置：識別遊戲伺服器可執行檔的路徑。
+ 遊戲用戶端路徑：識別遊戲用戶端可執行檔的路徑。
+ 用戶端組態輸出：此欄位需要指向用戶端建置中包含您 AWS 組態的資料夾。在下列位置尋找它：`[client-build]/[project-name]/Content/CloudFormation`。

## 步驟 5：部署案例
<a name="unreal-plugin-ec2-deploy"></a>

在此步驟中，您會根據您選擇的部署案例，將遊戲部署至雲端託管解決方案。此程序可能需要幾分鐘的時間，同時 AWS 驗證您的伺服器建置、佈建託管資源、安裝遊戲伺服器、啟動伺服器程序，以及準備好託管遊戲工作階段。

若要開始部署，請選擇**部署 CloudFormation**。您可以在此處追蹤遊戲託管的狀態。如需更多詳細資訊，您可以登入 的 AWS AWS 管理主控台，並檢視事件通知。請務必使用與外掛程式中作用中使用者設定檔相同的帳戶、使用者和 AWS 區域來登入。

部署完成時，您會在 AWS EC2 執行個體上安裝遊戲伺服器。至少有一個伺服器程序正在執行中，並準備好啟動遊戲工作階段。

## 步驟 6：啟動用戶端
<a name="unreal-plugin-ec2-launch"></a>

此時，您已完成啟動和播放使用 託管的多玩家遊戲所需的所有任務Amazon GameLift Servers。若要玩遊戲，請啟動遊戲用戶端的執行個體。

如果您部署了單一機群案例，則可以使用一個播放器開啟單一用戶端執行個體，輸入伺服器映射並四處移動。開啟遊戲用戶端的其他執行個體，將第二個玩家新增至相同的伺服器遊戲映射。

如果您部署了 FlexMatch 案例，解決方案會等待至少兩個用戶端排入佇列以進行遊戲工作階段放置，然後玩家才能進入伺服器映射。