

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

# 教學課程：使用Amazon GameLift Servers包裝函式快速入門
<a name="gamelift-wrapper-tutorial"></a>

歡迎使用 的入門教學課程Amazon GameLift Servers。在本教學課程中，您會快速部署遊戲伺服器，以託管在雲端型運算資源的機群上。使用此教學課程略過將適用於 的伺服器 SDK 整合Amazon GameLift Servers到您的遊戲程式碼的工作，並改為使用最少的功能部署您的遊戲，以與服務通訊Amazon GameLift Servers並執行遊戲工作階段。您將設定基本託管解決方案，並使用它來體驗各種功能，例如自動擴展和配對。這也是在即時示範或測試中託管遊戲原型的絕佳方式。

此加入方法的主要優點：
+ 快速部署遊戲伺服器以快速託管。
+ 零遊戲程式碼變更且不需要修改。
+ 將此方法與任何遊戲可執行檔搭配使用，無論遊戲引擎為何。
+ 探索所有Amazon GameLift Servers管理工具，包括監控遊戲工作階段活動和託管運作狀態。

**注意**  
包裝函式適用於評估和基本生產用途。進階功能，例如詳細的玩家工作階段管理，需要完整的伺服器 SDK 整合。

## 先決條件
<a name="gamelift-wrapper-tutorial-prerequisites"></a>

開始前，請確保您具備以下條件：
+  AWS 帳戶 具有適當許可的
+ AWS CLI 已安裝
+ Go 1.18\$1
+ 多玩家遊戲伺服器可執行檔
+ Make (Linux/Mac)
+ 與作用中帳戶一起安裝的 Git

## 概觀
<a name="gamelift-wrapper-tutorial-overview"></a>

在本教學課程中，您將：

1. 取得並建置包裝函式

1. 準備遊戲組建

1. 設定包裝函式

1. 上傳遊戲伺服器組建

1. 建立受管 EC2 機群

1. 建立並連線至遊戲工作階段

1. 監控和管理遊戲伺服器

1. 擴展您的遊戲伺服器

## 步驟 1：取得並建置遊戲伺服器包裝函式
<a name="gamelift-wrapper-tutorial-step1"></a>

使用下列命令來取得遊戲伺服器包裝函式來源並建置包裝函式。這些命令使用 SSH，但您也可以直接前往 GitHub 儲存庫。

### Windows
<a name="gamelift-wrapper-tutorial-step1-windows"></a>

```
> git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git
> cd amazon-gamelift-servers-game-server-wrapper
> powershell -file .\build.ps1
```

### Mac 和 Linux
<a name="gamelift-wrapper-tutorial-step1-mac-linux"></a>

```
$ git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git
$ cd amazon-gamelift-servers-game-server-wrapper
$ make
```

在成功的建置上，「輸出」目錄會新增至 `amazon-gamelift-servers-game-server-wrapper`。在此目錄中有三個資料夾，每個支援的託管機群選項各一個，其中包含一組建置成品。在本教學課程中，您將部署至受管 EC2 機群，因此您將使用 資料夾 `gamelift-servers-managed-ec2`。

## 步驟 2：準備您的遊戲伺服器建置
<a name="gamelift-wrapper-tutorial-step2"></a>

在此步驟中，您會準備遊戲伺服器建置檔案以上傳至 Amazon GameLift Servers。

### 建立遊戲目錄
<a name="gamelift-wrapper-tutorial-step2-create-directory"></a>

現在，在本機電腦上準備遊戲目錄。此目錄必須包含使用 執行遊戲伺服器所需的所有檔案Amazon GameLift Servers。這包括遊戲伺服器包裝函式、遊戲伺服器建置，以及讓包裝函式與遊戲伺服器搭配使用的 config.yaml。

使用下列步驟：

1. 受管 EC2 機群。在遊戲伺服器包裝函式輸出資料夾中，找到要部署到受管 EC2 機群的建置成品。組建將寫入輸出目錄，如下所示：`out\linux\amd64\gamelift-servers-managed-ec2`。

1. 複製遊戲伺服器可執行檔和執行到 `gamelift-servers-managed-ec2` 資料夾所需的所有相關檔案。您可以視需要使用巢狀目錄。

範例目錄結構如下所示：

```
gamelift-servers-managed-ec2
│-- config.yaml
│-- amazon-gamelift-servers-game-server-wrapper
│-- MyGame
│   │-- server-executable.exe
│   │-- my-game-settings
│   │ ......
```

## 步驟 3：設定機群的包裝函式
<a name="gamelift-wrapper-tutorial-step3"></a>

Amazon GameLift Servers 會管理機群運算執行個體的生命週期，在已安裝伺服器建置的情況下啟動新執行個體，並視需要回收執行個體。服務會管理在每個執行個體上執行的遊戲伺服器程序生命週期。Managed EC2 機群可以在多個位置擁有執行個體，無論玩家身在何處都能提供支援。

