本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Unity 外掛程式:將您的遊戲部署到受管 EC2 叢集
在此工作流程中,您可以使用外掛程式準備遊戲,以便在 Amazon 管理的雲端運算資源上託管 GameLift。您可以為 Amazon GameLift 功能添加客戶端和服務器遊戲代碼,然後將服務器構建上傳到 Amazon GameLift 服務進行託管。完成此工作流程後,您將擁有在雲端中執行的遊戲伺服器,以及可連線到這些伺服器的有效遊戲用戶端。
若要啟動 Amazon GameLift 託管 EC2 工作流程:
在 Unity 編輯器主功能表中,選擇 Amazon, GameLift然後選取主機與受管 EC2。此工作流程提供整合、建置、部署和啟動遊戲元件的六個步驟程序。
設定您的設定檔
選擇您要在遵循此工作流程時使用的設定檔。您選取的設定檔會影響工作流程中的所有步驟。您建立的所有資源都與設定檔的 AWS 帳戶相關聯,並放置在設定檔的預設 AWS 區域中。設定檔使用者的權限決定您對 AWS 資源和動作的存取權限。
-
從可用設定檔的下拉式清單中選取設定檔。如果您還沒有個人資料或想創建一個新的個人資料,請轉到 Amazon GameLift 菜單並選擇設置 AWS 帳戶個人資料。
-
如果啟動程序狀態不是「活動」,請選擇 Bootstrap 配置文件並等待狀態更改為「活動」。
將您的遊戲與 Amazon 整合 GameLift
對於這項工作,您可以更新遊戲專案中的用戶端和伺服器程式碼。
-
遊戲伺服器必須能夠與 Amazon GameLift 服務通訊,才能接收啟動遊戲工作階段、提供遊戲工作階段連線資訊和報告狀態的提示。
-
遊戲用戶端必須能夠取得有關遊戲工作階段的資訊、加入或開始遊戲工作階段,以及取得連線資訊才能加入遊戲。
注意
如果您導入了示例遊戲,則可以跳過此步驟。範例遊戲資產已經有必要的伺服器和用戶端程式碼。
整合伺服器程式碼
在自訂場景中使用您自己的遊戲專案時,請使用提供的範例程式碼將所需的伺服器程式碼新增至您的遊戲專案。如果您整合了遊戲專案以便與 Anywhere 叢集進行測試,則表示您已完成此步驟中的指示。
-
在您的遊戲專案檔案中,開啟資
Assets/Scripts/Server
料夾。如果它不存在,請創建它。 -
轉到 GitHub 回購 aws/ amazon-gamelift-plugin-unity
並打開路徑 Samples~/SampleGame/Assets/Scripts/Server
。 -
找到檔案
GameLiftServer.cs
並將其複製到遊戲專案的Server
資料夾中。當您建置伺服器可執行檔時,請使用此檔案做為建置目標。
範例程式碼包含下列使用 Amazon GameLift C# 伺服器 SDK (版本 5) 的最低必要元素:
-
初始化 Amazon GameLift API 用戶端。Amazon 無 GameLift 處不在叢集需要具有伺服器參數的 InitSDK () 呼叫。這些設定會自動設定為在外掛程式中使用。
-
實作必要的回呼函數,以回應 Amazon GameLift 服務的請求
OnStartGameSession
,包括OnProcessTerminate
、和onHealthCheck
。 -
在伺 GameLift 服器處理序準備好主持遊戲工作階段時,
ProcessReady()
使用指定的連接埠呼叫以通知 Amazon 服務。
如果您想要自訂範例伺服器程式碼,請參閱下列資源:
整合用戶端程式碼
對於連線到雲端遊戲伺服器的遊戲用戶端,最佳做法是使用用戶端後端服務撥打 Amazon GameLift 服務,而不是直接從遊戲用戶端撥打電話。
在託管 EC2 叢集上託管的外掛程式工作流程中,每個部署案例都包含預先建置的後端服務,其中包含下列元件:
-
一組 Lambda 函數和 DynamoDB 表格,用來請求遊戲工作階段和擷取遊戲工作階段資訊。這些元件使用 API 閘道做為代理伺服器。
-
Amazon Cognito 使用者集區,可產生唯一的玩家 ID 並驗證玩家連線。
若要使用這些元件,您的遊戲用戶端需要將要求傳送至後端服務的功能,才能執行下列動作:
-
在 AWS Cognito 使用者集區中建立播放程式使用者並進行驗證。
-
加入遊戲工作階段並接收連線資訊。
-
使用配對加入遊戲。
使用以下資源作為指南。
-
將客戶端與 GitHub 回購 aws/ amazon-gamelift-plugin-unity
中的 GameLiftCoreApi 類集成。此類別提供玩家驗證和擷取遊戲工作階段資訊的控制項。 -
若要檢視範例遊戲整合,請前往 GitHub 軟體庫 aws/ amazon-gamelift-plugin-unity
、 Samples~/SampleGame/Assets/Scripts/Client/GameLiftClient.cs
.
選取部署案例
在此步驟中,您可以選擇目前要部署的遊戲託管解決方案。您可以使用任何情境來進行多個遊戲部署。
單一區域叢集:將您的遊戲伺服器部署到作用中設定檔預設 AWS 區域中的單一主機資源叢集。這個案例是測試伺服器整合與 AWS 伺服器組建組態的好起點。它會部署下列資源:
AWS 已安裝並執行您的遊戲伺服器組建的叢集 (隨選)。
Amazon Cognito 使用者集區和用戶端可讓玩家驗證並開始遊戲。
將使用者集區與 API 連結的 API 閘道授權者。
WebACL 用於限制對 API 網關的過多播放器調用。
API 網關 + Lambda 功能,供玩家請求遊戲位置。
CreateGameSession()
如果沒有可用這個函數調用。API 閘道 + Lambda 函數可讓玩家取得遊戲請求的連線資訊。
FlexMatch 艦隊:將您的遊戲伺服器部署到一組艦隊,並設定具有建立玩 FlexMatch 家對戰規則的分房系統。此案例使用低成本的 Spot 主機,搭配多叢集、多地點結構,以提供持久的可用性。當您準備好開始為您的主機解決方案設計分房系統元件時,此方法非常有用。在這個案例中,您將建立此解決方案的基本資源,您可以在稍後視需要自訂這些資源。它會部署下列資源:
FlexMatch 配對配對配置和配對規則設置為接受玩家請求和形式匹配。
-
您的遊戲伺服器組建安裝並在多個位置執行的三個 AWS 艦隊。包括兩個 Spot 叢集和一個隨需叢集做為備份。
-
AWS 遊戲會話放置隊列,通過找到可能的最佳託管資源(基於可行性,成本,玩家延遲等)並啟動遊戲會話來滿足提議的匹配請求。
-
Amazon Cognito 使用者集區和用戶端可讓玩家驗證並開始遊戲。
-
將使用者集區與 API 連結的 API 閘道授權者。
-
WebACL 用於限制對 API 網關的過多播放器調用。
-
API 網關 + Lambda 功能,供玩家請求遊戲位置。此函數會呼叫
StartMatchmaking()
。 -
API 閘道 + Lambda 函數可讓玩家取得遊戲請求的連線資訊。
-
Amazon DynamoDB 資料表可用來儲存玩家的配對票證和遊戲工作階段資訊。
-
SNS 主題 + Lambda 函數來處理 GameSessionQueue 事件。
設定遊戲參數
在此步驟中,您將描述要上傳到的遊戲 AWS 。
-
遊戲名稱:為您的遊戲專案提供有意義的名稱。此名稱在插件中使用。
-
叢集名稱:為您的受管 EC2 叢集提供有意義的名稱。Amazon 在 AWS 主控台中列出資源時, GameLift 會使用此名稱 (以及叢集 ID)。
-
組建名稱:為您的伺服器組建提供有意義的名稱。 AWS 使用此名稱來參考上傳到 Amazon GameLift 並用於部署的伺服器組建副本。
-
啟動參數:輸入在受管 EC2 叢集執行個體上啟動伺服器可執行檔時要執行的選用指示。長度上限為 1024 個字元。
-
遊戲伺服器資料夾:提供包含您伺服器組建的本機資料夾路徑。
-
遊戲伺服器檔案:指定伺服器可執行檔名稱。
部署案例
在此步驟中,您會根據您選擇的部署案例,將遊戲部署到雲端主機解決方案。此程序可能需要幾分鐘的時間,同時 AWS 驗證您的伺服器組建、佈建主機資源、安裝遊戲伺服器、啟動伺服器程序,以及讓它們準備好主持遊戲工作階段。
若要開始部署,請選擇「部署」 CloudFormation。您可以在此處跟踪遊戲託管的狀態。如需詳細資訊,您可以登入 AWS 管理主控台以查看事件通知。 AWS 請務必使用與插件中活躍用戶配置文件相同的帳戶,用戶和 AWS 區域登錄。
部署完成後,您將遊戲伺服器安裝在 AWS EC2 執行個體上。至少有一個伺服器處理序正在執行,並準備好啟動遊戲工作階段。
啟動遊戲客戶端
成功部署叢集後,您現在可以執行遊戲伺服器,並可用於主持遊戲工作階段。您現在可以構建客戶端,啟動它,連接以加入遊戲會話。
-
設定您的遊戲用戶端。在此步驟中,您會提示外掛程式更新遊戲專案的
GameLiftClientSettings
資產。該插件使用此資產來存儲您的遊戲客戶端需要連接到 Amazon GameLift 服務的某些信息。-
如果您沒有匯入並初始化範例遊戲,請建立新
GameLiftClientSettings
資產。在 Unity 編輯器主功能表中,選擇 [資產]、[建立] GameLift、[用戶端設定]。如果您 GameLiftClientSettings 在專案中建立了多個副本,外掛程式會自動偵測到這一點,並通知您外掛程式將更新哪個資產。 -
在啟動遊戲中,選擇設定用戶端:套用受管 EC2 設定。此動作會更新您的遊戲用戶端設定,以使用您剛部署的受管 EC2 叢集。
-
-
建立您的遊戲用戶端。使用標準 Unity 構建過程構建客戶端可執行文件。在 [檔案] 的 [建置設定] 中,將平台切換至視窗、Mac、Linux。如果您導入了示例遊戲並初始化了設置,則構建列表和構建目標將自動更新。
-
啟動新建立的遊戲用戶端可執行檔。若要開始遊玩遊戲,請啟動兩到四個用戶端執行個體,並在每個執行個體中使用 UI 加入遊戲工作階段。
如果您使用的是範例遊戲用戶端,它具有下列特性:
-
玩家登入元件。連線至 Anywhere 叢集上的遊戲伺服器時,沒有玩家驗證。您可以輸入任何值以加入遊戲階段。
-
一個簡單的加入遊戲界面。當用戶端嘗試加入遊戲時,用戶端會自動尋找具有可用玩家位置的作用中遊戲工作階段。如果沒有可用的遊戲工作階段,用戶端會要求新的遊戲工作階段。如果有可用的遊戲工作階段,用戶端會要求加入可用的遊戲工作階段。使用多個並行用戶端測試您的遊戲時,第一個用戶端會啟動遊戲工作階段,其餘的用戶端會自動加入現有的遊戲工作階段。
-
具有四個玩家插槽的遊戲會話。您最多可以同時啟動四個遊戲用戶端執行個體,它們將加入相同的遊戲工作階段。