在 Amazon 上设置本地测试 GameLift Anywhere - Amazon GameLift

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

在 Amazon 上设置本地测试 GameLift Anywhere

注意

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

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

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

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

注意

你使用的是适用于虚幻引擎还是Unity的亚马逊 GameLift 插件? 这些工具包括使用Anywhere队列设置本地测试的指导性工作流程。请按照Unity 插件:使用亚马逊设置本地测试 GameLift Anywhere或的文档进行操作虚幻引擎插件:使用 Amazon 设置本地测试 GameLift Anywhere

组建本地Anywhere舰队

按照以下步骤为您的本地工作站创建Anywhere队列。有关使用 AWS CLI 或适用 AWS Management Console 于 Amazon 的详细说明 GameLift,请参阅创建亚马逊 GameLift Anywhere舰队

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

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

    记下新舰队的 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 服务通信时,您的游戏服务器都必须包含身份验证令牌。 GameLift Amazon 身份验证令牌的有效期很短,必须定期刷新。

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

    • 调用 C AWS LI 操作get-compute-auth-token

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

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

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

    • webSocketUrl— 将此参数设置为响应您的register-compute呼叫时返回的GameLiftServiceSdkEndpoint值。

    • HostID — 将此参数设置为您在呼叫中指定的计算名称。register-compute

    • fleetId— 将此参数设置为Anywhere舰队的 ID。

    • authToken— 将此参数设置为响应get-compute-auth-token调用时返回的标记。

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

    最佳做法是,将webSocketUrlhostIdfleetId、和设置authToken为本地计算中的环境变量。在计算上运行的所有服务器进程都使用这些值。

  3. 在本地计算机上安装游戏服务器版本。包括运行游戏服务器所需的所有依赖项。

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

测试游戏会话活动

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

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

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

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

在游戏服务器上进行迭代

您可以使用相同的Anywhere队列和计算来测试游戏服务器版本的其他版本。

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

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

  3. 在本地计算机上更新游戏服务器版本。您之前的Anywhere队列仍处于活动状态,并且您的笔记本电脑仍被注册为队列中的计算资源。

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

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

将您的游戏过渡到 Amazon GameLift 托管队列

在您完成开发测试并准备好发布之后,现在是切换到 Amazon GameLift 托管队列的好时机。使用托管队列来微调和测试您的游戏托管资源。实施您的游戏会话放置解决方案(队列和匹配器),选择最佳的托管硬件(包括 Spot 队列)和位置,然后选择扩展容量的策略。您可能还想开始使用 AWS CloudFormation 来更有效地管理所有游戏托管资源的生命周期,包括舰队、队列和媒人。

要从本地Anywhere测试队列过渡到 Amazon GameLift 托管队列,您需要进行一些细微的修改。你可以重复使用相同的队列和媒人。执行以下任务:

  • 将游戏服务器代码调用更改为InitSdk()移除服务器参数。对于托管车队,Amazon GameLift 会自动跟踪这些信息。

  • 创建 Amazon GameLift 构建资源。使用Anywhere测试队列时,您必须手动将游戏服务器版本和依赖项部署到每个队列计算中。使用托管队列,您可以创建游戏构建包并将其上传到 Amazon GameLift,亚马逊会自动将其部署到所有队列计算中。有关打包游戏编译文件和使用 Amazon S3 存储桶中的文件创建构建资源的详细信息,请参阅将自定义服务器构建上传到 Amazon GameLift。请勿包含注册计算并获取身份验证令牌的脚本,因为 Amazon GameLift 会自动使用托管队列处理这些任务。

  • 创建托管舰队。使用控制台或 AWS CLI 创建队列,指定 EC2 托管队列。这种类型的队列需要额外的配置设置,包括指定构建资源和实例类型。你们都需要设置运行时配置,以便在每个舰队计算上管理游戏服务器的生命周期。有关创建托管队列的详细信息,请参阅创建 Amazon GameLift 托管实例集

  • 重定向舰队别名(可选)。如果您设置了用于队列的别名,则可以为托管Anywhere队伍重复使用相同的别名。有关创建或更新别名的详细信息,请参阅向 Amazon GameLift 舰队添加别名