

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

# 使用 託管Amazon GameLift Servers的運作方式
<a name="gamelift-howitworks"></a>

Amazon GameLift Servers 是一項服務，可為以工作階段為基礎的多玩家遊戲提供專用、低成本的伺服器、基礎設施佈建、擴展和工作階段管理。此服務提供彈性的工具和功能，您可以針對遊戲自訂，或與自有系統協作使用。利用Amazon GameLift Servers受管託管，讓您可以專注於建立遊戲體驗，而不是管理伺服器操作。

本主題說明完整Amazon GameLift Servers託管解決方案的核心元件，以及它們如何協同運作，為玩家提供多玩家遊戲工作階段。

## 遊戲託管解決方案的核心元件
<a name="gamelift-howitworks-components"></a>

完整的Amazon GameLift Servers託管解決方案包含數個基本元件，可共同提供多玩家遊戲體驗。其中一些元件由您建置和管理，而其他元件則由 根據您的組態選擇提供Amazon GameLift Servers和管理。了解這些元件如何互動及其個別角色對於開發有效的遊戲託管解決方案至關重要。這些元件包括：
+ 遊戲用戶端在玩家裝置上執行。
+ 後端服務可讓遊戲用戶端與 通訊Amazon GameLift Servers，以取得遊戲工作階段資訊並加入遊戲。
+ 遊戲伺服器軟體會在遊戲託管資源上執行，並為一組玩家託管遊戲工作階段。
+ 配置系統會啟動遊戲工作階段，並將玩家與遊戲配對。
+ 遊戲託管機群會在一或多個地理位置提供遊戲伺服器。
+ 遊戲託管管理系統會監控遊戲託管狀態並管理容量。

