使用 Amazon GameLift Anywhere 设置本地测试 - Amazon GameLift

使用 Amazon GameLift Anywhere 设置本地测试

注意

本主题介绍与 Amazon GameLift 服务器 SDK 版本 5.x 集成的游戏的本地测试。如果您的游戏使用的是服务器 SDK 版本 4.x 或更早版本,请参阅使用 Amazon GameLift Local 测试您的集成

使用 Amazon GameLift Anywhere 实例集和您自己的硬件在模拟托管环境中迭代构建和测试您的游戏组件。设置 Anywhere 实例集并注册本地设备,以与 Amazon GameLift 服务建立连接。将游戏服务器生成包安装到设备上,启动游戏服务器进程,并根据需要测试游戏功能。您可以按照所需的频率更新游戏服务器生成包,以测试每个新生成包迭代。

借助 Anywhere 实例集,您可以使用 AWS CLI 或测试脚本进行测试。如果您已将游戏客户端与 Amazon GameLift 集成,则可以在同一台本地设备或其他设备上运行该客户端。

使用 Anywhere 实例集在本地进行测试对于测试游戏服务器与 Amazon GameLift 的集成特别有用。您可以全面了解本地计算机上的所有托管活动以及事件和日志记录数据。

注意

您使用的是适用于 Unreal Engine 或 Unity 的 Amazon GameLift 插件吗? 这些工具包含使用 Anywhere 实例集设置本地测试的引导式工作流程。请按照文档 适用于 Unity 的插件:使用 Amazon GameLift Anywhere 设置本地测试适用于 Unreal 的插件:使用 Amazon GameLift Anywhere 设置本地测试 进行操作。

设置本地 Anywhere 实例集

按照以下步骤为您的本地工作站创建 Anywhere 实例集。有关针对 Amazon GameLift 使用 AWS CLI 或 AWS Management Console的详细说明,请参阅创建 Amazon GameLift Anywhere 实例集

创建 Anywhere 实例集
  1. 为本地工作站创建自定义位置。(AWS CLI 或控制台)。自定义位置只是您计划包含在 Anywhere 实例集中的计算资源的一个标签。自定义位置名称必须以 custom- 开头。例如:custom-my_laptop。请参阅创建自定义位置

  2. 创建 Anywhere 实例集(AWS CLI 或控制台)。在此步骤中,请使用本地工作站的自定义位置创建实例集资源。请参阅创建 Anywhere 实例集

    记下新实例集的 ID 或 ARN 值。在下一个步骤中,您需要用到该值。

  3. 将本地工作站注册为实例集计算(仅限 AWS CLI)。Anywhere 实例集必须至少有一个计算资源来托管您的游戏服务器。请参阅向实例集添加计算。要向实例集添加计算,您需要以下信息:

    • 计算名称。实例集中的每个计算都必须有一个唯一名称。

    • Anywhere 实例集标识符。您可以使用 FleetIDFleetArn

    • 计算的连接信息。指定 IpAddressDnsName。这就是 Amazon GameLift 和游戏客户端连接到游戏服务器的方式。

    • Anywhere 实例集中的自定义位置。

    记下 GameLiftServiceSdkEndpoint 返回值。当您更新游戏服务器以在 Anywhere 实例集上运行时,您需要这个值。

更新并安装游戏服务器

此任务假定您已将一个游戏服务器生成包与 Amazon GameLift 服务器 SDK 5.x 集成。集成过程包括向游戏服务器添加代码,使其能够与 Amazon GameLift 服务交互以启动和管理游戏会话。

对于 Anywhere 实例集,您需要手动配置某些游戏服务器设置。在 Amazon GameLift 托管式实例集中,这些设置是自动配置的。

为 Anywhere 实例集准备游戏服务器
  1. 获取身份验证令牌。每次与 Amazon GameLift 服务通信时,您的游戏服务器都必须有一个身份验证令牌。Amazon GameLift 身份验证令牌的有效期很短,必须定期刷新。

    作为最佳实践,请创建脚本来完成以下任务:

    • 调用 AWS CLI 操作 get-compute-auth-token

    • 将返回的令牌值存储在游戏服务器进程可以检索到的地方,例如本地计算上的环境变量中。

    将脚本与游戏服务器一起安装在计算上。将脚本设置为在启动第一个游戏服务器进程之前运行。当游戏服务器进程处于活动状态时,请定期运行脚本以保持身份验证令牌有效。计算上的所有游戏服务器进程都可以使用相同的身份验证令牌。

  2. 更新 Amazon GameLift 游戏服务器代码。当您将游戏服务器代码与 Amazon GameLift 服务器 SDK 集成时,您添加了对操作 InitSdk() 的调用。当游戏服务器在 Anywhere 实例集上运行时,此调用需要额外的服务器参数。有关更多信息,请参阅初始化服务器进程和适用于您开发语言的 Amazon GameLift 服务器 SDK 5.x。服务器参数是:

    • webSocketUrl – 将此参数设置为向实例集注册计算时返回的 GameLiftServiceSdkEndpoint 值。

    • hostId – 将此参数设置为向 Anywhere 实例集注册计算时指定的计算名称。

    • fleetId – 将此参数设置为 Anywhere 实例集的 ID。

    • authToken – 将此参数设置为响应检索计算的身份验证令牌的请求而返回的令牌。

    • processId – 设置此参数以标识在本地计算上运行的游戏服务器进程。每个并发的游戏服务器进程都必须有一个唯一的进程 ID。

    每个游戏服务器进程使用的服务器参数值都必须特定于运行该进程的 Anywhere 实例集计算。有关如何为计算获取适当值的详细信息,请参阅向实例集添加计算。作为最佳实践,请将 webSocketUrlhostIdfleetIdauthToken 设置为本地计算上的环境变量。在该计算上运行的所有服务器进程都将使用这些值。

  3. 在本地计算上安装游戏服务器生成包。加入运行游戏服务器所需的所有依赖项。

  4. 启动在本地计算上运行的一个或多个游戏服务器进程。当游戏服务器进程调用服务器 SDK 操作 ProcessReady() 时,则说明该进程已准备好托管游戏会话。

