Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
测试您的自定义服务器集成
使用 Amazon GameLift 将环境中任何位置的硬件集成到 GameLift 游戏托管中。 GameLift Anywhere在Anywhere队列 GameLift 中注册您的硬件。您可以在匹配Anywhere器和游戏会话队列中集成 Amazon Elastic Compute Cloud (Amazon EC2) 舰队,从中管理游戏服务器之间的配对和游戏布局 GameLift。您可以使用自己的硬件迭代测试和构建游戏服务器项目。
要使用,请 GameLift Anywhere下载和集成 S GameLift erver SDK 版本 5 或更高版本。
初步开发
你已经开发了游戏并准备好与之集成 GameLift。创建 Amazon EC2 队列和迭代游戏服务器代码的速度很慢,这是因为每次迭代都会上传构建版本和创建新的队列。在开发笔记本电脑上使用Anywhere舰队可以 GameLift 更快地迭代游戏服务器代码。
使用以下步骤创建Anywhere舰队并使用 GameLift 控制台或Amazon Command Line Interface (Amazon CLI) 在笔记本电脑上启动游戏会话。
- Console
-
-
打开 GameLift 控制台。
-
在导航窗格的 “托管” 下,选择 “位置”。
-
选择创建地点。
-
在创建位置) 对话框中,执行以下操作:
-
输入地点名称。这会标记 GameLift 用于在Anywhere舰队中运行游戏的计算资源的位置。自定义位置名称必须以 c ustom- 开头。
-
选择 Create(创建)。
-
要创建Anywhere队列后,执行以下操作:
-
在导航窗格的 “托管” 下,选择 Fleets。
-
在Fleets (机群)页面上,选择Create fleet (创建机群)。
-
在 “选择计算类型” 步骤中,选择 “任意位置”,然后选择 “下一步”。
-
在定义舰队详细信息步骤中,定义您的新舰队。有关更多信息,请参阅创建新 GameLift 舰队:
-
在选择位置步骤中,选择您创建的自定义位置。
-
完成剩余的舰队创建步骤以创建您的Anywhere舰队。
-
将您的笔记本电脑注册为您创建的舰队中的计算资源。使用register-compute
命令(或 RegisterCompute
API 操作)。包括上一步中fleet-id
创建的,然后添加compute-name
和您的笔记本电脑ip-address
。
aws gamelift register-compute \
--compute-name DevLaptop
\
--fleet-id fleet-1234 \
--ip-address 10.1.2.3
\
--location custom-location-1
输出示例:
Compute {
FleetId = fleet-1234,
ComputeName = DevLaptop,
Status = ACTIVE,
IpAddress = 10.1.2.3,
GameLiftServiceSdkEndpoint = wss://12345678.execute-api.amazonaws.com/
Location = custom-location
}
-
启动游戏服务器的调试会话。
-
在您创建的舰队中获取笔记本电脑的授权令牌。使用get-compute-auth-token
命令(或 GetComputeAuthToken
API 操作)。
aws gamelift get-compute-auth-token \
--fleet-id fleet-1234
\
--compute-name DevLaptop
输出示例:
ComputeAuthToken {
FleetId = fleet-1234,
ComputeName = DevLaptop,
AuthToken = abcdefg123,
ExpirationTime = 1897492857.11
}
-
运行游戏服务器可执行文件的调试实例。要运行调试实例,您的游戏服务器必须调用InitSDK()
。在进程准备好托管游戏会话后,游戏服务器将调用ProcessReady()
。
-
创建游戏会话来测试您的首次集成 GameLift Anywhere。使用create-game-session
命令(或 CreateGameSession
API 操作)。
aws gamelift create-game-session \
--fleet-id fleet-1234
\
--name DebugSession
\
--maximum-player-session-count 2
输出示例:
GameSession {
FleetId = fleet-1234,
GameSessionId = 1111-1111,
Name = DebugSession,
IpAddress = 10.1.2.3,
Port = 1024,
...
}
GameLift 向您的注册服务器进程发送onCreateGameSession()
消息。该消息包含上一步GameSession
中的对象,其中包含游戏属性、游戏会话数据、匹配器数据以及有关游戏会话的更多信息。
-
向您的游戏服务器添加逻辑,以便您的服务器进程对onCreateGameSession()
消息做出响应ActivateGameSession()
。该操作会向您的服务器发送确认消息 GameLift ,表示已收到并接受创建游戏会话消息。有关更多信息,请参阅亚马逊 GameLift 服务器 SDK 参考。
您的游戏服务器现在正在运行一个游戏会话供您测试并用于迭代。要继续到下一部分。
- Amazon CLI
-
-
使用create-location
命令(或 CreateLocation
API 操作)创建自定义位置。自定义位置标注了 GameLift 用于在Anywhere舰队中运行游戏的硬件的位置。
aws gamelift create-location \
--location-name custom-location-1
输出示例:
{
Location {
LocationName = custom-location-1
}
}
-
使用create-fleet
命令(或 CreateFleet
API 操作)使用您的自定义位置创建Anywhere舰队。 GameLift在您的家乡区域和您提供的自定义位置创建舰队。
aws gamelift create-fleet \
--name LaptopFleet
\
--compute-type ANYWHERE \
--locations "location=custom-location-1
"
输出示例:
Fleet {
Name = LaptopFleet,
ComputeType = ANYWHERE,
FleetId = fleet-1234,
Status = ACTIVE
...
}
-
将您的笔记本电脑注册为您创建的舰队中的计算资源。使用register-compute
命令(或 RegisterCompute
API 操作)。包括在上一步中fleet-id
创建的,然后添加compute-name
和您的笔记本电脑的公共ip-address
。
aws gamelift register-compute \
--compute-name DevLaptop
\
--fleet-id fleet-1234 \
--ip-address 10.1.2.3
\
--location custom-location-1
输出示例:
Compute {
FleetId = fleet-1234,
ComputeName = DevLaptop,
Status = ACTIVE,
IpAddress = 10.1.2.3,
GameLiftServiceSdkEndpoint = wss://12345678.execute-api.amazonaws.com/
Location = custom-location-1
}
-
启动游戏服务器的调试会话。
-
在您创建的舰队中获取笔记本电脑的授权令牌。使用get-compute-auth-token
命令(或 GetComputeAuthToken
API 操作)。
aws gamelift get-compute-auth-token \
--fleet-id fleet-1234
\
--compute-name DevLaptop
输出示例:
ComputeAuthToken {
FleetId = fleet-1234,
ComputeName = DevLaptop,
AuthToken = abcdefg123,
ExpirationTime = 1897492857.11
}
-
运行游戏服务器可执行文件的调试实例。要运行调试实例,您的游戏服务器必须调用InitSDK()
。在进程准备好托管游戏会话后,游戏服务器将调用ProcessReady()
。
-
创建游戏会话来测试您的首次集成 GameLift Anywhere。使用create-game-session
命令(或 CreateGameSession
API 操作)。
aws gamelift create-game-session \
--fleet-id fleet-1234
\
--name DebugSession
\
--maximum-player-session-count 2
输出示例:
GameSession {
FleetId = fleet-1234,
GameSessionId = 1111-1111,
Name = DebugSession,
IpAddress = 10.1.2.3,
Port = 1024,
...
}
GameLift 向您的注册服务器进程发送onCreateGameSession()
消息。该消息包含上一步GameSession
中的对象,其中包含游戏属性、游戏会话数据、匹配器数据以及有关游戏会话的更多信息。
-
向您的游戏服务器添加逻辑,以便您的服务器进程对onCreateGameSession()
消息做出响应ActivateGameSession()
。该操作会向您的服务器发送确认消息 GameLift ,表示已收到并接受创建游戏会话消息。有关更多信息,请参阅亚马逊 GameLift 服务器 SDK 参考。
您的游戏服务器现在正在运行一个游戏会话供您测试并用于迭代。要继续到下一部分。
在游戏服务器上迭代
在这个用例中,考虑一个场景,即你设置并测试了游戏服务器并发现了一个错误。借 GameLift Anywhere助,您可以迭代您的代码,避免使用 Amazon EC2 队列的繁重设置。
-
如果可能GameSession
,清理现有的。如果游戏服务器崩溃或无法调用ProcessEnding()
,则在游戏服务器停止发送健康检查GameSession
后进行 GameLift 清理。
-
更改游戏服务器的代码,编译并为下一次测试做准备。
-
您之前的Anywhere舰队仍处于活动状态,并且您的笔记本电脑仍被注册为舰队中的计算资源。要重新开始测试,请创建一个新的调试实例。
-
在您创建的舰队中检索笔记本电脑的授权令牌。使用get-compute-auth-token
命令(或 GetComputeAuthToken
API 操作)。
aws gamelift get-compute-auth-token \
--fleet-id fleet-1234
\
--compute-name DevLaptop
输出示例:
ComputeAuthToken {
FleetId = fleet-1234,
ComputeName = DevLaptop,
AuthToken = hijklmnop456,
ExpirationTime = 1897492857.11
}
-
运行游戏服务器可执行文件的调试实例。要运行调试实例,您的游戏服务器必须调用InitSDK()
。在进程准备好托管游戏会话后,游戏服务器将调用ProcessReady()
。
-
您的舰队现在有可用的服务器进程。创建游戏会话并执行下一个测试。使用create-game-session
命令(或 CreateGameSession
API 操作)。
aws gamelift create-game-session \
--fleet-id fleet-1234
\
--name SecondDebugSession
\
--maximum-player-session-count 2
GameLift 向您的注册服务器进程发送onCreateGameSession()
消息。该消息包含上一步GameSession
中的对象,其中包含游戏属性、游戏会话数据、匹配器数据以及有关游戏会话的更多信息。
-
向您的游戏服务器添加逻辑,以便您的服务器进程对onCreateGameSession()
消息做出响应ActivateGameSession()
。该操作会向您的服务器发送确认消息 GameLift ,表示已收到并接受创建游戏会话消息。有关更多信息,请参阅亚马逊 GameLift 服务器 SDK 参考。
测试完游戏服务器后,您可以继续 GameLift 用于舰队和游戏服务器管理。有关更多信息,请参阅 。