使用Amazon GameLift Servers受管容器託管的開發藍圖 - Amazon GameLift Servers

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

使用Amazon GameLift Servers受管容器託管的開發藍圖

此藍圖會引導您如何為容器化遊戲伺服器開發Amazon GameLift Servers受管託管解決方案。受管容器只是 提供的一種託管解決方案Amazon GameLift Servers。如需託管選項的詳細資訊,請參閱 Amazon GameLift Servers 解決方案

使用 的受管容器解決方案Amazon GameLift Servers具有下列元件:

  • 一或多個容器機群,使用針對多玩家遊戲託管最佳化的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。

  • 包含遊戲伺服器建置的容器映像,上傳至 Amazon Elastic Container Registry (Amazon ECR) 私有儲存庫。遊戲伺服器建置與適用於 的伺服器 SDK 整合Amazon GameLift Servers,並建置在 Linux 上執行。

  • 代表遊戲用戶端與 Amazon GameLift Servers服務互動的後端服務。後端服務使用適用於 的服務 API 中的功能Amazon GameLift Servers,這是 SDK 的一部分 AWS 。

  • Amazon GameLift Servers 遊戲工作階段佇列,可處理新遊戲工作階段的請求、在所有機群中搜尋可用的遊戲伺服器,並提示遊戲伺服器啟動遊戲工作階段。

  • (選用) FlexMatch配對建構器,可建立多玩家配對並為其設定遊戲工作階段。

此藍圖提供簡化的路徑,讓您的容器化遊戲伺服器能夠使用Amazon GameLift Servers受管容器成功啟動和執行。準備好必要的元件後,您可以繼續反覆執行遊戲開發,並自訂您的託管解決方案。隨著您更接近啟動,請參閱這些準備您的遊戲以使用 Amazon GameLift Servers 託管啟動以協助您準備生產層級用量的託管解決方案。

使用這些受管容器的工具加速入門:
  • 容器入門套件可簡化整合和機群設定。它會為您的遊戲伺服器新增必要的遊戲工作階段管理功能,並使用預先設定的範本來建置容器機群和遊戲伺服器的自動化部署管道。部署之後,請使用 Amazon GameLift Servers主控台和 API 工具來監控機群效能、管理遊戲工作階段和分析指標。

  • 對於 Unreal Engine 和 Unity 開發人員,請使用Amazon GameLift Servers外掛程式來整合遊戲伺服器,並從遊戲引擎的開發環境中建置容器機群。外掛程式的引導式工作流程可協助您建立快速、簡單的解決方案,並使用受管容器進行雲端託管。您可以建置此基礎,為您的遊戲建立自訂託管解決方案。

將功能新增至您的遊戲伺服器,以便在部署服務進行託管時與Amazon GameLift Servers服務通訊。

  • 為您的遊戲專案取得適用於 Amazon GameLift Servers(5.2 版或更新版本) 的伺服器 SDK。伺服器 SDK 提供 C++、C# 和 Go 版本。 下載適用於 的伺服器 SDKAmazon GameLift Servers。伺服器 SDK 提供 C++、C# 和 Go 版本。

  • 修改遊戲伺服器程式碼以新增伺服器 SDK 功能。如需準則,請參閱將遊戲與自訂遊戲伺服器整合。至少,請執行下列動作:

    • 新增程式碼以初始化 Amazon GameLift Servers SDK,並建立與 Amazon GameLift Servers服務的 WebSocket 連線。使用伺服器 SDK 動作 InitSdk()

    • 新增程式碼,以在伺服器程序準備好託管遊戲工作階段時向Amazon GameLift Servers服務報告。使用伺服器 SDK 動作 ProcessReady()

    • 實作必要的回呼函數 OnStartGameSession()、 和 OnProcessTerminate()。透過這些函數,遊戲伺服器程序可以維持與服務的連線Amazon GameLift Servers、在 提示時啟動遊戲工作階段Amazon GameLift Servers,以及回應結束遊戲伺服器程序的請求。

    • 新增程式碼,以在伺服器程序結束遊戲工作階段時向Amazon GameLift Servers服務報告。使用伺服器 SDK 動作 ProcessEnding()

  • 封裝遊戲伺服器組建。建置遊戲伺服器以在 Linux 上執行。準備執行遊戲伺服器所需的組建和其他檔案。如果您是在 Windows 上進行開發,此步驟可能涉及設定個別的 Linux 工作區,或使用 Windows 子系統 for Linux (WSL) 等工具。您需要 Linux 環境來測試遊戲伺服器建置,以及建置和測試容器映像。

  • 測試您的遊戲伺服器整合。確認您的整合遊戲伺服器可以連線至 Amazon GameLift Servers服務,並回應提示。建議您設定簡單的 Amazon GameLift ServersAnywhere 機群,並將本機工作站做為測試主機,如中所述使用 Amazon GameLift ServersAnywhere 設定本機測試。在測試主機上安裝遊戲伺服器建置,並啟動伺服器程序。使用 AWS CLI 請求新的遊戲工作階段,並確認Amazon GameLift Servers服務是否成功提示您的伺服器程序啟動遊戲工作階段。

