Amazon 混合託管的開發藍圖 GameLift - Amazon GameLift

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

Amazon 混合託管的開發藍圖 GameLift

此藍圖會引導您如何開發多人遊戲的託管解決方案。Amazon GameLift 提供數個遊戲託管選項;如需這些選項的詳細資訊,請參閱 Amazon GameLift 解決方案

混合式解決方案使用託管資源的組合,包括由 Amazon 管理的雲端型資源 GameLift 和您自己的自我管理託管資源。如需混合託管的更詳細討論,請參閱本文:使用 Amazon GameLift Anywhere 託管混合遊戲伺服器。透過 Amazon GameLift,您可以設定使用常見元件和程序的混合解決方案,以便集中管理全域機群,並輕鬆在各種類型的資源之間移動負載。

混合架構包含下列元件:

  • 一或多個 Amazon GameLift 受管機群,使用針對多人遊戲託管最佳化的 Amazon Elastic Compute Cloud (AmazonEC2) 執行個體。

  • 一或多個 Amazon GameLift Anywhere 機群,其使用您現有的內部部署或其他託管資源,包括您的組態管理和部署工具。(您可以選擇使用 AWS Systems Manager。)

  • 與 Amazon 伺服器 整合的單一遊戲 GameLift 伺服器建置SDK,可跨所有機群部署。

  • 與 整合的 AWS 單一遊戲用戶端和後端服務SDK,可與 Amazon GameLift 服務互動並請求遊戲工作階段。

  • 共用的 Amazon GameLift 佇列,可放置具有可用遊戲伺服器的新遊戲工作階段,並平衡所有機群的負載。

  • Amazon GameLift Agent 與 Anywhere 機群一起部署,以簡化所有機群中運算的伺服器程序管理任務。

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

此藍圖提供簡化的路徑,可讓您在 Amazon 的混合式託管解決方案中成功啟動和執行多人遊戲 GameLift。準備好必要的元件後,您可以繼續反覆執行遊戲開發,並自訂您的託管解決方案。隨著您接近啟動階段,請參閱這些準備使用 Amazon GameLift 託管啟動遊戲內容,以協助您準備生產層級用量的託管解決方案。

使用 Amazon GameLift 外掛程式快速入門

如果您使用 Unreal Engine 或 Unity 開發專案,請開始使用 Amazon GameLift 外掛程式來設定要託管的遊戲。使用 外掛程式,您可以將 Amazon GameLift SDKs 新增至遊戲專案,並使用引導式工作流程,透過 Anywhere 機群和 Amazon GameLift 受管機群,建置簡單的混合式託管解決方案工作版本。然後,您可以使用這些基礎來建置和視需要自訂。

將功能新增至您的遊戲伺服器,以便在部署 Amazon 服務進行託管時與 Amazon GameLift 服務通訊。如果遊戲伺服器在 Amazon GameLift 受管機群或 Anywhere 機群上執行,則需要相同的功能。

  • 取得遊戲專案的 Amazon GameLift 伺服器 SDK(5.x 版)。 伺服器SDK提供 C++、C# 和 Go 版本。 下載 Amazon GameLift 伺服器 SDK

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

    • 新增程式碼以初始化 Amazon GameLift SDK,並與 Amazon GameLift 服務建立 WebSocket 連線。使用伺服器SDK動作 InitSdk()。在 Anywhere 機群運算上執行時,包含用來指定伺服器參數的程式碼。

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

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

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

  • 封裝遊戲伺服器建置。使用建置檔案、相依性和支援軟體建立安裝指令碼。請參閱 封裝遊戲建置檔案。我們建議您使用 Amazon Simple Storage Service (Amazon S3) 儲存貯體來存放遊戲建置的版本。

  • 測試您的遊戲伺服器整合。針對此任務,我們建議您設定 Amazon GameLift Anywhere 具有本機工作站的機群,如 中所述使用 Amazon 設定本機測試 GameLift Anywhere。在此步驟中,手動將遊戲伺服器建置安裝到測試裝置上,並啟動伺服器程序。使用 AWS CLI 請求新的遊戲工作階段,並確認 Amazon GameLift 服務是否成功提示您的伺服器程序啟動遊戲工作階段。

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

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

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

  • 測試您的遊戲用戶端整合。您可以使用相同的 Amazon GameLift Anywhere 具有本機工作站進行測試的機群。

    在開發階段,如果您想要測試遊戲建置在 Amazon GameLift 受管機群中的行為,建議您也設定雲端測試環境。此 Amazon GameLift Toolkit 解決方案模擬受管機群的行為,但可讓您以最短的周轉時間更新遊戲伺服器建置。

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

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

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

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

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

  • (選用) 新增 FlexMatch配對元件。如需指引,請參閱 Amazon GameLift FlexMatch 開發人員指南