测试游戏会话活动

通过使用游戏会话来测试游戏服务器集成。如果您的游戏客户端没有与 Amazon GameLift 功能集成,则可以使用 AWS CLI 启动游戏会话。请尝试以下场景:

  • 创建游戏会话。调用 create-game-session 命令(或 CreateGameSession API 操作)。指定 Anywhere 实例集的 ID 和自定义位置。此调用将返回新游戏会话的唯一标识符。

  • 检查游戏会话状态。调用 describe-game-sessions 命令(或 DescribeGameSessions API 操作)。指定游戏会话 ID。此调用将返回详细的游戏会话信息,包括游戏会话状态。处于活动状态的游戏会话已准备就绪,可供玩家连接。要获取实例集所有游戏会话的列表,请调用 list-game-sessions 命令(或 ListGameSessions API 操作)。

  • 连接到游戏会话。如果您的游戏客户端可以加入游戏会话,请使用游戏会话信息中包含的连接信息。

在游戏服务器上进行迭代

您可以使用相同的 Anywhere 实例集和计算来测试其他版本的游戏服务器生成包。

  1. 清理现有的 GameSession如果游戏服务器进程崩溃或无法调用 ProcessEnding(),Amazon GameLift 会在游戏服务器停止发送运行状况检查后清理 GameSession

  2. 生成新的游戏服务器生成包。对游戏服务器进行更改并打包修改后的生成包。

  3. 更新本地计算上的游戏服务器生成包。您之前的 Anywhere 实例集仍处于活动状态,您的笔记本电脑仍注册为实例集中的计算资源。

  4. 获取更新后的授权令牌。调用 get-compute-auth-token CLI 命令并将令牌存储在本地计算上。

  5. 启动在本地计算上运行的一个或多个游戏服务器进程。当游戏服务器进程调用 ProcessReady() 时,它就可以用于测试了。

将您的游戏过渡到 Amazon GameLift 托管式实例集

在完成开发测试并准备好发布后,就可以切换到 Amazon GameLift 托管式实例集了。使用托管式实例集来微调和测试游戏托管资源。实施游戏会话放置解决方案(队列和对战构建器),选择最佳托管硬件(包括竞价型实例集)和位置,然后选择容量扩展策略。您可能还想开始使用 AWS CloudFormation 来更有效地管理所有游戏托管资源的生命周期,包括实例集、队列和对战构建器。

要从本地 Anywhere 测试实例集过渡到 Amazon GameLift 托管式实例集,您需要做一些细微修改。您可以重复使用相同的队列和对战构建器。请执行以下任务:

  • 将游戏服务器代码调用更改为 InitSdk()删除服务器参数。对于托管式实例集,Amazon GameLift 会自动跟踪该信息。

  • 创建 Amazon GameLift 生成包资源。使用 Anywhere 测试实例集时,您必须手动将游戏服务器生成包和依赖项部署到每个实例集计算。使用托管式实例集时,您需要创建游戏生成包并把它上传到 Amazon GameLift,后者会自动将生成包部署到所有实例集计算。请参阅为 Amazon GameLift 托管部署自定义服务器生成包,详细了解如何打包游戏生成包文件以及在 Amazon S3 存储桶中创建包含文件的生成包资源。请勿包含注册计算并获取身份验证令牌的脚本,因为 Amazon GameLift 会通过托管式实例集自动处理这些任务。

  • 创建托管式实例集。使用控制台或 AWS CLI 创建一个实例集,并指定 EC2 托管式实例集。这种类型的实例集需要额外的配置设置,包括指定生成包资源和实例类型。您还需要设置运行时配置来管理每个实例集计算上的游戏服务器生命周期。请参阅创建 Amazon GameLift 托管式 EC2 实例集,详细了解如何创建托管式实例集。

  • 重定向实例集别名(可选)。如果您设置了要用于 Anywhere 实例集的别名,则可以对托管式实例集使用相同的别名。请参阅创建 Amazon GameLift 别名,详细了解如何创建或更新别名。