本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon GameLift Servers Anywhere 设置本地测试
注意
本主题介绍与 5.x Amazon GameLift Servers 版服务器 SDK 集成的游戏的本地测试。如果您的游戏使用的是服务器 SDK 版本 4.x 或更早版本,请参阅使用Amazon GameLift Servers本地测试您的集成。
使用 Amazon GameLift Servers Anywhere 队列和您自己的硬件,在模拟托管环境中迭代构建和测试游戏组件。设置 Anywhere 队列并注册本地设备以建立与Amazon GameLift Servers服务的连接。将游戏服务器生成包安装到设备上,启动游戏服务器进程,并根据需要测试游戏功能。您可以按照所需的频率更新游戏服务器生成包,以测试每个新生成包迭代。
使用 Anywhere 队列,您可以使用 AWS CLI 或测试脚本进行测试。如果您已将游戏客户端与集成Amazon GameLift Servers,则可以在同一台本地设备或另一台设备上运行该客户端。
使用 Anywhere 队列进行本地测试对于测试游戏服务器与的集成特别有用Amazon GameLift Servers。您可以全面了解本地计算机上的所有托管活动以及事件和日志记录数据。
注意
你使用的是虚幻引擎还是Unity的Amazon GameLift Servers插件? 这些工具包括用于使用 Anywhere 队列设置本地测试的指导性工作流程。请按照文档 适用于 Unity 的插件:使用 Amazon GameLift Servers Anywhere 设置本地测试 或 虚幻引擎插件:使用 Amazon GameLift Servers Anywhere 在本地托管游戏 进行操作。
设置本地 Anywhere 舰队
按照以下步骤为您的本地工作站创建 Anywhere 队列。有关使用 AWS CLI 或 for 的详细说明Amazon GameLift Servers, AWS Management Console 请参阅创建一个 Amazon GameLift Servers 任何地方的舰队。
创建 Anywhere 舰队
为本地工作站创建自定义位置。(AWS CLI 或控制台)。自定义位置只是您计划包含在 Anywhere 队列中的计算资源的标签。自定义位置名称必须以
custom-
开头。例如:custom-my_laptop
。请参阅创建自定义位置。创建 Anywhere 队列(AWS CLI 或控制台)。在此步骤中,请使用本地工作站的自定义位置创建实例集资源。请参阅创建 Anywhere 实例集。
记下新实例集的 ID 或 ARN 值。在下一个步骤中,您需要用到该值。
将您的本地工作站注册为队列计算(仅限AWS CLI)。Anywhere 队列必须至少有一个计算资源才能托管您的游戏服务器。请参阅向实例集添加计算。要向实例集添加计算,您需要以下信息:
-
计算名称。实例集中的每个计算都必须有一个唯一名称。
-
Anywhere 舰队标识符 您可以使用
FleetID
或FleetArn
。 -
计算的连接信息。指定
IpAddress
或DnsName
。游戏客户端将通过这种方式Amazon GameLift Servers连接到游戏服务器。 -
Anywhere 舰队中的自定义位置。
记下
GameLiftServiceSdkEndpoint
返回值。当你更新游戏服务器以在 Anywhere 队列上运行时,你需要这个值。-
更新并安装游戏服务器
此任务假设您已经将游戏服务器版本与Amazon GameLift Servers服务器 SDK 5.x 集成。集成过程包括向游戏服务器添加代码,使其可以与Amazon GameLift Servers服务交互以启动和管理游戏会话。
对于 Anywhere 舰队,您需要手动配置某些游戏服务器设置。在Amazon GameLift Servers托管队列上,这些设置是自动配置的。
让你的游戏服务器为 Anywhere 舰队做好准备
获取身份验证令牌。您的游戏服务器在每次与Amazon GameLift Servers服务通信时都必须包含身份验证令牌。 Amazon GameLift Servers身份验证令牌的有效期很短,必须定期刷新。
作为最佳实践,请创建脚本来完成以下任务:
调用 C AWS LI 操作
get-compute-auth-token
。将返回的令牌值存储在游戏服务器进程可以检索到的地方,例如本地计算上的环境变量中。
将脚本与游戏服务器一起安装在计算上。将脚本设置为在启动第一个游戏服务器进程之前运行。当游戏服务器进程处于活动状态时,请定期运行脚本以保持身份验证令牌有效。计算上的所有游戏服务器进程都可以使用相同的身份验证令牌。
更新您的Amazon GameLift Servers游戏服务器代码。当您将游戏服务器代码与的服务器 SDK 集成时Amazon GameLift Servers,您添加了对操作的调用
InitSdk()
。当游戏服务器在 Anywhere 队列上运行时,此调用需要额外的服务器参数。有关更多信息,请参阅初始化服务器进程和适用于您开发语言的 服务器 SDK 5.x 适用于 Amazon GameLift Servers。服务器参数是:-
webSocketUrl
– 将此参数设置为向实例集注册计算时返回的GameLiftServiceSdkEndpoint
值。 -
hostId
– 将此参数设置为向 Anywhere 实例集注册计算时指定的计算名称。 -
fleetId
— 将此参数设置为 Anywhere 舰队的 ID。 -
authToken
– 将此参数设置为响应检索计算的身份验证令牌的请求而返回的令牌。 -
processId
– 设置此参数以标识在本地计算上运行的游戏服务器进程。每个并发的游戏服务器进程都必须有一个唯一的进程 ID。
每个游戏服务器进程使用的服务器参数值都必须特定于运行该进程的 Anywhere 实例集计算。有关如何为计算获取适当值的详细信息,请参阅向实例集添加计算。作为最佳实践,请将
webSocketUrl
、hostId
、fleetId
和authToken
设置为本地计算上的环境变量。在该计算上运行的所有服务器进程都将使用这些值。-
在本地计算上安装游戏服务器生成包。加入运行游戏服务器所需的所有依赖项。
启动在本地计算上运行的一个或多个游戏服务器进程。当游戏服务器进程调用服务器 SDK 操作
ProcessReady()
时,则说明该进程已准备好托管游戏会话。
测试游戏会话活动
通过使用游戏会话来测试游戏服务器集成。如果您没有集成Amazon GameLift Servers功能的游戏客户端,则可以使用 AWS CLI 启动游戏会话。请尝试以下场景:
创建游戏会话。调用create-game-session
命令(或 CreateGameSessionAPI 操作)。指定 Anywhere 舰队的 ID 和自定义位置。此调用将返回新游戏会话的唯一标识符。 检查游戏会话状态。调用describe-game-sessions
命令(或 DescribeGameSessionsAPI 操作)。指定游戏会话 ID。此调用将返回详细的游戏会话信息,包括游戏会话状态。处于活动状态的游戏会话已准备就绪,可供玩家连接。要获取舰队所有游戏会话的列表,请调用 list-game-sessions command(或 ListGameSessionsAPI 操作)。 -
连接到游戏会话。如果您的游戏客户端可以加入游戏会话,请使用游戏会话信息中包含的连接信息。
在游戏服务器上进行迭代
您可以使用相同的 Anywhere 实例集和计算来测试其他版本的游戏服务器生成包。
-
清理现有的
GameSession
。如果游戏服务器进程崩溃或无法调用ProcessEnding()
,则会在游戏服务器停止发送健康检查GameSession
后进行Amazon GameLift Servers清理。 -
生成新的游戏服务器生成包。对游戏服务器进行更改并打包修改后的生成包。
-
更新本地计算上的游戏服务器生成包。您之前的 Anywhere 队列仍处于活动状态,并且您的笔记本电脑仍被注册为队列中的计算资源。
-
获取更新后的授权令牌。调用 get-compute-auth-token
CLI 命令并将令牌存储在本地计算机上。 -
启动在本地计算上运行的一个或多个游戏服务器进程。当游戏服务器进程调用
ProcessReady()
时,它就可以用于测试了。
将您的游戏过渡到Amazon GameLift Servers托管舰队
在你完成开发测试并准备好发布之后,现在是切换到Amazon GameLift Servers托管舰队的好时机。使用托管式实例集来微调和测试游戏托管资源。实施游戏会话放置解决方案(队列和对战构建器),选择最佳托管硬件(包括竞价型实例集)和位置,然后选择容量扩展策略。您可能还想开始使用 AWS CloudFormation 来更有效地管理所有游戏托管资源的生命周期,包括舰队、队列和媒人。
要从本地 Anywhere 测试队列过渡到Amazon GameLift Servers托管队列,您需要进行一些细微的修改。您可以重复使用相同的队列和对战构建器。请执行以下任务:
-
将游戏服务器代码调用更改为
InitSdk()
。删除服务器参数。对于托管车队,Amazon GameLift Servers会自动跟踪此信息。 -
创建Amazon GameLift Servers构建资源。使用 Anywhere 测试队列,您必须手动将游戏服务器版本和依赖项部署到每个队列计算中。使用托管队列,您可以创建游戏构建包并将其上传到Amazon GameLift Servers,后者会自动将其部署到所有舰队计算中。请参阅为部署自定义服务器版本 Amazon GameLift Servers 托管,详细了解如何打包游戏生成包文件以及在 Amazon S3 存储桶中创建包含文件的生成包资源。不要包含注册计算并获取身份验证令牌的脚本,因为托管队列Amazon GameLift Servers会自动处理这些任务。
-
创建托管式实例集。使用控制台或 AWS CLI 创建队列,指定 EC2 托管队列。这种类型的实例集需要额外的配置设置,包括指定生成包资源和实例类型。您还需要设置运行时配置来管理每个实例集计算上的游戏服务器生命周期。请参阅创建Amazon GameLift Servers托管 EC2 舰队,详细了解如何创建托管式实例集。
-
重定向实例集别名(可选)。如果您设置了用于 Anywhere 队列的别名,则可以为托管队列重复使用相同的别名。请参阅创建一个 Amazon GameLift Servers 别名,详细了解如何创建或更新别名。