本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 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 实例集
为您的本地工作站创建自定义位置。(AWS CLI或控制台)。自定义位置只是您计划包含在您的计算资源中的标签 Anywhere 舰队。自定义位置名称必须以开头
custom-
。例如:custom-my_laptop
。请参阅 创建自定义位置。创建一个 Anywhere 舰队(AWS CLI或控制台)。 在此步骤中,使用本地工作站的自定义位置创建队列资源。请参阅 创建 “任何地方” 舰队。
记下新舰队的 ID 或ARN值。在下一个步骤中,您需要用到该值。
将您的本地工作站注册为队列计算(AWS CLI仅限)。网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的 Anywhere fleet 必须至少有一个计算资源来托管您的游戏服务器。请参阅 向队列添加计算。要向队列添加计算,您需要以下信息:
-
计算名称。队列中的每台计算都必须有一个唯一的名称。
-
这些区域有:Anywhere 舰队标识符。您可以使用
FleetID
或FleetArn
。 -
计算机的连接信息。指定
IpAddress
或DnsName
。这就是Amazon GameLift 和游戏客户端连接到游戏服务器的方式。 -
中的自定义位置 Anywhere 舰队。
记下
GameLiftServiceSdkEndpoint
返回值。当你将游戏服务器更新为在游戏服务器上运行时,你需要这个值 Anywhere 舰队。-
更新并安装您的游戏服务器
此任务假设您已经将游戏服务器版本与 Amazon GameLift 服务器 SDK 5.x 集成。集成过程包括向游戏服务器添加代码,使其可以与 Amazon GameLift 服务交互以启动和管理游戏会话。
对于 Anywhere 舰队,你需要手动配置某些游戏服务器设置。在 Amazon GameLift 托管队列中,这些设置是自动配置的。
为游戏服务器做好准备 Anywhere 实例集
获取身份验证令牌。每次与 Amazon GameLift 服务通信时,您的游戏服务器都必须包含身份验证令牌。 GameLift Amazon 身份验证令牌的有效期很短,必须定期刷新。
作为最佳实践,请创建脚本来完成以下任务:
召集 AWS CLI行动
get-compute-auth-token
。将返回的令牌值存储在游戏服务器进程可以检索的地方,例如在本地计算的环境变量中。
将脚本与游戏服务器一起安装到计算机上。将脚本设置为在启动第一个游戏服务器进程之前运行。当游戏服务器进程处于活动状态时,请定期运行脚本以维护有效的身份验证令牌。计算机上的所有游戏服务器进程都可以使用相同的身份验证令牌。
更新您的 Amazon GameLift 游戏服务器代码。当您将游戏服务器代码与 Amazon GameLift 服务器集成时SDK,您添加了操作调用
InitSdk()
。当游戏服务器在 Anywhere fleet,此调用需要额外的服务器参数。有关更多信息,请参阅初始化服务器进程与您的开发语言亚马逊 GameLift 服务器 SDK 5.x对应的。服务器参数是:-
webSocketUrl
— 将此参数设置为向队列注册计算时返回的GameLiftServiceSdkEndpoint
值。 -
hostId
— 将此参数设置为您在向 Anywhere 队列注册计算时指定的计算名称。 -
fleetId
— 将此参数设置为 ID Anywhere 舰队。 -
authToken
— 将此参数设置为响应检索计算身份验证令牌的请求而返回的令牌。 -
processId
— 设置此参数以标识在本地计算机上运行的游戏服务器进程。每个并发的游戏服务器进程都必须有一个唯一的进程 ID。
每个游戏服务器进程使用的服务器参数值必须特定于该进程运行的 Anywhere 队列计算。有关如何为计算获取相应值的详细信息,请参阅向队列添加计算。最佳做法是,将
webSocketUrl
、hostId
fleetId
、和设置authToken
为本地计算中的环境变量。在计算上运行的所有服务器进程都将使用这些值。-
在本地计算机上安装游戏服务器版本。包括运行游戏服务器所需的所有依赖项。
启动在本地计算机上运行的一个或多个游戏服务器进程。当游戏服务器进程调用服务器SDK操作时
ProcessReady()
,该进程已准备好托管游戏会话。
测试游戏会话活动
通过使用游戏会话来测试您的游戏服务器集成。如果您没有集成 Amazon GameLift 功能的游戏客户端,则可以使用 AWS CLI来启动游戏会话。尝试以下场景:
创建游戏会话。调用create-game-session
命令(或 CreateGameSessionAPI操作)。指定你的 Anywhere 舰队的 ID 和自定义位置。此调用返回新游戏会话的唯一标识符。 检查游戏会话状态。调用describe-game-sessions
命令(或动DescribeGameSessionsAPI作)。指定游戏会话 ID。此调用返回详细的游戏会话信息,包括游戏会话状态。处于活动状态的游戏会话已准备就绪,可供玩家连接。要获取舰队所有游戏会话的列表,请调用 list-game-sessions command(或ListGameSessionsAPI动作)。 -
Connect 连接到游戏会话。如果您的游戏客户端能够加入游戏会话,请使用游戏会话信息中包含的连接信息。
在游戏服务器上进行迭代
你可以用同样的 Anywhere 舰队和计算来测试游戏服务器版本的其他版本。
-
清理你现有的
GameSession
。如果游戏服务器进程崩溃或无法调用ProcessEnding()
,Amazon 会在游戏服务器停止发送运行状况检查GameSession
后进行 GameLift 清理。 -
生成新的游戏服务器版本。对游戏服务器进行更改并打包修改后的版本。
-
在本地计算机上更新游戏服务器版本。你之前的 Anywhere 队列仍处于活动状态,并且您的笔记本电脑仍被注册为队列中的计算资源。
-
获取更新的授权令牌。调用get-compute-auth-token
CLI命令并将令牌存储在本地计算机上。 -
启动在本地计算机上运行的一个或多个游戏服务器进程。当游戏服务器进程调用时
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 别名。