到目前為止,您一直使用本機裝置 (註冊為 Anywhere 機群運算) 來測試和迭代遊戲元件。下一步是設定生產系統所需的機群類型。從 Anywhere 機群開始,並新增 Amazon GameLift Agent 來管理一些金鑰運算中主機管理任務。如需詳細資訊,請參閱使用 Amazon GameLift Agent

  • 取得 Amazon GameLift Agent,並將其新增至您的遊戲伺服器安裝套件。取得並建置 Amazon Agent Github 儲存庫 中的 GameLift 客服人員原始碼。將產生的JAR檔案可執行檔放入與遊戲建置可執行檔相同的目錄中。

  • 視需要修改客服人員的啟動指令碼。確保代理程式可執行檔會在運算開始執行時立即啟動。如需在託管運算上安裝和執行代理程式的協助,請參閱客服人員儲存庫中的讀我檔案。您的啟動命令應至少包含指定 Anywhere 機群 ID 和 AWS 區域的選項、自訂位置和運算名稱。

    客服人員會自動為您處理下列任務,因此,如果您一直使用指令碼處理這些任務,您可以移除它們:

    • 呼叫 RegisterCompute() 將運算新增至 Anywhere 機群。

    • 當遊戲伺服器連線至 Amazon GameLift 服務時,呼叫 GetComputeAuthToken()進行驗證。客服人員會管理取得和重新整理身分驗證權杖,所有在運算上執行的遊戲伺服器程序都可以使用身分驗證權杖。

    • 根據一組執行時間指示,在運算上啟動新的伺服器程序。

  • 為 Anywhere 機群中的運算建立執行期組態。 至少,指定遊戲伺服器可執行檔的啟動路徑。您可以使用 Amazon GameLift 主控台或 AWS CLI來建立或修改機群的執行期指示。客服人員執行這些指示,並定期向 Amazon GameLift 服務請求更新。

  • 視需要設定或修改您的遊戲工作階段佇列。建立新的佇列 (或更新現有的佇列),並為使用 Amazon GameLift Agent 部署的 Anywhere 機群指定目的地。

  • 測試客服人員與 Anywhere 機群的整合。 檢查客服人員是否根據執行期組態正確啟動伺服器程序。

