本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon GameLift Anywhere 託管的開發藍圖
此藍圖會引導您了解如何開發多人遊戲的託管解決方案,以搭配您自己的資源 (內部部署硬體或虛擬機器) 使用。Amazon GameLift 提供數個遊戲託管選項;如需這些選項的詳細資訊,請參閱 Amazon GameLift 解決方案。
透過 Amazon GameLift Anywhere 託管,您的遊戲伺服器託管在您提供和管理的運算資源上。您可以建立具有所需組態的 Anywhere 機群,並無論玩家位於何處,都可找到地理位置。Amazon 為 Anywhere 機群 GameLift 提供下列功能:
-
根據您的組態為您處理遊戲工作階段置放程序,包括:
-
追蹤 Anywhere 機群的遊戲伺服器可用性。
-
處理來自遊戲用戶端服務的遊戲請求,以及將遊戲請求與可用伺服器配對。
-
提示 Anywhere 機群上的遊戲伺服器啟動遊戲工作階段。
-
將連線詳細資訊傳回遊戲用戶端。
-
-
收集工作階段置放程序的效能指標,以及遊戲工作階段和玩家的使用指標。
-
支援完整的 FlexMatch 配對功能集,因此您可以建置配對器,並將其與遊戲工作階段置放系統整合。
-
提供 Amazon GameLift Agent 來處理 Anywhere 機群上的金鑰主機管理任務。
-
支援結合 Amazon GameLift 受管機群,提供彈性的混合解決方案。
Amazon GameLift Anywhere 解決方案由下列元件組成:
-
一或多個具有內部部署或其他託管資源的 Amazon GameLift Anywhere 機群,使用現有的組態管理和部署工具進行管理。(您可以選擇使用 AWS Systems Manager。)
-
與 Amazon GameLift 伺服器 整合的遊戲伺服器建置SDK,可跨所有機群部署。
-
與 整合的遊戲用戶端和後端服務 AWS SDK,可與 Amazon GameLift 服務互動並請求遊戲工作階段。
-
Amazon GameLift 佇列,可放置新的遊戲工作階段,讓所有機群都能使用可用的遊戲伺服器。
-
(選用) FlexMatch 配對器,可建立多玩家配對並為他們設定遊戲工作階段。
此藍圖提供簡化的路徑,可讓您使用 Amazon GameLift Anywhere 主機成功啟動和執行多人遊戲。準備好必要的元件後,您可以繼續反覆執行遊戲開發,並自訂您的託管解決方案。隨著您更接近啟動,請參閱這些準備使用 Amazon GameLift 託管啟動遊戲,協助您準備生產層級用量的託管解決方案。
使用 Amazon GameLift 外掛程式快速入門
如果您使用 Unreal Engine 或 Unity 開發專案,請開始使用 Amazon GameLift 外掛程式來設定要託管的遊戲。透過 外掛程式,您可以將 Amazon GameLift SDKs 新增至您的遊戲專案,並使用引導式工作流程,透過 Amazon GameLift Anywhere 建置簡單的託管解決方案工作版本。然後,您可以使用這些基礎來建置和視需要自訂。
將功能新增至您的遊戲伺服器,以便在部署 Amazon 服務進行託管時與 Amazon GameLift 服務通訊。
-
為您的遊戲專案取得 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。在此步驟中,手動將遊戲伺服器建置安裝到測試裝置上,並啟動伺服器程序。使用 CLI AWS 請求新的遊戲工作階段,並確認 Amazon GameLift 服務是否成功提示您的伺服器程序啟動遊戲工作階段。
為您的遊戲用戶端建立一種方式,以請求加入遊戲工作階段、取得連線資訊,然後直接連線至託管遊戲工作階段。最常見的方法是設定後端服務功能,作為遊戲用戶端與 Amazon GameLift 服務之間的中間人。此方法可保護您的託管資源,並讓您更妥善地控制玩家如何進入遊戲工作階段。
-
建置託管的後端服務功能。後端服務會與 Amazon GameLift 服務通訊,並將連線資訊傳遞給遊戲用戶端。此功能包括啟動遊戲工作階段、將玩家放入遊戲,以及擷取遊戲工作階段資訊。如需準則,請參閱將遊戲與自訂遊戲伺服器整合。至少,請執行下列動作:
-
取得適用於 Amazon 的 AWS SDK, GameLift 並將其新增至您的後端服務專案。請參閱用戶端服務的 Amazon GameLift SDK 資源。
-
新增程式碼以初始化 Amazon GameLift 用戶端和儲存金鑰設定。請參閱 在後端服務 GameLift 上設定 Amazon。
-
新增 功能來呼叫動作 AWS SDK
CreateGameSession()
,並將遊戲工作階段連線資訊提供給遊戲用戶端。請參閱在特定機群上建立遊戲工作階段。呼叫
CreateGameSession()
是請求新遊戲工作階段的方便起點。在準備好遊戲工作階段置放系統之後 (請參閱步驟 3),您會將此程式碼取代為呼叫StartGameSessionPlacement()
(或者StartMatchmaking()
如果您使用的是 ) FlexMatch。如需設計後端服務的指引,請參閱 設計您的遊戲用戶端服務。
-
-
將功能新增至您的遊戲用戶端,讓玩家加入託管遊戲工作階段。遊戲用戶端會向後端服務提出請求,而不是直接向 Amazon 提出 GameLift。後端服務提供遊戲工作階段連線資訊後,遊戲用戶端會直接與遊戲工作階段連線,以玩遊戲。
-
測試您的遊戲用戶端整合。您可以使用相同的 Amazon GameLift Anywhere 具有本機工作站進行測試的機群。
自訂您希望 Amazon 如何處理新遊戲工作階段的 GameLift 請求,並尋找可用的遊戲伺服器來託管它們。Amazon GameLift 會自動追蹤所有機群上所有遊戲伺服器的可用性。當遊戲用戶端傳送加入遊戲工作階段的請求時,Amazon GameLift 會根據一組定義的優先順序尋找「可能的最佳」位置,例如最低延遲、成本和可用性。
-
建立遊戲工作階段佇列,以使用可用的遊戲伺服器放置新的遊戲工作階段。佇列是遊戲工作階段置放的主要機制。如需準則,請參閱建立遊戲工作階段佇列。
-
至少,將 Anywhere 機群新增為佇列中的目的地。所有其他設定都是選用的。
-
-
在後端服務程式碼中,將
CreateGameSession()
呼叫轉換為StartGameSessionPlacement()
。請參閱在多位置佇列 中建立遊戲工作階段。 -
建立機制,以在遊戲工作階段準備好加入時通知遊戲用戶端。在開發過程中,您可以使用呼叫 來輪詢遊戲工作階段狀態 DescribeGameSessionPlacement。不過,在使用佇列處理大量之前,您需要啟用事件通知。請參閱 設定遊戲工作階段位置的事件通知。
-
(選用) 新增 FlexMatch 配對元件。如需指引,請參閱 Amazon GameLift FlexMatch 開發人員指南 。
到目前為止,您一直使用本機裝置 (註冊為 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 機群的整合。 檢查客服人員是否根據執行期組態正確啟動伺服器程序。
準備啟動遊戲時,您需要微調受管託管資源。要考慮的一些決策包括:
-
視需要自動化啟動和關閉運算的程序,包括安裝和執行遊戲伺服器軟體。回收運算有助於確保定期更新,關閉運算可以在不需要時節省成本。
-
如果您的遊戲伺服器需要通訊其他 AWS 資源,請設定IAM角色來管理存取權。請參閱 與機群中的其他 AWS 資源通訊。
-
決定您要放置遊戲伺服器的地理位置。將遠端位置新增至受管機群。請參閱 受管機群的設計指南。
-
透過選取運算資源組態來最佳化機群效能,然後設定執行期指示,以執行每個運算的最佳伺服器程序數目。
-
試用受管機群的遊戲工作階段置放選項,包括自訂優先順序設定。請參閱 設計遊戲工作階段佇列。
-
建立機制來處理手動或自動容量擴展,以滿足預期的玩家需求。考慮哪些因素應提示系統增加或減少可用於託管遊戲工作階段的運算數量。
-
視需要設計和實作容錯移轉至其他資源。
-
設定託管可觀測性工具,包括分析和記錄。請參閱監控 Amazon GameLift。