編輯 config.yaml 檔案以設定記錄、連接埠設定和伺服器初始化的包裝函式。

1. **設定記錄設定**。遊戲伺服器包裝函式會為每個遊戲伺服器程序產生日誌訊息。根據預設，日誌層級會設定為偵錯以取得最大詳細程度。這在設定和故障診斷期間非常有用，並決定日誌訊息的詳細程度 - 在這種情況下，是最詳細的。選項包括偵錯、資訊、警告和錯誤 （最低詳細程度）。

1. **指定遊戲伺服器日誌目錄的路徑**。遊戲伺服器日誌的預設路徑為 `./game-server-logs`。此目錄包含遊戲伺服器產生的所有日誌，且每個執行個體都有這些日誌。日誌會自動上傳至從**事件**索引標籤存取日誌Amazon GameLift Servers的位置。如需詳細資訊，請參閱故障診斷一節。

1. **定義網路連接埠組態**。將遊戲連接埠設定為您偏好的連接埠。在本教學課程中，請僅指定一個連接埠，因為您將建立一個機群，每個執行個體只會執行一個並行遊戲伺服器程序。如果您決定一次執行多個程序，則需要為每個並行程序設定足夠的連接埠。預設值為 37016，如組態檔案中所示，但一般而言，對於使用 Linux 組建的機群，使用連接埠 22 和 1026-60000。對於使用 Windows 組建的機群，請使用連接埠 1026-60000。

1. **設定遊戲伺服器可執行檔的路徑**。對於使用其實際名稱和位置`./MyGame/my-server-executable.exe`自訂遊戲伺服器可執行檔的路徑。這是啟動遊戲伺服器的進入點。

1. **設定遊戲伺服器引數**。至少，指定 -port 引數，並使用您之前定義的相同遊戲連接埠值。"pos" 值 0 表示這是第一個引數。視需要新增其他引數。這些引數會在啟動時傳遞到您的遊戲伺服器，讓您設定其執行時間行為。

   1. 引數： `"--port"`

   1. 值：`"{{.port number here}}"`

   1. 位置：`0`（清單中的第一個引數）

範例組態：

```
log-config:
  wrapper-log-level: debug
game-server-logs-dir: ./game-server-logs
ports:
  gamePort: 37016
game-server-details:
  executable-file-path: ./MyGame/my-server-executable
game-server-args:
  - arg: "--port"
    val: "{{.gameport}}"
    pos: 0
```

## 步驟 4：上傳遊戲伺服器組建
<a name="gamelift-wrapper-tutorial-step4"></a>

您現在已完成遊戲伺服器組建的所有必要元素 （遊戲伺服器包裝函式、config.yaml 和遊戲伺服器檔案），並準備好將遊戲組建上傳至 Amazon GameLift Servers 進行託管。上傳遊戲組建的最快方法是使用 AWS CLI 命令`upload-build`，如下列範例所示。

使用 Windows 上傳遊戲組建：

```
aws gamelift upload-build \
    --name gamelift-test-2025-03-11-1 \
    --build-version gamelift-test-2025-03-11-1 \
    --build-root out/windows/amd64/gamelift-servers-managed-ec2 \
    --operating-system WINDOWS_2022 \
    --server-sdk-version 5.3.0 \
    --region us-west-2
```

**注意**  
對於 Mac 和 Linux 組建，請使用 --operating-system AMAZON\$1LINUX\$12023

當您建立組建時，請從 API 回應記錄組建 ID，以將其用於建立機群。

## 步驟 5：建立受管 EC2 機群
<a name="gamelift-wrapper-tutorial-step5"></a>

下列步驟說明最小機群組態，因此您可以盡快啟動並執行。

若要建立機群：

1. 登入 AWS 管理主控台 並導覽至 Amazon GameLift Servers。

1. 在主控台視窗頂端的選單列上，檢查 以確保您的建置位於哪個區域。請注意，因為您的機群必須位於相同區域，否則您將無法尋找或選擇您的組建。

1. 在**受管 EC2** 區段的導覽窗格中，選擇**組建**。

1. 選取您先前上傳的組建，以顯示**組建詳細資訊頁面**。

1. 在機群區段中，選擇**建立機群**，該機群會顯示定義受管 EC2 機群詳細資訊頁面，您可以從中追蹤機群的狀態，並在**事件**索引標籤上檢視機群建立事件。

1. 填寫名稱和描述，然後選擇**下一步**。

1. 在定義執行個體詳細資訊頁面中，預設會顯示組建的區域。選擇您要新增的任何其他區域。

1. 針對**機群類型**，選擇**隨需**。

1. 在**執行個體類型**下，選擇 **c5.large**，然後選擇**下一步**。