![具有受管 的遊戲架構Amazon GameLift Servers。](http://docs.aws.amazon.com/zh_tw/gameliftservers/latest/developerguide/images/game_architecture.png)


### 遊戲用戶端
<a name="gamelift-howitworks-components-client"></a>

遊戲用戶端是在玩家裝置上執行的遊戲軟體。它會與後端服務通訊，並直接連接到遊戲伺服器以參與遊戲，以啟動玩家置放到遊戲工作階段。

**遊戲託管的關鍵函數**
+ 將聯結請求傳送至後端服務。在聯結請求中包含相關的玩家資料和遊戲工作階段資料。
+ 收集遊戲用戶端的延遲資料，並在聯結請求中包含該資訊。
+ 從後端服務接收遊戲工作階段連線資訊，並使用它來連線至遊戲伺服器。
+ 處理工作階段連線案例，例如玩家驗證、 的配對接受Amazon GameLift Servers FlexMatch、工作階段中斷或中斷連線。

**建置它的對象**  
您可以將遊戲託管功能新增至遊戲用戶端軟體，並設定與後端服務的通訊。

### 後端服務
<a name="gamelift-howitworks-components-backend"></a>

後端服務是遊戲用戶端與 Amazon GameLift Servers服務之間的協調層。它控制與 服務的所有通訊，以提出遊戲工作階段置放的請求，並擷取遊戲工作階段和玩家工作階段資訊。使用後端服務是最佳實務，可代表遊戲用戶端維持與服務的安全通訊，並避免與遊戲用戶端共用敏感 AWS 的登入資料和許可。

您的後端服務會為您的遊戲工作階段實作玩家分組策略。玩家最終在遊戲工作階段中的方式具有許多彈性。您可以為玩家設定遊戲工作階段瀏覽器，或支援玩家定義的隊伍。或者，您可以在遊戲工作階段請求進入時集區，形成玩家群組 （可能使用預先排序），並為每個群組啟動遊戲工作階段。透過FlexMatch配對，您可以形成玩家配對並回填現有的配對。

**遊戲託管的關鍵函數**
+ 驗證來自遊戲用戶端的通訊。
+ 向 提出請求Amazon GameLift Servers，以啟動新的遊戲工作階段、取得遊戲工作階段資訊，或加入現有的遊戲工作階段。視需要在請求中包含相關的遊戲工作階段和玩家資料。
+ 選擇性地建立玩家工作階段的請求，以更密切地監控遊戲工作階段的可用性。使用玩家工作階段來保留遊戲工作階段位置、在玩家連線時驗證玩家，以及追蹤玩家中斷連線。
+ 使用遊戲工作階段連線詳細資訊和請求的其他資訊來回應遊戲用戶端。

**建置它的對象**  
您可以在由您管理的環境中建置後端服務，以支援您的遊戲需求，並實作玩家進入遊戲的方式。整合 AWS SDK 以呼叫Amazon GameLift Servers服務 API。選擇性地 AWS 使用 AWS Lambda Amazon Simple Storage Service (Amazon S3) 和 Amazon Cognito 等服務在 上建置後端服務。

### 遊戲伺服器
<a name="gamelift-howitworks-components-gameserver"></a>

遊戲伺服器是您的自訂伺服器軟體，可管理遊戲狀態、處理玩家動作，以及同步多個連線玩家的遊戲體驗。遊戲伺服器會維持與 Amazon GameLift Servers服務的通訊，以管理遊戲工作階段託管。

**遊戲託管的關鍵函數**
+ 與 通訊Amazon GameLift Servers：
  + 報告狀態 （準備好託管工作階段、準備好接受玩家、運作狀態）。
  + 回應服務呼叫 （開始或結束遊戲工作階段）。
+ 管理遊戲工作階段生命週期，以在每個程序一次託管一個遊戲工作階段。
+ 與其他 AWS 服務協調，以新增功能。
+ 選擇性地驗證新的玩家連線。

**建置它的對象**  
您可以建置遊戲伺服器軟體。您可以整合適用於 的伺服器 SDK Amazon GameLift Servers並新增功能，以建立與服務的連線，並支援遊戲工作階段管理。

### 遊戲託管機群
<a name="gamelift-howitworks-components-fleet"></a>

託管機群是執行遊戲伺服器的運算資源集合。機群資源可以分散到多個地理位置，無論玩家身在何處，都能提供低延遲的遊戲體驗。每個機群資源都會執行一或多個遊戲伺服器程序，這些程序會直接與 通訊Amazon GameLift Servers。每個遊戲伺服器程序一次可以託管一個遊戲工作階段。

機群特性和功能會根據機群的託管類型而有所不同。受管機群會將資源部署到 AWS 雲端 ，並由 管理Amazon GameLift Servers。Anywhere 機群是客戶提供的運算資源，在 外部管理Amazon GameLift Servers。

**遊戲託管的關鍵函數**
+ 佈建遊戲伺服器託管資源。
  + 受管機群會使用各種組態設定來部署雲端型 Amazon EC2 執行個體。機群組態會決定機群中每個執行個體的運算能力、執行個體的實體位置，以及其他詳細資訊。受管機群新增或移除 EC2 執行個體以回應容量擴展 
  + Anywhere 機群部署為自我管理。機群可以包含實體硬體或其他雲端資源，並視需要設定。
+ 安裝執行期環境和遊戲伺服器軟體。
  + 受管 Amazon EC2 機群執行個體會與您的遊戲伺服器建置和具有相容執行時間環境的 Amazon Machine Image (AMI) 部署。
  + 受管容器機群執行個體會與您的遊戲伺服器建置一起部署，並使用 Docker 工具和其他元件來部署容器最佳化 AMI，以使用 Amazon ECS。
  + Anywhere 機群會使用您選擇的遊戲伺服器軟體和作業系統進行部署。
+ 管理遊戲伺服器程序生命週期。套用預先設定的執行時間指示，以在每個機群資源上啟動和停止程序。

**建置它的對象**

這取決於機群的託管類型：
+ 受管 Amazon EC2 機群：您將遊戲伺服器組建上傳到 Amazon GameLift Servers，以存放它以部署到機群執行個體。 Amazon GameLift Servers提供機群的 AWS 雲端 基礎設施。您可以設定機群，並指示其如何在每個機群執行個體上執行遊戲伺服器。
+ 受管容器機群：您可以將遊戲伺服器建置和執行時間指示封裝到容器映像中，以存放在 Amazon ECR 中進行部署。 Amazon GameLift Servers提供機群的 AWS 雲端 基礎設施。您提供容器架構，並設定機群來託管您的容器。
+ Anywhere 機群：您可以佈建所有基礎設施和管理伺服器軟體部署。您可以建立 Anywhere 機群，將作用中的遊戲託管資源與 連線Amazon GameLift Servers。

### 遊戲工作階段置放系統
<a name="gamelift-howitworks-components-placement"></a>

遊戲工作階段置放系統會尋找可用的遊戲伺服器來託管新的遊戲工作階段。系統會使用遊戲伺服器可用性的即時資訊來做出最佳置放決策。

在 中Amazon GameLift Servers，主要遊戲工作階段置放機制是佇列。遊戲工作階段佇列使用您可以設定的演算法來放置遊戲工作階段，以獲得最佳結果。您可以根據最低託管成本和最低玩家延遲等因素來排定置放的優先順序，也可以設定佇列以跨多個地理位置進行搜尋。做為佇列的替代方案，您可以指定特定機群來託管您的遊戲工作階段。

**遊戲託管的關鍵函數**
+ 處理從後端服務收到的遊戲工作階段置放請求。
+ 根據託管資源可用性的即時資訊進行置放。
+ 使用玩家延遲資料和其他資料來排定置放選項的優先順序 （僅限佇列）
+ 提示遊戲伺服器程序以啟動新的遊戲工作階段。
+ 在遊戲工作階段準備好接受玩家之後，更新遊戲工作階段連線資訊。
+ 選擇性地設定FlexMatch配對以建立玩家配對，並請求遊戲工作階段放置配對。

**建置它的對象**  
Amazon GameLift Servers 提供置放系統。您可以透過後端服務如何提出置放請求，以及選擇性地設定遊戲工作階段佇列和FlexMatch配對建構器來設定置放行為。使用 Amazon GameLift Servers主控台、 AWS 開發套件或 AWS CLI ，為您的遊戲建立和設定佇列和配對建構器。

### 遊戲託管管理系統
<a name="gamelift-howitworks-components-management"></a>

遊戲託管管理系統是操作骨幹，可協調和監控遊戲託管解決方案的所有層面。此系統提供智慧和自動化，讓 Amazon GameLift Servers的置放和擴展功能成為可能。

**遊戲託管的關鍵函數**
+ 追蹤所有機群中遊戲伺服器程序、遊戲工作階段和玩家工作階段的即時狀態和可用性，以支援遊戲工作階段放置和自動容量擴展。
+ 監控機群運作狀態和效能。
+ 收集和分析遊戲託管活動指標。
+ 提供容量擴展工具，包括根據玩家需求和機群使用率自動擴展。
+ 管理遊戲伺服器軟體和執行時間指示的更新。

**建置它的對象**
+ 受管機群： Amazon GameLift Servers 提供可用性追蹤、遊戲託管活動和硬體效能的指標，以及容量擴展工具。您可以使用可用的 AWS 工具來管理遊戲伺服器軟體更新、修改執行時間指示，以及自訂指標的使用 （例如設定 CloudWatch 進行監控）。您可以設定自訂擴展政策並視需要修改。
+ Anywhere 機群： Amazon GameLift Servers 提供可用性追蹤和遊戲託管活動指標。您可以管理機群組態變更，包括遊戲伺服器軟體的更新和執行時間指示。您可以建立系統來監控機群效能和管理機群容量擴展。

## 元件如何一起工作
<a name="gamelift-howitworks-workflow"></a>

**部署遊戲託管運算時**
+ **已安裝遊戲伺服器軟體**：運算已安裝執行期環境和您的遊戲伺服器建置
+ **遊戲伺服器啟動**：在運算上至少啟動一個遊戲伺服器可執行檔的執行個體，以及選用的啟動參數。
+ **遊戲伺服器連線至 Amazon GameLift Servers**：作為其啟動動作的一部分，遊戲伺服器程序會呼叫伺服器 SDK 來初始化與服務的連線。
+ **遊戲伺服器報告已準備好託管遊戲工作階段**：遊戲伺服器程序完成啟動動作，然後呼叫伺服器 SDK 以報告整備。它會根據其組態開始報告運作狀態。
+ **Amazon GameLift Servers 追蹤可用性**：服務會記錄遊戲伺服器程序對遊戲工作階段置放的可用性。它也會更新機群、執行個體和遊戲工作階段的指標，以追蹤用量和容量。
+ **遊戲伺服器等待遊戲工作階段指派**：遊戲伺服器程序會在等待提示啟動遊戲工作階段時維持閒置狀態。

**當玩家想要加入遊戲時**
+ **玩家啟動遊戲**：玩家啟動您的遊戲用戶端、使用您的後端服務進行身分驗證，並要求加入遊戲。
+ **後端服務請求遊戲工作階段**：您的後端服務會根據其玩家分組策略呼叫 Amazon GameLift Servers 來尋找或建立適當的遊戲工作階段。請求可能包含玩家或遊戲資料，以供遊戲工作階段使用。
+ **Amazon GameLift Servers 放置遊戲工作階段**：啟動新的遊戲工作階段時，置放系統會識別託管工作階段的最佳位置，並選取可用的遊戲伺服器程序。服務會提示選取的程序啟動新的遊戲工作階段，並傳遞任何玩家或遊戲資料。如果FlexMatch配對使用中，配對建構器會先建立配對，然後請求放置配對。
+ **遊戲伺服器會啟動遊戲工作階段**：遊戲伺服器會啟動啟動遊戲工作階段的步驟。完成後，它會向 Amazon GameLift Servers 回報已準備好接受玩家連線。
+ **交付至遊戲用戶端的連線資訊**：遊戲伺服器更新其狀態後， Amazon GameLift Servers 會提供遊戲工作階段連線資訊。後端服務會收到此資訊並將其交付給遊戲用戶端。
+ **玩家連接到遊戲工作階段**：遊戲用戶端使用連線資訊直接連接到遊戲伺服器並開始遊戲。
+ **Amazon GameLift Servers 會監控遊戲工作階段狀態**：遊戲伺服器程序會報告運作狀態、選用玩家連線狀態和遊戲工作階段狀態，以追蹤持續的遊戲工作階段可用性。
+ **遊戲伺服器程序關閉**：遊戲伺服器程序會結束遊戲工作階段、報告狀態，然後自行關閉。