建立 Amazon GameLift 受管EC2機群來補充您的 Anywhere 機群。如果您在步驟 2 中設定雲端型測試環境以加速開發,請在完成大部分遊戲開發和測試後,計劃建立受管機群。您需要完全受管機群來設定和測試其他設定,例如自動容量擴展。

  • 封裝遊戲伺服器建置並上傳至 Amazon GameLift。使用建置檔案、相依性和支援軟體建立安裝指令碼。您可以在 Anywhere 和受管機群上使用相同的建置軟體。請參閱 部署 Amazon GameLift 託管的自訂伺服器建置。您可以使用主控台 GameLift 或 將建置上傳至 Amazon AWS CLI。

    在上傳建置之前,請先決定 AWS 區域 您要建立受管機群的內容。您必須將建置上傳到相同的區域。如需選擇機群位置的詳細資訊,請參閱 機群位置

  • 建立受管EC2機群。您可以使用 Amazon GameLift 主控台或 AWS CLI來建立受管機群。當您建立機群時,Amazon 會 GameLift 立即開始部署遊戲伺服器建置以進行託管。您可以設定受管機群的許多層面。如需準則,請參閱建立 Amazon GameLift 受管EC2機群。至少,請執行下列動作:

    • 為機群命名並指定要部署的上傳遊戲組建。

    • 選擇機群的隨需執行個體,然後選擇機群位置中可用的執行個體類型。Spot 機群是寶貴的選項,但需要額外的設計和組態。

    • 使用與 Anywhere 機群相同的設定建立執行期組態。至少,指定遊戲伺服器可執行檔的啟動路徑。

    • 指定連接埠設定,以允許傳入流量存取您的遊戲伺服器。

  • 將受管機群新增至共用遊戲工作階段佇列。從步驟 4 更新佇列,以便包含受管機群和使用 Amazon GameLift Agent 部署的 Anywhere 機群的目的地。

  • 使用受管機群測試遊戲託管。此時,您應該能夠測試整個託管週期,遊戲用戶端會請求遊戲工作階段、取得連線資訊,以及成功連線至遊戲工作階段。

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

  • 對於 Anywhere 機群,視需要自動化啟動和關閉運算的程序,包括安裝和執行遊戲伺服器軟體。回收運算有助於確保定期更新,關閉運算可以在不需要時節省成本。

  • 如果您的遊戲伺服器需要通訊其他 AWS 資源,請設定IAM角色來管理存取權。請參閱 與機群中的其他 AWS 資源通訊

  • 決定您要放置遊戲伺服器的地理位置。將遠端位置新增至受管機群。請參閱 受管機群的設計指南

  • 對於受管機群,請考慮使用 Spot 機群來節省成本。請參閱 教學課程:使用 Spot 執行個體建立 Amazon GameLift 佇列

  • 透過選取運算資源組態來最佳化機群效能,然後設定執行期指示,以執行每個運算的最佳伺服器程序數目。同時為 Anywhere 機群和受管機群執行此操作。請參閱 管理 Amazon 如何GameLift啟動遊戲伺服器

  • 試用受管機群的遊戲工作階段置放選項,包括自訂優先順序設定。請參閱 設計遊戲工作階段佇列

  • 對於受管機群,設定自動容量擴展以符合預期的玩家需求。請參閱 使用 Amazon 擴展遊戲託管容量 GameLift

  • 對於 Anywhere 機群,建立機制來處理手動或自動容量擴展,以滿足預期的玩家需求。

  • 視需要設計和實作容錯移轉至其他資源。在其他 AWS 區域 中設定待命機群,並視需要修改佇列和自動擴展以處理容錯移轉。

  • 設定託管可觀測性工具,包括分析和記錄。請參閱 監控 Amazon GameLift。建立指標群組,以彙總所有託管資源的分析。

  • 使用基礎設施作為程式碼 (IaC ) 自動化部署。請參閱 使用 管理 Amazon GameLift 託管資源 AWS CloudFormation

    Amazon GameLift 支援將 AWS CloudFormation 範本用於任何部署特定的組態。您也可以使用 AWS Cloud Development Kit (AWS CDK) 來定義 Amazon GameLift 資源。如需 的詳細資訊 AWS CDK,請參閱 AWS Cloud Development Kit (AWS CDK) 開發人員指南

    若要管理 AWS CloudFormation 堆疊的部署,建議您使用持續整合和持續交付 (CI/CD) 工具和服務,例如 AWS CodePipeline。這些工具可協助您在每次建置遊戲伺服器二進位檔案時,自動部署 或 並取得核准。透過 CI/CD 工具或服務,新遊戲伺服器版本的資源部署如下所示:

    • 建置和測試您的遊戲伺服器二進位檔案。

    • 將二進位檔案上傳至 Amazon GameLift。

    • 使用新建置部署新機群。

    • 將新機群新增至您的遊戲工作階段佇列,並移除具有先前建置版本的機群。

    • 當具有先前建置的機群不再託管作用中遊戲工作階段時,請刪除這些機群的 AWS CloudFormation 堆疊。