1. 在**執行期組態**下，由於您上傳的遊戲組建使用包裝函式，因此您需要改為指向包裝函式可執行檔。對於 Windows 遊戲伺服器，這是 `C:\game\amazon-gamelift-servers-game-server-wrapper.exe` 。對於 Linux 遊戲伺服器，這是 `/local/game/amazon-gamelift-servers-game-server-wrapper`。

   例如：`LaunchPath": "/local/game/amazon-gamelift-servers-game-server-wrapper", "ConcurrentExecutions": 1, "Parameters": "—port 37016`

   此外，使用允許 在 `config.yaml`和執行時間組態啟動參數中設定的連接埠的範圍來設定遊戲連接埠值。中的連接埠`config.yaml`不需要符合機群執行時間組態中指定的連接埠，但如果組態指定不同的連接埠，則該值會覆寫 中的內容`config.yaml`。在執行時間組態中輸入的啟動參數也會覆寫 中的內容`config.yaml`。

1. 在**檢閱和建立**頁面上，再次檢查所有組態，然後選擇**提交**以建立您的機群。機群狀態會在啟動容量以託管遊戲伺服器時變更，而且很快就會顯示**作用中**狀態。啟用完成並部署機群後，服務會啟動包裝函式，準備好接收遊戲工作階段請求。

## 步驟 6：建立並連線至遊戲工作階段
<a name="gamelift-wrapper-tutorial-step6"></a>

當您的機群狀態顯示**作用中**時，這表示遊戲伺服器已準備好並等待託管遊戲工作階段。若要啟動遊戲工作階段，請向 Amazon GameLift Servers服務提出遊戲工作階段請求。在這裡，您將使用 AWS CLI 提出此請求。

**注意**  
請記住，使用 建立遊戲工作階段對於測試和熟悉程序 AWS CLI 非常有用。在某些時間點，您會將程式設計 AWS SDK 呼叫新增至遊戲後端服務，做為遊戲配對或遊戲工作階段放置系統的一部分。

使用下列項目來建立遊戲工作階段：

```
aws gamelift create-game-session \
--fleet-id <FLEET_ID> \
--game-properties '[{"Key": "exampleProperty", "Value": "exampleValue"}]' \
--maximum-player-session-count 3 \
--region us-west-2
```

您也可以將自訂遊戲屬性傳遞至伺服器可執行檔。如需詳細資訊，請參閱 README 中的遊戲伺服器引數。當它收到 create-game-session 呼叫時， 會Amazon GameLift Servers通知包裝函式啟動遊戲伺服器可執行檔並啟動遊戲工作階段。中的內容`config.yaml`會影響遊戲伺服器的組態，而主控台中設定的啟動參數會決定遊戲工作階段本身的組態。

新增遊戲屬性的範例格式：

```
defaultArgs:
        - arg: "--port"
          val: "{{.GamePort}}"
          pos: 0
        - arg: "--ipAddress"
          val: "{{.IpAddress}}"
          pos: 1
        - arg: "--gameSessionId"
          val: "{{.GameSessionId}}"
          pos: 2
```

## 步驟 7：管理和監控您的機群
<a name="gamelift-wrapper-tutorial-step7"></a>

現在已設定遊戲伺服器機群並啟動遊戲工作階段，您可以從Amazon GameLift Servers主控台管理和監控它。完成此操作的最佳方法是從機群詳細資訊頁面，您可以在擴展索引標籤上編輯機群詳細資訊或變更機群**擴展**和容量。請參閱下列有關擴展遊戲伺服器的章節。

選擇**指標**索引標籤，以檢視描述活動和硬體指標監控的圖表。如需指標圖表的詳細資訊，請選擇機群 ID 旁的**資訊**連結。此外，雖然您可以從**指標**索引標籤密切監控遊戲伺服器，您也可以在 CloudWatch 儀表板中將警示新增至這些指標。

從主控台導覽至 CloudWatch 儀表板：

1. 在搜尋列中輸入「CloudWatch」，然後從搜尋結果清單中選擇它，以顯示 CloudWatch 概觀。

1. 向下捲動並選擇**檢視 GameLift 儀表板**，根據機群和遊戲工作階段的關鍵指標來查看圖形。

## 步驟 8：擴展您的遊戲伺服器
<a name="gamelift-wrapper-tutorial-step8"></a>

對於下一個步驟，您可以設定自動擴展。透過自動擴展，您可以動態擴展機群容量以回應遊戲伺服器活動。隨著玩家抵達和開始遊戲工作階段，自動擴展會新增更多執行個體，隨著玩家需求減少，自動擴展會釋出未使用的執行個體。這是將託管資源和成本降至最低的有效方法，同時仍提供流暢、快速的玩家體驗。

準備啟動遊戲時，您會想要為機群設定自動擴展。建議您使用自動擴展作為有效方式，將託管資源和成本降至最低，同時仍提供順暢、快速的玩家體驗。