為您的遊戲用戶端建立請求加入遊戲工作階段、取得連線資訊,然後直接連線至託管遊戲工作階段的方法。最常見的方法是設定後端服務功能,做為遊戲用戶端和 Amazon GameLift Servers 服務之間的中間人。此方法可保護您的託管資源,並讓您更能控制玩家如何進入遊戲工作階段。

  • 建置後端服務功能以進行託管。後端服務會與服務通訊,Amazon GameLift Servers並將連線資訊交付至遊戲用戶端。此功能包括開始遊戲工作階段、將玩家放入遊戲中,以及擷取遊戲工作階段資訊。如需準則,請參閱將遊戲與自訂遊戲伺服器整合。至少,請執行下列動作:

  • 將功能新增至遊戲用戶端,讓玩家加入託管遊戲工作階段。遊戲用戶端會向您的後端服務提出請求,而不是直接向 提出Amazon GameLift Servers請求。後端服務提供遊戲工作階段連線資訊後,遊戲用戶端會直接與遊戲工作階段連線,以玩遊戲。

  • 測試您的遊戲用戶端整合。您可以使用現有的 Amazon GameLift ServersAnywhere 機群搭配本機工作站進行測試。使用新的後端服務請求新的遊戲工作階段,並確認:(1) Amazon GameLift Servers服務成功提示您的伺服器程序啟動遊戲工作階段,以及 (2) 遊戲用戶端可以連線至遊戲工作階段。

自訂您希望Amazon GameLift Servers如何處理新遊戲工作階段的請求,並尋找可用的遊戲伺服器來託管它們。 Amazon GameLift Servers會自動追蹤所有機群上所有遊戲伺服器的可用性。當遊戲用戶端傳送加入遊戲工作階段的請求時, 會根據一組定義的優先順序Amazon GameLift Servers尋找「可能的最佳」放置,例如最低延遲、成本和可用性。

  • 建立遊戲工作階段佇列,以使用可用的遊戲伺服器放置新的遊戲工作階段。佇列是遊戲工作階段放置的主要機制。如需準則,請參閱建立遊戲工作階段佇列

    • 至少,將 Anywhere 機群新增為佇列中的目的地。所有其他設定都是選用的自訂。

  • 在您的後端服務程式碼中,將CreateGameSession()呼叫轉換為 StartGameSessionPlacement()請參閱在多位置佇列中建立遊戲工作階段

  • 建立機制,在遊戲工作階段準備好加入時通知遊戲用戶端。在開發過程中,您可以使用呼叫 來輪詢遊戲工作階段狀態DescribeGameSessionPlacement。不過,在使用佇列處理大量之前,您需要啟用事件通知。請參閱 設定遊戲工作階段置放的事件通知

  • 新增FlexMatch配對 (選用)。建置配對規則集並建立配對組態,以使用您的遊戲工作階段佇列。如需設定配對系統的指引,請參閱 Amazon GameLift ServersFlexMatch 開發人員指南

  • 測試置放系統。您可以使用現有的 Amazon GameLift ServersAnywhere 機群搭配本機工作站進行測試。使用後端服務請求新的遊戲工作階段,並確認該Amazon GameLift Servers服務已成功提示您的伺服器程序啟動遊戲工作階段。

