

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

# 使用Amazon GameLift Servers受管 EC2 託管的開發藍圖
<a name="gamelift-roadmap-managed"></a>

此藍圖會引導您如何為多玩家遊戲開發Amazon GameLift Servers受管 EC2 託管解決方案。 Amazon GameLift Servers提供多種遊戲託管選項；如需這些選項的詳細資訊，請參閱 [Amazon GameLift Servers 遊戲託管選項](gamelift-intro-flavors.md)。

透過 Amazon GameLift Servers受管託管，您的遊戲伺服器會託管基於 AWS 雲端的虛擬運算資源，這些資源Amazon GameLift Servers擁有並根據您的組態運作。您可以取得 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的安全性、可靠性和全域可用性，這些執行個體已進一步最佳化，可與多玩家遊戲託管搭配使用。 透過自動伺服器部署、生命週期處理和容量自動擴展等工具，Amazon GameLift Servers簡化託管管理。

Amazon GameLift Servers 受管解決方案由下列元件組成：
+ 與適用於 的伺服器 SDK 整合的遊戲伺服器組建Amazon GameLift Servers，可在所有機群之間部署。
+ 與 AWS SDK 整合的遊戲用戶端和後端服務，可與服務互動Amazon GameLift Servers並請求遊戲工作階段。
+ Amazon GameLift Servers 佇列或其他置放機制，可將新的遊戲工作階段與可用遊戲伺服器放在所有機群中。
+ （選用） FlexMatch配對建構器，可建立多玩家配對並為其設定遊戲工作階段。
+ 一或多個Amazon GameLift Servers受管機群，使用針對多玩家遊戲託管最佳化的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。

此藍圖提供簡化的路徑，讓您的多玩家遊戲透過Amazon GameLift Servers受管 EC2 託管成功啟動和執行。準備好必要的元件後，您可以繼續反覆執行遊戲開發，並自訂您的託管解決方案。隨著您更接近啟動，請參閱這些[準備使用 Amazon GameLift Servers 託管啟動](gamelift_quickstart_customservers_checklist.md)，以協助您準備生產層級用量的託管解決方案。

