本文内容
AWS GameLift Gem 使用 GameLift Anywhere 进行本地测试
在本主题中,您将了解如何使用 Amazon GameLift Anywhere 在本地计算机上测试和验证 AWS GameLift Gem 功能集成。
GameLift Anywhere 可用于将环境中的硬件集成到 Amazon GameLift 游戏托管中。Amazon GameLift Anywhere 在 Anywhere 队列中向 Amazon GameLift 注册您的硬件;您可以使用自己的硬件迭代测试和构建 Game Server 项目。
使用 GameLift Anywhere,您可以验证以下内容:
您的游戏服务器已与 Server SDK 正确集成,并且正在与 GameLift 服务正确通信,以启动新的游戏会话、接受新玩家并报告运行状况和状态。
您的游戏客户端已与适用于 GameLift 的 AWS 开发工具包正确集成,并且能够检索有关现有游戏会话的信息、启动新的游戏会话、加入玩家游戏以及连接到游戏会话。
1. 创建位置
为您的自定义资源创建一个位置。自定义位置标记 Amazon GameLift 用于在 Anywhere 队列中运行游戏的硬件的位置。
创建自定义位置时,位置名称必须以“custom-
”开头。
aws gamelift create-location --location-name custom-location-1 --region <Region>
2. 创建 Anywhere 队列
与创建常规 AWS 队列相比,创建 Anywhere 队列的过程要快得多,因为常规 AWS 队列通常需要大约一个小时才能完成设置。
aws gamelift create-fleet --name AnywhereFleet --compute-type ANYWHERE --locations Location=custom-location-1 --region <Region>
记录 ‘FleetId
’ 以用于后续步骤。例:fleet-1a23bc4d-456e-78fg-h9i0-jk1l23456789
3. 将本地计算机注册为 Compute
将您的本地计算机注册为 GameLift Anywhere Compute。
为了便于测试,我们假设 Server 和 Client 将在同一台机器上运行;因此我们可以将 localhost (’127.0.0.1
’) 作为 IP 地址传递。
如果您的计算机可通过公共 IP 地址访问,请根据需要更改该值。
aws gamelift register-compute --compute-name CustomCompute1 --fleet-id <FleetId> --ip-address 127.0.0.1 --location custom-location-1 --region <Region>
此外,检索 compute auth 令牌,因为它对于后续步骤是必需的。
aws gamelift get-compute-auth-token --fleet-id <FleedId> --compute-name CustomCompute1
4. 在计算机上启动 Game Server 可执行文件的实例
当您准备好使用 GameLift 进行测试时,通过将“sv_gameLiftEnabled
”和“sv_gameliftAnywhereEnabled
”CVAR 设置为“true
”来选择加入。默认情况下,这些 CVAR 处于关闭状态,以便于在将 GameLift 服务器开发工具包集成到您的游戏服务器之前进行本地测试。
您还需要通过以下 CVAR 填写服务器参数:
sv_gameliftAnywhereWebSocketUrl
sv_gameliftAnywhereAuthToken
sv_gameliftAnywhereFleetId
sv_gameliftAnywhereHostId
sv_gameliftAnywhereProcessId
除了以下说明外,这些属性的所有值都在前面的步骤中检索:
- 应将“
HostId
”填充为“ComputeName
”。 - 可以省略“
ProcessId
”。将从时间戳中生成唯一的默认 ‘ProcessId
’。
要设置这些值,您可以在启动可执行文件时(通过命令行或在 Visual Studio 解决方案中)传递它们,如下所示:
C:\GameLiftPackageWindows\MultiplayerSample.ServerLauncher.exe --sv_gameLiftEnabled=true --sv_gameliftAnywhereEnabled=true --sv_gameliftAnywhereWebSocketUrl="<WebSocketUrl>" --sv_gameliftAnywhereAuthToken="<AuthToken>" --sv_gameliftAnywhereFleetId="<FleetId>" --sv_gameliftAnywhereHostId="<ComputeName>" --sv_gameliftAnywhereProcessId="<ProcessId>"
或者,您可以通过在 MyProject/Registry
文件夹中创建名为 commands.MyProject_serverlauncher.setreg
,其中包含以下内容:
{
"Amazon":
{
"AzCore":
{
"Runtime":
{
"ConsoleCommands":
{
"sv_gameLiftEnabled": "true",
"sv_gameliftAnywhereEnabled": "true",
"sv_gameliftAnywhereWebSocketUrl": "<WebSocketUrl>",
"sv_gameliftAnywhereAuthToken": "<AuthToken>",
"sv_gameliftAnywhereFleetId": "<FleetId>",
"sv_gameliftAnywhereHostId": "<ComputeName>",
"sv_gameliftAnywhereProcessId": "<ProcessId>"
}
}
}
}
}
这样,无论服务器是如何构建的,都将应用这些值。
5.开始游戏
确保你有游戏的 cmake 生成目标,如 YourProject.GameLauncher,并生成用于本地测试的应用程序。 您应该能够在 build bin folder 下找到 application,然后启动游戏。
6.测试游戏和服务器
测试步骤和说明实际上取决于你自己的项目,但请确保你的测试可以涵盖 CreateSession、JoinSession、LeaveSession 和 DestroySession 用例。
您还可以使用 GameLift Local 工具验证交互和日志。有关更多信息,请参阅《Amazon GameLift 开发人员指南》中的 测试游戏服务器和客户端 。