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

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

在 Amazon 上设置本地测试 GameLift Anywhere

注意

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

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

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

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

注意

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

设置本地 Anywhere 实例集

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

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

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

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

  3. 将您的本地工作站注册为队列计算(AWS CLI仅限)。网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的 Anywhere fleet 必须至少有一个计算资源来托管您的游戏服务器。请参阅 向队列添加计算。要向队列添加计算,您需要以下信息:

    • 计算名称。队列中的每台计算都必须有一个唯一的名称。

    • 这些区域有:Anywhere 舰队标识符。您可以使用FleetIDFleetArn

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

    • 中的自定义位置 Anywhere 舰队。

    记下GameLiftServiceSdkEndpoint返回值。当你将游戏服务器更新为在游戏服务器上运行时,你需要这个值 Anywhere 舰队。

更新并安装您的游戏服务器

此任务假设您已经将游戏服务器版本与 Amazon GameLift 服务器 SDK 5.x 集成。集成过程包括向游戏服务器添加代码,使其可以与 Amazon GameLift 服务交互以启动和管理游戏会话。

对于 Anywhere 舰队,你需要手动配置某些游戏服务器设置。在 Amazon GameLift 托管队列中,这些设置是自动配置的。

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

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

    • 召集 AWS CLI行动get-compute-auth-token

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

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

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

    • webSocketUrl— 将此参数设置为向队列注册计算时返回的GameLiftServiceSdkEndpoint值。

    • hostId— 将此参数设置为您在向 Anywhere 队列注册计算时指定的计算名称。

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

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

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

    每个游戏服务器进程使用的服务器参数值必须特定于该进程运行的 Anywhere 队列计算。有关如何为计算获取相应值的详细信息,请参阅向队列添加计算。最佳做法是,将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 托管EC2车队

  • 重定向舰队别名(可选)。如果您将别名设置为与您一起使用 Anywhere 舰队,您可以为托管队列重复使用相同的别名。有关创建或更新别名的详细信息,请参阅创建亚马逊 GameLift 别名