### 手動設定機群容量
<a name="gamelift-wrapper-tutorial-step8-manual"></a>

手動設定機群容量

1. 前往機群詳細資訊頁面中的**擴展**索引標籤。

1. 選取位置，然後選擇**編輯**。

1. 變更**所需的執行個體**值，並變更**大小**下限和**上限**設定，以擴展超過其目前值，然後選擇**確認**。

**注意**  
使用最大執行個體設定作為停止間隙，以防止過度擴展和成本。

### 使用目標型自動擴展
<a name="gamelift-wrapper-tutorial-step8-target-based"></a>

使用目標型自動擴展

目標型自動擴展 （目標追蹤） 會將機群擴展連結至可用遊戲工作階段的百分比。隨著玩家玩遊戲的激增和可用的遊戲工作階段減少，它會透過自動新增更多執行個體到機群來回應。

1. 在**目標型自動擴展政策**下，選擇**新增政策**，並將機群容量設定為在達到您設定之可用遊戲工作階段百分比的閾值時自動變更。較大的緩衝區可以更好地處理突增，讓新玩家快速進入遊戲，但也可能導致更高的託管成本。

1. 選擇**確認**以接受變更。

規則型自動擴展可讓您更精細地控制，例如將擴展連結至其他機群指標，以及設定自訂閾值和擴展回應的能力。它提供強大的選項，但還需要使用 CLI 和重大測試來了解自訂規則的運作方式。本教學課程著重於先設定目標型方法。

## 對常見問題進行故障診斷
<a name="gamelift-wrapper-tutorial-troubleshoot"></a>

以下是您在讓遊戲伺服器和遊戲工作階段執行時可能遇到的常見問題。當伺服器或遊戲工作階段未正確執行時，第一步是檢查日誌，這可能會顯示生產中新部署或遊戲的下列其中一個問題。

日誌中通常會顯示以下內容：
+ 遊戲伺服器程序無法啟動。這可能是包裝函式組態中的錯誤 — 驗證檔案具有正確的啟動路徑和正確的啟動參數和引數。
+ 遊戲伺服器建置無法執行。這可能是遊戲程式碼中的錯誤。
+ 玩家無法連線到遊戲工作階段。這可能是連接埠組態錯誤。
+ 延遲或慢速連線。檢閱擴展政策和閾值。
+ 無連線。驗證機群的連接埠規則和組態。

### 檢視機Amazon GameLift Servers群的事件日誌
<a name="gamelift-wrapper-tutorial-troubleshoot-fleet-logs"></a>

檢視機Amazon GameLift Servers群的事件日誌

1. 開啟 Amazon GameLift Servers 主控台。

1. 在機群詳細資訊頁面上，選擇**事件**索引標籤並下載日誌。您也可以從指標索引標籤監控遊戲伺服器運作狀態和遊戲工作階段啟用的活動和硬體**指標**。

### 檢視遊戲工作階段日誌
<a name="gamelift-wrapper-tutorial-troubleshoot-session-logs"></a>

檢視遊戲工作階段日誌

1. 從主控台開啟您的機群，並開啟**遊戲工作階段**索引標籤。

1. 從清單中選擇遊戲工作階段 ID，以顯示其概觀頁面。

1. 選擇**下載日誌**以在本機下載日誌檔案。

若要使用 CLI 檢視遊戲工作階段日誌，請使用 `GetGameSessionLogURL` API。 Amazon GameLift Servers會自動儲存日誌 14 天。

您也可以為機群設定 Amazon CloudWatch logs。這提供額外的記錄功能，以及與其他 AWS 監控服務的整合。

對於透過 CloudWatch 的即時日誌存取或延長保留期間：

1. 在Amazon GameLift Servers主控台儀表板頂端的搜尋列中輸入「CloudWatch」，然後從結果下拉式清單中選擇它。

1. 前往 CloudWatch Log Groups 並搜尋特定工作階段。最簡單的方法是按一下**全部搜尋**並使用 gameSessionId 或 clientId 進行篩選。

## 後續步驟
<a name="gamelift-wrapper-tutorial-next-steps"></a>
+ [建立多位置機群，以在其他位置新增託管](gamelift-regions.md#gamelift-regions-hosting)
+ [新增遊戲工作階段佇列，為跨多個位置的遊戲工作階段提供最佳配置](queues-intro.md)
+ [透過為您的遊戲建立配對建構器和規則集來實驗 FlexMatch 配對](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-intro.html)
+ [開始為您的遊戲用戶端和後端服務元件使用功能，讓玩家可以提出加入請求並直接連線至遊戲工作階段](gamelift-sdk-client-api.md)
+ [準備就緒時，請移至完全整合的解決方案](gamelift-roadmap-managed.md)