本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用Amazon GameLift Servers受管 EC2 託管的開發藍圖
此藍圖引導您如何為多玩家遊戲開發Amazon GameLift Servers受管 EC2 託管解決方案。 Amazon GameLift Servers提供多種遊戲託管選項;如需這些選項的詳細資訊,請參閱 Amazon GameLift Servers 解決方案。
透過 Amazon GameLift Servers受管託管,您的遊戲伺服器會託管基於 AWS 雲端的虛擬運算資源,這些資源Amazon GameLift Servers擁有並根據您的組態運作。您可以取得 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的安全性、可靠性和全域可用性,這些執行個體已進一步最佳化,可與多玩家遊戲託管搭配使用。 透過自動伺服器部署、生命週期處理和容量自動擴展等工具,Amazon GameLift Servers簡化託管管理。
Amazon GameLift Servers 受管解決方案由下列元件組成:
-
一或多個Amazon GameLift Servers受管機群,使用針對多玩家遊戲託管最佳化的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。
-
遊戲伺服器組建,與適用於 的伺服器 SDK 整合Amazon GameLift Servers,可跨所有機群部署。
-
與 AWS SDK 整合的遊戲用戶端和後端服務,可與服務互動Amazon GameLift Servers並請求遊戲工作階段。
-
將新遊戲工作階段與可用遊戲伺服器放在所有機群中的Amazon GameLift Servers佇列。
-
(選用) FlexMatch配對建構器,可建立多玩家配對並為其設定遊戲工作階段。
此藍圖提供簡化的路徑,讓您的多玩家遊戲透過Amazon GameLift Servers受管 EC2 託管成功啟動和執行。準備好必要的元件後,您可以繼續反覆執行遊戲開發,並自訂您的託管解決方案。隨著您更接近啟動,請參閱這些準備您的遊戲以使用 Amazon GameLift Servers 託管啟動,以協助您準備生產層級用量的託管解決方案。
開始使用 Unreal Engine 和 Unity 的Amazon GameLift Servers外掛程式
若要加快部署速度,請嘗試 Unreal Engine 和 Unity 的Amazon GameLift Servers外掛程式
將功能新增至您的遊戲伺服器,以便在部署服務進行託管時與Amazon GameLift Servers服務通訊。
-
為您的遊戲專案取得適用於 Amazon GameLift Servers(5.x 版) 的伺服器 SDK。伺服器 SDK 提供 C++、C# 和 Go 版本。 下載Amazon GameLift Servers伺服器 SDK
。 -
修改遊戲伺服器程式碼以新增伺服器 SDK 功能。如需準則,請參閱將遊戲與自訂遊戲伺服器整合。至少,請執行下列動作:
-
新增程式碼以初始化 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()
。
-
-
封裝遊戲伺服器組建。使用建置檔案、相依性和支援的軟體建立安裝指令碼。請參閱 封裝遊戲建置檔案。建議使用 Amazon Simple Storage Service (Amazon S3) 儲存貯體來存放遊戲組建的版本。
-
測試您的遊戲伺服器整合。針對此任務,我們建議為本機工作站設定 Amazon GameLift ServersAnywhere 機群,如中所述使用 Amazon GameLift ServersAnywhere 設定本機測試。在此步驟中,請在測試裝置上手動安裝遊戲伺服器組建,並啟動伺服器程序。使用 AWS CLI 請求新的遊戲工作階段,並確認Amazon GameLift Servers服務是否成功提示您的伺服器程序啟動遊戲工作階段。
為您的遊戲用戶端建立請求加入遊戲工作階段、取得連線資訊,然後直接連線至託管遊戲工作階段的方法。最常見的方法是設定後端服務功能,做為遊戲用戶端和 Amazon GameLift Servers 服務之間的中間人。此方法可保護您的託管資源,並讓您更能控制玩家如何進入遊戲工作階段。
-
建置後端服務功能以進行託管。後端服務會與服務通訊,Amazon GameLift Servers並將連線資訊交付至遊戲用戶端。此功能包括開始遊戲工作階段、將玩家放入遊戲中,以及擷取遊戲工作階段資訊。如需準則,請參閱將遊戲與自訂遊戲伺服器整合。至少,請執行下列動作:
-
取得適用於 的 AWS 開發套件,Amazon GameLift Servers並將其新增至您的後端服務專案。請參閱Amazon GameLift Servers用戶端服務的 SDK 資源。
-
新增程式碼以初始化Amazon GameLift Servers用戶端和存放金鑰設定。請參閱 在後端服務Amazon GameLift Servers上設定。
-
新增功能以呼叫 AWS SDK 動作
CreateGameSession()
,並將遊戲工作階段連線資訊提供給遊戲用戶端。請參閱在特定機群上建立遊戲工作階段。呼叫
CreateGameSession()
是請求新遊戲工作階段的方便起點。在準備好遊戲工作階段放置系統之後 (請參閱步驟 3),您會將此程式碼取代為呼叫StartGameSessionPlacement()
(或者StartMatchmaking()
如果您使用的是 )FlexMatch。如需設計後端服務的指引,請參閱 設計您的遊戲用戶端服務。
-
-
將功能新增至遊戲用戶端,讓玩家加入託管遊戲工作階段。遊戲用戶端向後端服務提出請求,而不是直接向 提出Amazon GameLift Servers請求。在後端服務提供遊戲工作階段連線資訊後,遊戲用戶端會直接與遊戲工作階段連線,以玩遊戲。
-
測試您的遊戲用戶端整合。您可以搭配本機工作站使用相同的 Amazon GameLift ServersAnywhere 機群進行測試。
為了快速反覆開發或與多人團隊合作,我們建議您設定雲端型測試環境。此 Amazon GameLift Servers Toolkit 解決方案模擬Amazon GameLift Servers受管機群的行為,但可讓您以最短的周轉時間更新遊戲伺服器組建。
自訂您希望Amazon GameLift Servers如何處理新遊戲工作階段的請求,並尋找可用的遊戲伺服器來託管它們。 Amazon GameLift Servers會自動追蹤所有機群上所有遊戲伺服器的可用性。當遊戲用戶端傳送加入遊戲工作階段的請求時, 會根據一組定義的優先順序來Amazon GameLift Servers尋找「可能的最佳」配置,例如最低延遲、成本和可用性。
-
建立遊戲工作階段佇列,以使用可用的遊戲伺服器放置新的遊戲工作階段。佇列是遊戲工作階段放置的主要機制。如需準則,請參閱建立遊戲工作階段佇列。
-
至少,將 Anywhere 機群新增為佇列中的目的地。所有其他設定都是選用的自訂。
-
-
在您的後端服務程式碼中,將
CreateGameSession()
呼叫轉換為StartGameSessionPlacement()
。請參閱在多位置佇列中建立遊戲工作階段。 -
建立機制,在遊戲工作階段準備好加入時通知遊戲用戶端。在開發過程中,您可以使用呼叫 DescribeGameSessionPlacement 來輪詢遊戲工作階段狀態。不過,在使用佇列處理大量之前,您需要啟用事件通知。請參閱 設定遊戲工作階段置放的事件通知。
-
(選用) 新增FlexMatch配對元件。如需指引,請參閱 Amazon GameLift ServersFlexMatch 開發人員指南。
到目前為止,您已使用自我管理的 Anywhere 機群來測試和迭代遊戲元件,並且已微調遊戲工作階段放置。 解決方案的最後一個部分是設定生產系統所需的託管資源類型。若要開始規劃和設定生產,您想要轉換為使用 Amazon GameLift Servers受管機群。
-
封裝遊戲伺服器建置並上傳至 Amazon GameLift Servers。使用建置檔案、相依性和支援的軟體建立安裝指令碼。請參閱 部署用於Amazon GameLift Servers託管的自訂伺服器建置。您可以使用 主控台或 Amazon GameLift Servers CLI 將組建上傳至 AWS 。
在上傳建置之前,請先決定 AWS 區域 您要建立機群的內容。您必須將組建上傳到相同的區域。如需選擇機群位置的詳細資訊,請參閱機群位置。
-
建立受管 EC2 機群。當您建立機群時, 會Amazon GameLift Servers立即開始部署遊戲伺服器組建以進行託管。您可以設定受管機群的許多層面。如需準則,請參閱建立Amazon GameLift Servers受管 EC2 機群。至少,請執行下列動作:
-
為機群命名並指定要部署的上傳遊戲組建。
-
選擇機群的隨需執行個體,然後選取機群位置中可用的執行個體類型。Spot 機群是寶貴的選項,但需要額外的設計和組態。
-
建立機群的執行時間組態。至少,指定遊戲伺服器可執行檔的啟動路徑。
-
指定連接埠設定,以允許傳入流量存取您的遊戲伺服器。
-
-
將受管機群新增至佇列。在您的遊戲工作階段佇列中,使用新增受管機群取代 Anywhere 機群。
-
使用受管機群測試遊戲託管。此時,您應該能夠測試整個託管週期,讓遊戲用戶端請求遊戲工作階段、取得連線資訊,以及成功連線至遊戲工作階段。
準備啟動遊戲時,您需要微調受管託管資源。要考慮的一些決策包括:
考慮新增 Spot 機群以節省成本。請參閱 教學課程:使用 Spot 執行個體建立 Amazon GameLift Servers佇列。
-
如果您的遊戲伺服器需要通訊其他 AWS 資源,請設定 IAM 角色來管理存取。請參閱 與機群中的其他 AWS 資源通訊。
決定要在地理上放置遊戲伺服器的位置。將遠端位置新增至受管機群。請參閱 自訂您的 Amazon GameLift Servers EC2 受管機群。
選取執行個體類型和大小,並將執行時間設定為執行多個伺服器程序,以最佳化機群效能。請參閱 管理 如何Amazon GameLift Servers啟動遊戲伺服器。
試用受管機群的遊戲工作階段置放選項,包括自訂優先順序設定。請參閱 自訂遊戲工作階段佇列。
-
設定自動容量擴展以滿足預期的玩家需求。請參閱 使用 擴展遊戲託管容量 Amazon GameLift Servers。
-
在其他 中設定待命機群 AWS 區域 ,並視需要修改佇列和自動擴展以處理容錯移轉。
-
設定託管可觀測性工具,包括分析和記錄。請參閱 監控 Amazon GameLift Servers。
-
使用基礎設施即程式碼 (IaC) 自動化部署。請參閱 使用 管理Amazon GameLift Servers託管資源 AWS CloudFormation。
Amazon GameLift Servers 支援針對任何部署特定的組態使用 AWS CloudFormation 範本。您也可以使用 AWS Cloud Development Kit (AWS CDK) 來定義您的 Amazon GameLift Servers 資源。如需 的詳細資訊 AWS CDK,請參閱 AWS Cloud Development Kit (AWS CDK) 開發人員指南。
若要管理 AWS CloudFormation 堆疊的部署,建議您使用持續整合和持續交付 (CI/CD) 工具和服務,例如 AWS CodePipeline。這些工具可協助您在建置遊戲伺服器二進位檔時,自動部署 或獲得核准。使用 CI/CD 工具或服務時,新遊戲伺服器版本的資源部署如下所示:
-
建置和測試您的遊戲伺服器二進位檔。
-
將二進位檔案上傳至 Amazon GameLift Servers。
-
使用新建置部署新機群。
-
將新機群新增至您的遊戲工作階段佇列,並移除具有先前建置版本的機群。
-
當具有先前建置的機群不再託管作用中的遊戲工作階段時,請刪除這些機群的 AWS CloudFormation 堆疊。
-