**開始使用 Unreal Engine 和 Unity 的Amazon GameLift Servers外掛程式**  
若要加快部署速度，請嘗試 Unreal Engine 和 Unity 的[Amazon GameLift Servers外掛程式](https://github.com/amazon-gamelift/)。它提供引導式 UI 工作流程，以最少的設定快速部署遊戲伺服器，因此您可以嘗試執行中的遊戲元件。然後，您可以在此基礎上建置 ，為您的遊戲建立自訂託管解決方案。如需詳細資訊，請參閱[使用Amazon GameLift Servers外掛程式準備您的 Unreal 或 Unity 遊戲](getting-started-plugin.md)。

## 步驟 1：準備您的遊戲伺服器以使用 Amazon GameLift Servers
<a name="gamelift-roadmap-managed-step1"></a>

將功能新增至您的遊戲伺服器，以便在部署服務進行託管時與Amazon GameLift Servers服務通訊。
+ **為您的遊戲專案取得適用於 Amazon GameLift Servers(5.x 版） 的伺服器 SDK。**伺服器 SDK 提供 C\+\+、C\# 和 Go 版本。 [下載 Amazon GameLift Servers 伺服器 SDK](https://aws.amazon.com/gamelift/servers/getting-started-sdks/)。
+ **修改遊戲伺服器程式碼以新增伺服器 SDK 功能。**如需準則，請參閱[準備使用 託管的遊戲 Amazon GameLift Servers](integration-intro.md)。至少，請執行下列動作：
  + 新增程式碼以初始化 Amazon GameLift Servers SDK，並建立與 Amazon GameLift Servers服務的 WebSocket 連線。使用伺服器 SDK 動作 `InitSdk()`。
  + 新增程式碼，以在伺服器程序準備好託管遊戲工作階段時向Amazon GameLift Servers服務報告。使用伺服器 SDK 動作 `ProcessReady()`。
  + 實作所需的回呼函數 `OnProcessTerminate()`、 和 `OnStartGameSession()`。透過這些函數，遊戲伺服器程序可以維持與服務的連線Amazon GameLift Servers、在 提示時啟動遊戲工作階段Amazon GameLift Servers，以及回應結束遊戲伺服器程序的提示。
  + 新增程式碼，以在伺服器程序結束遊戲工作階段時向Amazon GameLift Servers服務報告。使用伺服器 SDK 動作 `ProcessEnding()`。
+ **封裝遊戲伺服器組建。**使用建置檔案、相依性和支援的軟體建立安裝指令碼。請參閱 [封裝遊戲建置檔案](gamelift-build-packaging.md)。建議使用 Amazon Simple Storage Service (Amazon S3) 儲存貯體來存放遊戲組建的版本。
+ **測試您的遊戲伺服器整合。**對於此任務，我們建議為本機工作站設定 Amazon GameLift Servers Anywhere 機群，如中所述[使用 Amazon GameLift Servers Anywhere 設定本機測試](integration-testing.md)。在此步驟中，請手動將遊戲伺服器建置安裝到測試裝置上，並啟動伺服器程序。使用 AWS CLI 請求新的遊戲工作階段，並確認Amazon GameLift Servers服務已成功提示您的伺服器程序啟動遊戲工作階段。

## 步驟 2：準備您的遊戲用戶端以加入託管遊戲工作階段
<a name="gamelift-roadmap-managed-step2"></a>

為您的遊戲用戶端建立請求加入遊戲工作階段、取得連線資訊，然後直接連線至託管遊戲工作階段的方法。最常見的方法是設定後端服務功能，做為遊戲用戶端和 Amazon GameLift Servers 服務之間的中間人。此方法可保護您的託管資源，並讓您更能控制玩家如何進入遊戲工作階段。
+ **建置後端服務功能以進行託管。**後端服務會與服務通訊，Amazon GameLift Servers並將連線資訊交付至遊戲用戶端。此功能包括開始遊戲工作階段、將玩家放入遊戲中，以及擷取遊戲工作階段資訊。如需準則，請參閱[準備使用 託管的遊戲 Amazon GameLift Servers](integration-intro.md)。至少，請執行下列動作：
  + 取得適用於 的 AWS 開發套件，Amazon GameLift Servers並將其新增至您的後端服務專案。請參閱[Amazon GameLift Servers用戶端服務的 SDK 資源](gamelift-supported.md#gamelift-supported-clients)。
  + 新增程式碼以初始化Amazon GameLift Servers用戶端和存放金鑰設定。請參閱 [設定 Amazon GameLift Servers API](gamelift-sdk-client-api.md#gamelift-sdk-client-api-initialize)。
  + 新增功能以呼叫 AWS SDK 動作`CreateGameSession()`，並將遊戲工作階段連線資訊提供給遊戲用戶端。請參閱[在特定機群上建立遊戲工作階段](gamelift-sdk-client-api.md#gamelift-sdk-client-api-create)。

    呼叫`CreateGameSession()`是請求新遊戲工作階段的方便起點。在準備好遊戲工作階段放置系統之後 （請參閱步驟 3)，您會將此程式碼取代為呼叫 `StartGameSessionPlacement()`（或者`StartMatchmaking()`如果您使用的是 )FlexMatch。

    如需設計後端服務的指引，請參閱 [建置 的後端服務 Amazon GameLift Servers](gamelift_quickstart_customservers_designbackend.md)。
+ **將功能新增至遊戲用戶端，讓玩家加入託管遊戲工作階段。**遊戲用戶端向後端服務提出請求，而不是直接向 提出Amazon GameLift Servers請求。後端服務提供遊戲工作階段連線資訊後，遊戲用戶端會直接與遊戲工作階段連線，以玩遊戲。
+ **測試您的遊戲用戶端整合。**您可以搭配本機工作站使用相同的 Amazon GameLift Servers Anywhere 機群進行測試。

  為了快速反覆開發或與多人團隊合作，我們建議您設定[雲端型測試環境](integration-dev-iteration-cloud.md)。此 Amazon GameLift Servers Toolkit 解決方案模擬Amazon GameLift Servers受管機群的行為，但可讓您以最短的周轉時間更新遊戲伺服器組建。

## 步驟 3：設定遊戲工作階段放置
<a name="gamelift-roadmap-managed-step3"></a>

自訂您希望Amazon GameLift Servers如何處理新遊戲工作階段的請求，並尋找可用的遊戲伺服器來託管它們。 Amazon GameLift Servers會自動追蹤所有機群上所有遊戲伺服器的可用性。當遊戲用戶端傳送加入遊戲工作階段的請求時， 會根據一組定義的優先順序來Amazon GameLift Servers尋找「可能的最佳」配置，例如最低延遲、成本和可用性。
+ **建立遊戲工作階段佇列，以使用可用的遊戲伺服器放置新的遊戲工作階段。**佇列是遊戲工作階段放置的主要機制。如需準則，請參閱[建立遊戲工作階段佇列](queues-creating.md)。
  + 至少，將 Anywhere 機群新增為佇列中的目的地。所有其他設定都是選用的自訂。
+ **在您的後端服務程式碼中，將`CreateGameSession()`呼叫轉換為 `StartGameSessionPlacement()`。**請參閱[在多位置佇列中建立遊戲工作階段](gamelift-sdk-client-api.md#gamelift-sdk-client-api-create)。
+ **建立機制，在遊戲工作階段準備好加入時通知遊戲用戶端。**在開發過程中，您可以使用呼叫 DescribeGameSessionPlacement 來輪詢遊戲工作階段狀態。不過，在使用佇列處理大量之前，您需要啟用事件通知。請參閱 [設定遊戲工作階段放置的事件通知](queue-notification.md)。
+ （選用） **新增FlexMatch配對元件。**如需指引，請參閱 [Amazon GameLift Servers FlexMatch 開發人員指南](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-intro.html)。

## 步驟 4：建立受管雲端型機群
<a name="gamelift-roadmap-managed-step4"></a>

到目前為止，您已使用自我管理的 Anywhere 機群來測試和迭代遊戲元件，並且已微調遊戲工作階段放置。 解決方案的最後一個部分是設定生產系統所需的託管資源類型。若要開始規劃和設定生產，您想要轉換為使用 Amazon GameLift Servers受管機群。
+ **封裝遊戲伺服器建置並上傳至 Amazon GameLift Servers。**使用建置檔案、相依性和支援的軟體建立安裝指令碼。請參閱 [為 建立遊戲伺服器組建 Amazon GameLift Servers](gamelift-build-cli-uploading.md)。您可以使用 主控台或 Amazon GameLift Servers CLI 將組建上傳至 AWS 。

  在上傳建置之前，請先決定 AWS 區域 您要建立機群的內容。您必須將組建上傳到相同的區域。如需選擇機群位置的詳細資訊，請參閱[地理位置](gamelift-compute.md#gamelift-compute-location)。
+ **建立受管 EC2 機群。**當您建立機群時， Amazon GameLift Servers會立即開始部署遊戲伺服器組建以進行託管。您可以設定受管機群的許多層面。如需準則，請參閱[建立Amazon GameLift Servers受管 EC2 機群](fleets-creating.md)。至少，請執行下列動作：
  + 為機群命名並指定要部署的上傳遊戲組建。
  + 選擇機群的隨需執行個體，然後選取機群位置中可用的執行個體類型。Spot 機群是寶貴的選項，但需要額外的設計和組態。
  + 建立機群的執行時間組態。至少，指定遊戲伺服器可執行檔的啟動路徑。
  + 指定連接埠設定，以允許傳入流量存取您的遊戲伺服器。
+ **將受管機群新增至佇列。**在您的遊戲工作階段佇列中，使用新增受管機群取代 Anywhere 機群。 
+ **使用受管機群測試遊戲託管。**此時，您應該能夠測試整個託管週期，讓遊戲用戶端請求遊戲工作階段、取得連線資訊，以及成功連線到遊戲工作階段。

## 步驟 5：自訂您的受管機群
<a name="gamelift-roadmap-managed-step5"></a>

準備啟動遊戲時，您需要微調受管託管資源。要考慮的一些決策包括：
+ 考慮新增 Spot 機群以節省成本。請參閱 [使用 Spot 機群降低遊戲託管成本](fleets-spot.md)。
+ 如果您的遊戲伺服器需要通訊其他 AWS 資源，請設定 IAM 角色來管理存取。請參閱 [將Amazon GameLift Servers託管遊戲伺服器連接到其他 AWS 資源](gamelift-sdk-server-resources.md)。
+ 決定要在地理上放置遊戲伺服器的位置。將遠端位置新增至受管機群。請參閱 [託管資源自訂](fleets-design.md)。
+ 選取執行個體類型和大小，並將執行時間設定為執行多個伺服器程序，以最佳化機群效能。請參閱 [最佳化受管 上的遊戲伺服器執行期組態 Amazon GameLift Servers](fleets-multiprocess.md)。
+ 試用受管機群的遊戲工作階段置放選項，包括自訂優先順序設定。請參閱 [自訂遊戲工作階段佇列](queues-design.md)。
+ 設定自動容量擴展以滿足預期的玩家需求。請參閱 [使用 擴展遊戲託管容量 Amazon GameLift Servers](fleets-manage-capacity.md)。
+ 在其他 中設定待命機群 AWS 區域 ，並視需要修改佇列和自動擴展以處理容錯移轉。
+ 設定託管可觀測性工具，包括分析和記錄。請參閱 [監控 Amazon GameLift Servers](monitoring-overview.md)。
+ 使用[基礎設施即程式碼 (IaC)](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) 自動化部署。請參閱 [使用 管理Amazon GameLift Servers託管資源 CloudFormation](resources-cloudformation.md)。

  Amazon GameLift Servers 支援針對任何部署特定的組態使用 AWS CloudFormation 範本。您也可以使用 AWS Cloud Development Kit (AWS CDK) 來定義您的 Amazon GameLift Servers 資源。如需 的詳細資訊 AWS CDK，請參閱 [AWS Cloud Development Kit (AWS CDK) 開發人員指南](https://docs.aws.amazon.com/cdk/v2/guide/)。

  若要管理 CloudFormation 堆疊的部署，建議您使用持續整合和持續交付 (CI/CD) 工具和服務，例如 AWS CodePipeline。這些工具可協助您在建置遊戲伺服器二進位檔時，自動部署 或獲得核准。使用 CI/CD 工具或服務時，新遊戲伺服器版本的資源部署如下所示：
  + 建置和測試您的遊戲伺服器二進位檔。
  + 將二進位檔案上傳至 Amazon GameLift Servers。
  + 使用新建置部署新機群。
  + 將新機群新增至您的遊戲工作階段佇列，並移除具有先前建置版本的機群。
  + 當具有先前建置的機群不再託管作用中的遊戲工作階段時，請刪除這些機群的 CloudFormation 堆疊。