本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用於 Unity 的外掛程式:將您的遊戲部署到受管EC2機群
在此工作流程中,您可以使用外掛程式來準備遊戲,以託管由 Amazon 管理的雲端型運算資源 GameLift。您可以為 Amazon GameLift 功能新增用戶端和伺服器遊戲程式碼,然後將伺服器建置上傳到 Amazon GameLift 服務以進行託管。當此工作流程完成時,您會在雲端中執行遊戲伺服器,並擁有可連線至它們的運作遊戲用戶端。
若要啟動 Amazon GameLift 受管 Amazon EC2工作流程:
在 Unity 編輯器主選單中,選擇 Amazon GameLift,然後選擇 Host with Managed EC2。此工作流程提供六步驟程序,可整合、建置、部署和啟動遊戲元件。
設定您的設定檔
選擇您希望在遵循此工作流程時使用的設定檔。您選擇的設定檔會影響工作流程中的所有步驟。您建立的所有資源都與設定檔 AWS 的帳戶相關聯,並放置在設定檔的預設 AWS 區域中。設定檔使用者的許可決定您對 AWS 資源和動作的存取。
-
從可用設定檔的下拉式清單中選取設定檔。如果您還沒有設定檔,或想要建立新的設定檔,請前往 Amazon GameLift 選單,然後選擇設定 AWS 帳戶設定檔。
-
如果引導狀態不是「作用中」,請選擇引導設定檔,然後等待狀態變更為「作用中」。
將遊戲與 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 Anywhere 機群需要具有伺服器參數的 Init SDK() 呼叫。這些設定會自動設定為在外掛程式中使用。
-
實作必要的回呼函數,以回應 Amazon GameLift 服務的要求,包括
OnStartGameSession
、OnProcessTerminate
和onHealthCheck
。 -
ProcessReady()
使用指定的連接埠呼叫,以在伺服器程序準備好託管遊戲工作階段時通知 Amazon GameLift 服務。
如果您想要自訂範例伺服器程式碼,請參閱下列資源:
整合您的用戶端程式碼
對於連線至雲端遊戲伺服器的遊戲用戶端,最佳實務是使用用戶端後端服務對 Amazon GameLift 服務進行呼叫,而不是直接從遊戲用戶端進行呼叫。
在託管在受管EC2機群的外掛程式工作流程中,每個部署案例都包含預先建置的後端服務,其中包含下列元件:
-
一組 Lambda 函數和 DynamoDB 資料表,用於請求遊戲工作階段和擷取遊戲工作階段資訊。這些元件會使用API閘道作為代理。
-
產生唯一播放器IDs並驗證播放器連線的 Amazon Cognito 使用者集區。
若要使用這些元件,您的遊戲用戶端需要將請求傳送至後端服務的功能,才能執行下列動作:
-
在 AWS Cognito 使用者集區中建立播放器使用者並進行身分驗證。
-
加入遊戲工作階段並接收連線資訊。
-
使用配對功能加入遊戲。
使用下列資源作為指南。
-
將用戶端與 GitHub Repo 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 將使用者集區與 連結的閘道授權方APIs。
W ebACl 用於調節對API閘道的過度玩家呼叫。
API Gateway + Lambda 函數可讓玩家請求遊戲插槽。
CreateGameSession()
如果沒有可用,此函數會呼叫 。API Gateway + Lambda 函數可讓玩家取得遊戲請求的連線資訊。
FlexMatch 機群:將您的遊戲伺服器部署到一組機群,並設定具有規則的 FlexMatch 配對者來建立玩家配對。此案例使用具有多機群、多位置結構的低成本 Spot 託管,以實現持久可用性。當您準備好開始為託管解決方案設計相符的產生器元件時,此方法非常有用。在此案例中,您將為此解決方案建立基本資源,之後您可以視需要自訂該資源。它會部署下列資源:
FlexMatch 比對組態和比對規則集,以接受玩家請求和表單比對。
-
在 AWS 多個位置安裝並執行遊戲伺服器建置的三個機群。包含兩個 Spot 機群和一個隨需機群作為備份。
-
AWS 遊戲工作階段置放佇列,透過尋找最佳的託管資源 (根據可行性、成本、玩家延遲等) 並啟動遊戲工作階段,來滿足提議相符項目的請求。
-
Amazon Cognito 使用者集區和用戶端可讓玩家驗證和啟動遊戲。
-
API 將使用者集區與 連結的閘道授權方APIs。
-
W ebACl 用於調節對API閘道的過度玩家呼叫。
-
API Gateway + Lambda 函數可讓玩家請求遊戲插槽。此函數會呼叫
StartMatchmaking()
。 -
API Gateway + Lambda 函數可讓玩家取得遊戲請求的連線資訊。
-
Amazon DynamoDB 資料表可儲存玩家和遊戲工作階段資訊的配對票證。
-
SNS 主題 + Lambda 函數來處理 GameSessionQueue 事件。
設定遊戲參數
在此步驟中,您會描述要上傳至 的遊戲 AWS 。
-
遊戲名稱:為您的遊戲專案提供有意義的名稱。此名稱用於 外掛程式。
-
機群名稱:為您的受管EC2機群提供有意義的名稱。在主控台中列出資源時,Amazon GameLift AWS 會使用此名稱 (以及機群 ID)。
-
組建名稱:為您的伺服器組建提供有意義的名稱。 AWS 使用此名稱來參考上傳至 Amazon GameLift 並用於部署的伺服器組建複本。
-
啟動參數:輸入在受管EC2機群執行個體上啟動伺服器可執行檔時要執行的選用指示。長度上限為 1024 個字元。
-
遊戲伺服器資料夾:提供包含伺服器建置的本機資料夾路徑。
-
遊戲伺服器檔案:指定伺服器可執行檔名稱。
部署案例
在此步驟中,您會根據您選擇的部署案例,將遊戲部署至雲端託管解決方案。此程序可能需要幾分鐘的時間,同時 AWS 驗證您的伺服器建置、佈建託管資源、安裝遊戲伺服器、啟動伺服器程序,以及讓他們準備好託管遊戲工作階段。
若要開始部署,請選擇部署 CloudFormation。您可以在此處追蹤遊戲託管的狀態。如需更多詳細資訊,您可以登入 的 AWS AWS Management 主控台,並檢視事件通知。請務必使用與外掛程式中作用中使用者設定檔相同的帳戶、使用者和 AWS 區域登入。
當部署完成時,您會在 AWS EC2執行個體上安裝遊戲伺服器。至少有一個伺服器程序正在執行中,並準備好啟動遊戲工作階段。
啟動遊戲用戶端
成功部署機群時,您現在已讓遊戲伺服器執行,並可用於託管遊戲工作階段。您現在可以建置用戶端、啟動用戶端、連線以加入遊戲工作階段。
-
設定您的遊戲用戶端。在此步驟中,您會提示外掛程式更新遊戲專案的
GameLiftClientSettings
資產。外掛程式使用此資產來存放遊戲用戶端連線至 Amazon GameLift 服務所需的特定資訊。-
如果您未匯入並初始化範例遊戲,請建立新的
GameLiftClientSettings
資產。在 Unity 編輯器主功能表中,選擇資產、建立、 GameLift、用戶端設定 。如果您在專案 GameLiftClientSettings 中建立多個 複本,外掛程式會自動偵測到此情況,並通知您外掛程式將更新的資產。 -
在啟動遊戲 中,選擇設定用戶端:套用受管EC2設定 。此動作會更新您的遊戲用戶端設定,以使用您剛部署的受管EC2機群。
-
-
建置您的遊戲用戶端。使用標準 Unity 建置程序建置用戶端可執行檔。在檔案、建置設定中,將平台切換至 Windows、Mac、Linux。如果您匯入範例遊戲並初始化設定,建置清單和建置目標會自動更新。
-
啟動新建置的遊戲用戶端可執行檔。若要開始玩遊戲,請啟動兩到四個用戶端執行個體,並使用每個執行個體中的 UI 來加入遊戲工作階段。
如果您使用的是範例遊戲用戶端,則具有下列特性:
-
播放器登入元件。連線至 Anywhere 機群上的遊戲伺服器時,沒有玩家驗證。您可以輸入任何值來加入遊戲工作階段。
-
簡單加入遊戲使用者介面。當用戶端嘗試加入遊戲時,用戶端會自動尋找具有可用玩家插槽的作用中遊戲工作階段。如果沒有可用的遊戲工作階段,用戶端會請求新的遊戲工作階段。如果遊戲工作階段可用,用戶端會請求加入可用的遊戲工作階段。使用多個並行用戶端測試遊戲時,第一個用戶端會啟動遊戲工作階段,其餘用戶端會自動加入現有的遊戲工作階段。
-
具有四個玩家插槽的遊戲工作階段。您最多可以同時啟動四個遊戲用戶端執行個體,它們將加入相同的遊戲工作階段。