

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 适用于 Unity 的 Amazon GameLift Servers 插件（服务器 SDK 4）
<a name="unity-plug-in-sdk4"></a>

Amazon GameLift Servers 提供一些工具，用于让您的多人游戏服务器准备就绪，从而在 Amazon GameLift Servers 上运行。借助适用于 Unity 的 Amazon GameLift Servers 插件，您可以更轻松地将 Amazon GameLift Servers 集成到 Unity 游戏项目中并部署 Amazon GameLift Servers 资源进行云托管。使用 Unity 插件访问Amazon GameLift Servers APIs 和部署常见游戏场景的 Amazon CloudFormation 模板。

设置插件后，您可以试用 [Amazon GameLift ServersUnity 示例](https://github.com/aws-samples/amazon-gamelift-unity) GitHub。

**Topics**
+ [将 Amazon GameLift Servers 与 Unity 游戏服务器项目集成](integration-unity-server-sdk4.md)
+ [将 Amazon GameLift Servers 与 Unity 游戏客户端项目集成](integration-unity-client-sdk4.md)
+ [安装并设置插件](#unity-plug-in-sdk4-install)
+ [在本地测试游戏](#unity-plug-in-sdk4-test)
+ [部署场景](#unity-plug-in-sdk4-scenario)
+ [在 Unity 中将游戏与 Amazon GameLift Servers 集成](#unity-plug-in-sdk4-integration-intro)
+ [导入并运行示例游戏](#unity-plug-in-sdk4-sample-game)

## 安装并设置插件
<a name="unity-plug-in-sdk4-install"></a>

本节介绍如何下载、安装和设置适用于 Unity 的 Amazon GameLift Servers 插件版本 1.0.0。

**先决条件**
+ 适用于 Windows 的 Unity 2019.4 LTS、适用于 Windows 的 2020.3 LTS 或适用于 macOS 的 Unity
+ Java 的当前版本
+ .NET 4.x 的当前版本

**下载并安装适用于 Unity 的插件**

1. 下载适用于 Unity 的 Amazon GameLift Servers 插件。您可以在[适用于 Unity 存储库的 Amazon GameLift Servers 插件](https://github.com/aws/amazon-gamelift-plugin-unity/releases)页面上找到最新版本。在[最新版本](https://github.com/aws/amazon-gamelift-plugin-unity/releases)下，选择**资产**，然后下载 `com.amazonaws.gamelift-version.tgz` 文件。

1. 启动 Unity 并选择一个项目。

1. 在顶部导航栏的**窗口**下，选择 **Package Manager**：  
![“窗口”下的 Unity 菜单，已选择 Package Manager。](http://docs.amazonaws.cn/gameliftservers/latest/developerguide/images/unitypi_install_pkgmgr.png)

1. 在 **Package Manager** 选项卡下，选择 **\+**，然后选择**从 tarball 添加软件包...**：  
![突出显示了“Package Manager”选项卡中“+”图标下的“从 tarball 添加软件包”。](http://docs.amazonaws.cn/gameliftservers/latest/developerguide/images/unitypi_install_tarball.png)

1. 在**选择磁盘上的软件包**窗口中，导航到 `com.amazonaws.gamelift` 文件夹，选择文件 `com.amazonaws.gamelift-version.tgz `，然后选择**打开**：  
![在“选择磁盘上的软件包”窗口中选择 tarball 文件。](http://docs.amazonaws.cn/gameliftservers/latest/developerguide/images/unitypi_install_tarballselect.png)

1. Unity 加载插件后，**Amazon GameLift Servers** 将作为新项目出现在 Unity 菜单中。安装和重新编译脚本可能需要几分钟时间。**Amazon GameLift Servers 插件设置**选项卡会自动打开。  
![适用于 Unity 的 Amazon GameLift Servers 插件设置菜单。](http://docs.amazonaws.cn/gameliftservers/latest/developerguide/images/unitypi_install_done_ui.png)

1. 在**软件开发工具包**窗格中，选择**使用 .NET 4.x**。

   配置后，状态将从**未配置**更改为**已配置**。

## 在本地测试游戏
<a name="unity-plug-in-sdk4-test"></a>

使用 Amazon GameLift Servers Local 在本地设备上运行 Amazon GameLift Servers。无需网络连接，即可使用 Amazon GameLift Servers Local 在几秒钟内验证代码更改。

### 配置本地测试
<a name="unity-plug-in-sdk4-test-cfgtesting"></a>

1. 在 Unity 插件窗口中，选择**测试**选项卡。

1. 在**测试**窗格中，选择**下载 Amazon GameLift Servers Local**。适用于 Unity 的插件会打开浏览器窗口，并将 `GameLift_06_03_2021.zip` 文件下载到您的下载文件夹。

   下载内容包括 C\# 服务器软件开发工具包、.NET 源文件和与 Unity 兼容的 .NET 组件。

1. 解压下载的 `GameLift_06_03_2021.zip` 文件。

1. 在 **Amazon GameLift Servers 插件设置**窗口中，选择 **Amazon GameLift Servers Local 路径**，导航到解压缩的文件夹，选择 `GameLiftLocal.jar` 文件，然后选择**打开**。

   配置后，本地测试状态将从**未配置**更改为**已配置**。

1. 验证 JRE 的状态。如果状态为**未配置**，请选择**下载 JRE** 并安装推荐的 Java 版本。

   安装和配置 Java 环境后，状态将更改为**已配置**。

### 运行本地游戏
<a name="unity-plug-in-sdk4-test-cfgrunning"></a>

1. 在“适用于 Unity 的插件”选项卡中，选择**测试**选项卡。

1. 在**测试**窗格中，选择**打开本地测试 UI**。

1. 在**本地测试**窗口中，指定**服务器可执行文件路径**。选择**...**选择服务器应用程序的路径和可执行文件名称。

1. 在**本地测试**窗口中，指定 **GL Local 端口**。

1. 选择**部署并运行**以部署和运行服务器。

1. 要停止游戏服务器，请选择**停止**或关闭游戏服务器窗口。

## 部署场景
<a name="unity-plug-in-sdk4-scenario"></a>

场景使用 Amazon CloudFormation 模板来创建为游戏部署云托管解决方案所需的资源。本节介绍 Amazon GameLift Servers 提供的场景及其使用方法。

**先决条件**  
要部署该场景，您需要为 Amazon GameLift Servers 服务创建一个 IAM 角色。有关如何为 Amazon GameLift Servers 创建角色的信息，请参阅[设置 Amazon 用户账户](setting-up-aws-login.md)。

每种场景都需要访问以下资源的权限：
+ Amazon GameLift Servers
+ Amazon S3
+ Amazon CloudFormation
+ API Gateway
+ Amazon Lambda
+ Amazon WAFV2
+ Amazon Cognito

### 场景
<a name="unity-plug-in-sdk4-scenario-examples"></a>

适用于 Unity 的 Amazon GameLift Servers 插件包括以下场景：

**仅限身份验证**  
此场景创建了一个游戏后端服务，该服务在没有游戏服务器功能的情况下执行玩家身份验证。该模板在您的账户中创建以下资源：
+ Amazon Cognito 用户群体，用于存储玩家身份验证信息。
+ Amazon API Gateway REST 端点支持的 Amazon Lambda 处理程序，用于启动游戏并查看游戏连接信息。

**单区域实例集**  
此场景创建了一个包含单个 Amazon GameLift Servers 实例集的游戏后端服务。其创建了以下资源：
+ Amazon Cognito 用户群体，供玩家进行身份验证和开始游戏。
+ 一个 Amazon Lambda 处理程序，用于搜索舰队上有开放玩家槽位的现有游戏会话。如果该处理程序找不到开放位置，就会创建一个新的游戏会话。

**带有队列和自定义对战构建器的多区域实例集**  
此场景使用 Amazon GameLift Servers 队列和自定义对战构建器将等候池中等待时间最长的玩家分组在一起，从而形成对战。其创建了以下资源：
+ Amazon Simple Notification Service 主题，Amazon GameLift Servers 可向其发布消息。有关 SNS 主题和通知的更多信息，请参阅 [请参阅设置游戏会话置放通知。](queue-notification.md)。
+ 一个 Lambda 函数，由传达位置和游戏连接详情的消息调用。
+ Amazon DynamoDB 表，用于存储位置和游戏连接详情。`GetGameConnection` 调用从此表读取并将连接信息返回到游戏客户端。

**带有队列和自定义对战构建器的竞价型实例集**  
此场景使用 Amazon GameLift Servers 队列和自定义对战构建器形成对战，并配置三个实例集。其创建了以下资源：
+ 两个竞价型实例集包含不同的实例类型，可确保竞价型实例不可用性更持久。
+ 一种按需型实例集，可作为其他竞价型实例集的备份。有关实例集设计的更多信息，请参阅[托管资源自定义](fleets-design.md)。
+ 用于保持服务器高可用性和低成本的Amazon GameLift Servers队列。有关队列的更多信息和最佳实操，请参阅[自定义游戏会话队列](queues-design.md)。

**FlexMatch**  
此场景使用 FlexMatch托管配对服务将玩家配对在一起。有关 FlexMatch 的更多信息，请参阅[什么是 Amazon GameLift ServersFlexMatch](https://docs.amazonaws.cn/gameliftservers/latest/flexmatchguide/match-intro.html)。此场景创建了以下资源：
+ 一个 Lambda 函数，用于在收到 `StartGame` 请求后创建对战票证。
+ 一个单独的 Lambda 函数，用于侦听 FlexMatch 匹配事件。

为避免对您产生不必要的费用 Amazon Web Services 账户，请在使用完每个场景创建的资源后将其删除。删除相应的 Amazon CloudFormation 堆栈。

### 更新 Amazon 凭证
<a name="unity-plug-in-sdk4-configure-creds"></a>

适用于 Unity 的 Amazon GameLift Servers 插件需要安全凭证才能部署场景。您可以创建新凭证或使用现有凭证。

有关配置凭证的更多信息，请参阅[了解和获取您的 Amazon 证书](https://docs.amazonaws.cn/general/latest/gr/aws-sec-cred-types.html)。

**更新 Amazon 凭证**

1. 在 Unity 的“适用于 Unity 的插件”选项卡中，选择**部署**选项卡。

1. 在**部署**窗格中，选择 **Amazon 凭证**。

1. 您可以创建新 Amazon Web Services 凭证或选择现有证书。
   + 要创建凭证，请选择**创建新的凭证配置文件**，然后指定**新配置文件名称**、**Amazon 访问密钥 ID**、**Amazon 密钥**和 **Amazon Web Services 区域**。
   + 要选择现有凭证，请选择**选择现有凭证配置文件**，然后选择配置文件名称和 **Amazon Web Services 区域**。

1. 在 “**更新 Amazon 凭据**” 窗口中，选择 “**更新凭据配置文件**”。

### 更新账户引导程序
<a name="unity-plug-in-sdk4-scenario-boot"></a>

引导位置是部署期间使用的 Amazon S3 存储桶。它用于存储游戏服务器资产和其他依赖项。 Amazon Web Services 区域 您为存储桶选择的区域必须与用于场景部署的区域相同。

有关 Amazon S3 存储桶的更多信息，请参阅[创建、配置和使用 Amazon Simple Storage Service 存储桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/creating-buckets-s3.html)。

**更新账户引导位置**

1. 在 Unity 的“适用于 Unity 的插件”选项卡中，选择**部署**选项卡。

1. 在**部署**窗格中，选择**更新账户引导**。

1. 在**账户引导**窗口中，您可以选择现有 Amazon S3 存储桶或创建一个新的 Amazon S3 存储桶：
   + 要选择现有存储桶，请选择**选择现有 Amazon S3 存储桶**，然后选择**更新**以保存您的选择。
   + 选择**创建新的 Amazon S3 存储桶**以创建新的 Amazon Simple Storage Service 存储桶，然后选择**策略**。该策略指定了 Amazon S3 存储桶的过期时间。选择**创建**以创建存储桶。

### 部署游戏场景
<a name="unity-plug-in-sdk4-scenario-deploy"></a>

您可以使用场景在 Amazon GameLift Servers 上测试您的游戏。每个场景都使用 Amazon CloudFormation 模板创建一个包含所需资源的堆栈。大多数场景都需要游戏服务器可执行文件和构建路径。部署场景时，Amazon GameLift Servers 会将游戏资产复制到引导位置，作为部署的一部分。

您必须配置 Amazon 凭据和 Amazon 账户引导才能部署方案。

**部署场景**

1. 在 Unity 的“适用于 Unity 的插件”选项卡中，选择**部署**选项卡。

1. 在**部署**窗格中，选择**打开部署 UI**。

1. 在**部署**窗口中，选择一个场景。

1. 输入**游戏名称**。此名称必须唯一。部署场景时，游戏名称是 Amazon CloudFormation 堆栈名称的一部分。

1. 选择**游戏服务器构建文件夹路径**。构建文件夹路径指向包含服务器可执行文件和依赖项的文件夹。

1. 选择**游戏服务器构建 .exe 文件路径**。构建可执行文件路径指向游戏服务器可执行文件。

1. 选择**开始部署**以开始部署场景。您可以在**部署**窗口的**当前状态**下关注更新状态。部署场景可能需要数分钟。  
![场景部署状态更新](http://docs.amazonaws.cn/gameliftservers/latest/developerguide/images/unitypi_deploy_statex.png)

1. 场景完成部署后，**当前状态**将更新为包括 **Cognito 客户端 ID** 和 **API Gateway 端点**，您可以将其复制并粘贴到游戏中。  
![场景部署状态更新](http://docs.amazonaws.cn/gameliftservers/latest/developerguide/images/unitypi_deploy_statedone.png)

1. 要更新游戏设置，请在 Unity 菜单上选择**转到客户端连接设置**。这会在 Unity 屏幕的右侧显示 **Inspector** 选项卡。

1. 取消选择**本地测试模式**。

1. 输入 **API Gateway 端点**和 **Coginito 客户端 ID**。选择与场景部署相同的 Amazon Web Services 区域 选项。然后，您可以使用已部署的场景资源重建并运行游戏客户端。

### 删除场景创建的资源
<a name="unity-plug-in-sdk4-scenario-delete"></a>

要删除为该场景创建的资源，请删除相应的 Amazon CloudFormation 堆栈。

**删除由场景创建的资源**

1. 在 Unity **部署Amazon GameLift Servers**插件窗口中，选择**查看 Amazon CloudFormation 控制台**以打开 Amazon CloudFormation 控制台。

1. 在 Amazon CloudFormation 主机中，选择 **Stacks**，然后选择包含部署期间指定的游戏名称的堆栈。

1. 要删除该堆栈，请选择**删除**。删除堆栈可能需要几分钟时间。 Amazon CloudFormation 删除场景使用的堆栈后，其状态将更改为`ROLLBACK_COMPLETE`。

## 在 Unity 中将游戏与 Amazon GameLift Servers 集成
<a name="unity-plug-in-sdk4-integration-intro"></a>

完成以下任务，将您的 Unity 游戏与 Amazon GameLift Servers 集成：
+ [将 Amazon GameLift Servers 与 Unity 游戏服务器项目集成](integration-unity-server-sdk4.md)
+ [将 Amazon GameLift Servers 与 Unity 游戏客户端项目集成](integration-unity-client-sdk4.md)

下图显示了集成游戏的示例流程。在图中，带有游戏服务器的实例集部署到了 Amazon GameLift Servers。游戏客户端与游戏服务器通信，游戏服务器与 Amazon GameLift Servers 通信。

![将 Unity 与 Amazon GameLift Servers 集成的架构图。](http://docs.amazonaws.cn/gameliftservers/latest/developerguide/images/unity_diagram.png)


## 导入并运行示例游戏
<a name="unity-plug-in-sdk4-sample-game"></a>

适用于 Unity 的 Amazon GameLift Servers 插件包含一个示例游戏，可用于探索将游戏与 Amazon GameLift Servers 集成的基础知识。在本节中，您将构建游戏客户端和游戏服务器，然后使用 Amazon GameLift Servers Local 在本地进行测试。

### 先决条件
<a name="unity-plug-in-sdk4-sample-game-prereq"></a>
+ [设置 Amazon 用户账户](setting-up-aws-login.md)
+ [安装并设置插件](#unity-plug-in-sdk4-install)

### 构建并运行示例游戏服务器
<a name="unity-plug-in-sdk4-sample-game-build"></a>

设置示例游戏的游戏服务器文件。

1. 在 Unity 中，在菜单上选择 **Amazon GameLift Servers**，然后选择**导入示例游戏**。

1. 在**导入示例游戏**窗口中，选择**导入**以导入游戏、其资产和依赖项。

1. 构建游戏服务器。在 Unity 中，在菜单上选择 **Amazon GameLift Servers**，然后选择**应用 Windows 示例服务器构建设置**或**应用 MacOS 示例服务器构建设置**。配置游戏服务器设置后，Unity 会重新编译资产。

1. 在 Unity 中，在菜单上选择**文件**，然后选择**构建**。选择**服务器构建**，选择**构建**，然后选择专门存放服务器文件的构建文件夹。

   Unity 构建示例游戏服务器，将可执行文件和所需资产放在指定的构建文件夹中。

### 构建并运行示例游戏客户端
<a name="unity-plug-in-sdk4-sample-game-client"></a>

设置示例游戏的游戏客户端文件。

1. 在 Unity 中，在菜单上选择 **Amazon GameLift Servers**，然后选择**应用 Windows 示例客户端构建设置**或**应用 MacOS 示例客户端构建设置**。配置游戏客户端设置后，Unity 将重新编译资产。

1. 在 Unity 中，在菜单上选择**转到客户端设置**。这将在 Unity 屏幕的右侧显示 **Inspector** 选项卡。在 **Amazon GameLift Servers 客户端设置**选项卡中，选择**本地测试模式**。

1. 构建游戏客户端。在 Unity 中，在菜单上**文件**。确认未选中**服务器构建**，选择**构建**，然后选择专门存放客户端文件的构建文件夹。

   Unity 构建示例游戏客户端，将可执行文件和所需资产放在指定的客户端构建文件夹中。

1. 您尚未构建游戏服务器和客户端。在接下来的步骤中，您将运行游戏并了解其如何与 Amazon GameLift Servers 互动。

### 在本地测试示例游戏
<a name="unity-plug-in-sdk4-sample-game-test"></a>

使用 Amazon GameLift Servers Local 运行导入的示例游戏。

1. 启动游戏服务器。在 Unity 的“适用于 Unity 的插件”选项卡中，选择**部署**选项卡。

1. 在**测试**窗格中，选择**打开本地测试 UI**。

1. 在**本地测试**窗口中，指定**游戏服务器 .exe 文件路径**。路径必须包含可执行文件名称。例如 `C:/MyGame/GameServer/MyGameServer.exe`。

1. 选择**部署并运行**。Unity 插件启动游戏服务器并打开Amazon GameLift Servers本地日志窗口。窗口包含日志消息，包括游戏服务器和 Amazon GameLift Servers Local 之间发送的消息。

1. 启动游戏客户端。使用示例游戏客户端找到构建位置并选择可执行文件。

1. 在 **Amazon GameLift Servers 示例游戏**中，提供电子邮件和密码，然后选择**登录**。电子邮件和密码未经过验证或使用。

1. 在 **Amazon GameLift Servers 示例游戏**中，选择**开始**。游戏客户端会寻找游戏会话。如果找不到会话，便会自行创建。然后，游戏客户端开始游戏会话。可以在日志中看到游戏活动。

#### 示例游戏服务器日志
<a name="unity-plug-in-sdk4-example-logs"></a>

```
...
2021-09-15T19:55:3495 PID:20728 Log :) GAMELIFT AWAKE 
2021-09-15T19:55:3512 PID:20728 Log :) I AM SERVER 
2021-09-15T19:55:3514 PID:20728 Log :) GAMELIFT StartServer at port 33430. 
2021-09-15T19:55:3514 PID:20728 Log :) SDK VERSION: 4.0.2 
2021-09-15T19:55:3556 PID:20728 Log :) SERVER IS IN A GAMELIFT FLEET 
2021-09-15T19:55:3577 PID:20728 Log :) PROCESSREADY SUCCESS. 
2021-09-15T19:55:3577 PID:20728 Log :) GAMELIFT HEALTH CHECK REQUESTED (HEALTHY)
...
2021-09-15T19:55:3634 PID:20728 Log :) GAMELOGIC AWAKE 
2021-09-15T19:55:3635 PID:20728 Log :) GAMELOGIC START 
2021-09-15T19:55:3636 PID:20728 Log :) LISTENING ON PORT 33430 
2021-09-15T19:55:3636 PID:20728 Log SERVER: Frame: 0 HELLO WORLD! 
...
2021-09-15T19:56:2464 PID:20728 Log :) GAMELIFT SESSION REQUESTED
2021-09-15T19:56:2468 PID:20728 Log :) GAME SESSION ACTIVATED
2021-09-15T19:56:3578 PID:20728 Log :) GAMELIFT HEALTH CHECK REQUESTED (HEALTHY)
2021-09-15T19:57:3584 PID:20728 Log :) GAMELIFT HEALTH CHECK REQUESTED (HEALTHY)
2021-09-15T19:58:0334 PID:20728 Log SERVER: Frame: 8695 Connection accepted: playerIdx 0 joined
2021-09-15T19:58:0335 PID:20728 Log SERVER: Frame: 8696 Connection accepted: playerIdx 1 joined 
2021-09-15T19:58:0338 PID:20728 Log SERVER: Frame: 8697 Msg rcvd from playerIdx 0 Msg: CONNECT: server IP localhost 
2021-09-15T19:58:0338 PID:20728 Log SERVER: Frame: 8697 Msg rcvd from player 0:CONNECT: server IP localhost 
2021-09-15T19:58:0339 PID:20728 Log SERVER: Frame: 8697 CONNECT: player index 0 
2021-09-15T19:58:0339 PID:20728 Log SERVER: Frame: 8697 Msg rcvd from playerIdx 1 Msg: CONNECT: server IP localhost 
2021-09-15T19:58:0339 PID:20728 Log SERVER: Frame: 8697 Msg rcvd from player 1:CONNECT: server IP localhost 
2021-09-15T19:58:0339 PID:20728 Log SERVER: Frame: 8697 CONNECT: player index 1
```

#### Amazon GameLift Servers Local 日志示例
<a name="unity-plug-in-sdk4-example-locallogs"></a>

```
12:55:26,000  INFO || - [SocketIOServer] main - Session store / pubsub factory used: MemoryStoreFactory (local session store only)
12:55:28,092  WARN || - [ServerBootstrap] main - Unknown channel option 'SO_LINGER' for channel '[id: 0xe23d0a14]'
12:55:28,101  INFO || - [SocketIOServer] nioEventLoopGroup-2-1 - SocketIO server started at port: 5757
12:55:28,101  INFO || - [SDKConnection] main - GameLift SDK server (communicates with your game server) has started on http://localhost:5757
12:55:28,120  INFO || - [SdkWebSocketServer] WebSocketSelector-20 - WebSocket Server started on address localhost/127.0.0.1:5759
12:55:28,166  INFO || - [StandAloneServer] main - GameLift Client server (listens for GameLift client APIs) has started on http://localhost:8080
12:55:28,179  INFO || - [StandAloneServer] main - GameLift server sdk http listener has started on http://localhost:5758
12:55:35,453  INFO || - [SdkWebSocketServer] WebSocketWorker-12 - onOpen socket: /?pID=20728&sdkVersion=4.0.2&sdkLanguage=CSharp and handshake /?pID=20728&sdkVersion=4.0.2&sdkLanguage=CSharp
12:55:35,551  INFO || - [HostProcessManager] WebSocketWorker-12 - client connected with pID 20728
12:55:35,718  INFO || - [GameLiftSdkHttpHandler] GameLiftSdkHttpHandler-thread-0 - GameLift API to use: ProcessReady for pId 20728
12:55:35,718  INFO || - [ProcessReadyHandler] GameLiftSdkHttpHandler-thread-0 - Received API call for processReady from 20728
12:55:35,738  INFO || - [ProcessReadyHandler] GameLiftSdkHttpHandler-thread-0 - onProcessReady data: port: 33430
 12:55:35,739  INFO || - [HostProcessManager] GameLiftSdkHttpHandler-thread-0 - Registered new process with pId 20728
12:55:35,789  INFO || - [GameLiftSdkHttpHandler] GameLiftSdkHttpHandler-thread-0 - GameLift API to use: ReportHealth for pId 20728
12:55:35,790  INFO || - [ReportHealthHandler] GameLiftSdkHttpHandler-thread-0 - Received API call for ReportHealth from 20728
12:55:35,794  INFO || - [ReportHealthHandler] GameLiftSdkHttpHandler-thread-0 - ReportHealth data: healthStatus: true
 12:56:24,098  INFO || - [GameLiftHttpHandler] Thread-12 - API to use: GameLift.DescribeGameSessions
12:56:24,119  INFO || - [DescribeGameSessionsDispatcher] Thread-12 - Received API call to describe game sessions with input: {"FleetId":"fleet-123"}
12:56:24,241  INFO || - [GameLiftHttpHandler] Thread-12 - API to use: GameLift.CreateGameSession
12:56:24,242  INFO || - [CreateGameSessionDispatcher] Thread-12 - Received API call to create game session with input: {"FleetId":"fleet-123","MaximumPlayerSessionCount":4}
12:56:24,265  INFO || - [HostProcessManager] Thread-12 - Reserved process: 20728 for gameSession: arn:aws:gamelift:local::gamesession/fleet-123/gsess-59f6cc44-4361-42f5-95b5-fdb5825c0f3d
12:56:24,266  INFO || - [WebSocketInvoker] Thread-12 - StartGameSessionRequest: gameSessionId=arn:aws:gamelift:local::gamesession/fleet-123/gsess-59f6cc44-4361-42f5-95b5-fdb5825c0f3d, fleetId=fleet-123, gameSessionName=null, maxPlayers=4, properties=[], ipAddress=127.0.0.1, port=33430, gameSessionData?=false, matchmakerData?=false, dnsName=localhost
12:56:24,564  INFO || - [CreateGameSessionDispatcher] Thread-12 - GameSession with id: arn:aws:gamelift:local::gamesession/fleet-123/gsess-59f6cc44-4361-42f5-95b5-fdb5825c0f3d created
12:56:24,585  INFO || - [GameLiftHttpHandler] Thread-12 - API to use: GameLift.DescribeGameSessions
12:56:24,585  INFO || - [DescribeGameSessionsDispatcher] Thread-12 - Received API call to describe game sessions with input: {"FleetId":"fleet-123"}
12:56:24,660  INFO || - [GameLiftSdkHttpHandler] GameLiftSdkHttpHandler-thread-0 - GameLift API to use: GameSessionActivate for pId 20728
12:56:24,661  INFO || - [GameSessionActivateHandler] GameLiftSdkHttpHandler-thread-0 - Received API call for GameSessionActivate from 20728
12:56:24,678  INFO || - [GameSessionActivateHandler] GameLiftSdkHttpHandler-thread-0 - GameSessionActivate data: gameSessionId: "arn:aws:gamelift:local::gamesession/fleet-123/gsess-59f6cc44-4361-42f5-95b5-fdb5825c0f3d"
```

### 关闭服务器进程
<a name="unity-plug-in-sdk4-shut-down"></a>

完成示例游戏后，在 Unity 中关闭服务器。

1. 在游戏客户端中，选择**退出**或关闭窗口以停止游戏客户端。

1. 在 Unity 中，在**本地测试**窗口中，选择**停止**或关闭游戏服务器窗口以停止服务器。