成功整合遊戲伺服器後,請使用遊戲伺服器可執行檔建立容器映像。將它存放在 Amazon Elastic Container Registry (Amazon ECR) 儲存庫中,以便與 搭配使用Amazon GameLift Servers。如需詳細說明,請參閱 建置 的容器映像 Amazon GameLift Servers

  • 取得遊戲伺服器容器的 Dockerfile 範本 (由 提供Amazon GameLift Servers)。修改遊戲伺服器建置檔案的檔案。

  • 建置遊戲伺服器容器映像。在 Linux 環境中使用 Docker 工具來建立映像。

  • 將您的容器映像推送至 Amazon ECR。使用 AWS 區域 您計劃部署容器機群的相同 AWS 帳戶 和 ,在 Amazon ECR 中建立公有或私有儲存庫。將容器映像推送至其中。

  • 使用 Anywhere 機群測試容器映像 (選用)。在將容器映像部署到雲端託管的容器機群之前,建議您先在本機測試容器映像。您可以使用現有的 Amazon GameLift ServersAnywhere 機群搭配本機工作站進行測試。安裝並執行遊戲伺服器容器,並確認:(1) Amazon GameLift Servers服務成功提示您的伺服器程序啟動遊戲工作階段,以及 (2) 遊戲用戶端可以連線至遊戲工作階段。

到目前為止,您已使用自我管理的 Anywhere 機群來測試和迭代遊戲元件。解決方案的最後一個部分是設定生產系統所需的雲端型託管資源。若要開始規劃和設定生產環境,您要設定Amazon GameLift Servers受管容器機群,並自訂用於生產環境。

  • 建立容器群組定義。容器群組定義描述機群的容器架構。 並識別要部署的容器映像。請參閱 建立容器機群的Amazon GameLift Servers容器群組定義。在儲存容器映像的相同 AWS 區域 中建立容器群組定義。如需選擇機群位置的詳細資訊,請參閱機群位置。至少,請執行下列動作:

    • 建立遊戲伺服器容器群組定義。

    • 使用遊戲伺服器建置新增具有容器映像的容器定義。

    • 設定容器遊戲伺服器程序的連接埠範圍。

  • 建立受管容器機群。當您建立機群時, 會Amazon GameLift Servers立即開始部署遊戲伺服器組建以進行託管。您可以設定受管機群的許多層面。如需準則,請參閱建立Amazon GameLift Servers受管容器機群。至少,請執行下列動作:

    • 設定容器機群的 AWS Identity and Access Management (IAM) 服務角色。請參閱 設定 的 IAM 服務角色 Amazon GameLift Servers

    • 指定要部署到機群執行個體的遊戲伺服器容器群組定義。

    • 使用所有其他參數可用的預設值。 會Amazon GameLift Servers計算一些參數以獲得最佳組態。

  • 將容器機群新增至佇列。在您的遊戲工作階段佇列中,將 Anywhere 測試機群取代為您的受管容器機群。

  • 使用容器機群測試遊戲託管。此時,您應該能夠測試整個解決方案。啟動遊戲用戶端,並透過後端服務請求遊戲工作階段。取得連線資訊並連線至容器機群上的遊戲工作階段。

  • 在您的機群部署上反覆執行。您可以更新容器群組定義和機群組態,然後將更新部署到現有的機群。

準備啟動遊戲時,您需要微調受管託管資源。要考慮的一些決策包括: