教程:使用竞价型实例创建 Amazon GameLift 队列
- 简介
-
本教程介绍如何为部署在低成本竞价型实例集上的游戏设置游戏会话位置。竞价型实例集需要额外的步骤来保持游戏服务器对玩家的持续可用性。
- 目标受众
-
本教程适用于想要使用竞价型实例集托管自定义游戏服务器或实时服务器的游戏开发人员。
- 您将了解
-
-
定义您的游戏会话队列所服务的玩家组。
-
构建实例集基础设施以支持游戏会话队列的范围。
-
为每个实例集分配一个别名以抽象实例集 ID。
-
创建队列,添加实例集,并对 Amazon GameLift 放置游戏会话的位置进行优先排序。
-
添加玩家延迟策略以帮助最大限度地减少延迟问题。
-
- 先决条件
-
在创建实例集和队列以放置游戏会话之前,请完成以下任务:
-
上传游戏服务器构建或实时脚本至 Amazon GameLift。
步骤 1:定义队列范围
在本教程中,我们为具有一个游戏服务器构建变体的游戏设计队列。在启动时,我们将在两个位置发布该游戏:亚太地区(首尔)和亚太地区(新加坡)。由于这些位置彼此靠近,因此延迟对我们的玩家来说不是问题。
在这个例子中,有一个玩家区段,这意味着我们创建一个队列。将来,当我们在北美发布游戏时,我们可以为北美玩家创建第二个队列。
有关更多信息,请参阅定义队列的范围。
步骤 2:创建竞价型实例集基础设施
使用符合您在步骤 1:定义队列范围中定义的范围的位置和游戏服务器构建或脚本创建实例集。
在本教程中,我们创建了一个双位置基础架构,每个位置至少有一个竞价型实例集和一个按需型实例集。每个实例集都部署相同的游戏服务器构建。此外,我们预计首尔地区的玩家流量会更大,因此我们在那里增加了更多的竞价型实例集。
下图显示了竞价型实例集基础设施示例,其中 3 个实例集位于 ap-northeast-2(首尔)位置,2 个实例集位于 ap-southeast-1(新加坡)位置。两个实例集中的所有实例都使用构建 MBG_prod_V1。ap-northeast-2 中的实例集包含以下实例集配置:实例类型为 c5.large 的实例集 1234_spot_1、实例类型为 c5.xlarge 的实例集 1234_spot_2 和实例类型为 c5.large 的 1234_ondemand 实例集。ap-northeast-1 中的实例集包含以下实例集配置:实例类型为 c5.large 的实例集 1234_spot_1 和实例类型为 c5.large 的 1234_ondemand 实例集。
步骤 3:为每个实例集分配别名
为基础架构中的每个实例集创建一个新别名。别名抽象实例集身份,使定期更换实例集变得高效。有关创建别名的更多信息,请参阅创建 Amazon GameLift 别名。
我们的实例集基础设施有五个实例集,因此我们使用路由策略创建了五个别名。我们在亚太地区(首尔)区域中需要用到三个别名,在亚太地区(新加坡)区域中需要用到两个别名。
下图显示了第二步中描述的竞价型实例集基础设施,并在每个实例集中添加了别名。实例集 1234_spot_1 的别名是 MBG_spot_1,实例集 1234_spot_2 的别名是 MBG_spot_2,实例集 1234_ondemand 的别名是 MBG_ondemand。
有关更多信息,请参阅建立多位置队列。
第 4 步:创建包含目的地的队列
创建游戏会话队列并添加您的实例集目的地。有关创建队列的更多信息,请参阅创建游戏会话队列。
创建队列时:
-
默认超时值为 10 分钟。稍后,您可以测试队列超时如何影响玩家进入游戏的等待时间。
-
暂时跳过有关玩家延迟策略的部分。在下一步骤中,我们将介绍这一点。
-
对队列中的实例集进行优先排序。在使用竞价型实例集时,我们建议采用以下任一方法:
-
如果您的基础设施使用主位置且实例集位于第二个位置进行备份,请先按位置排列实例集的优先级,然后再按实例集类型进行优先排序。
-
如果您的基础设施同时使用多个位置,请按实例集类型确定实例集的优先级,将竞价型实例集放在队列的首位。
-
在本教程中,我们使用名称 MBG_spot_queue
创建一个新队列,并添加所有五个实例集的别名。然后,我们首先按位置排列放置的优先顺序,然后按实例集类型确定放置的优先顺序。
基于此配置,该队列始终尝试将新的游戏会话放入首尔的竞价型实例集中。当这些实例集已满时,队列会使用首尔按需型实例集的可用容量作为备用。如果所有三支首尔实例集都不可用,Amazon GameLift 会将游戏会话安排在新加坡实例集上。
下图显示了超时时间为 300 秒的队列和按优先顺序排列的目的地。目的地按以下顺序排列:ap-northeast-2 中的 1234_spot_1、ap-northeast-2 中的 1234_spot_2、ap-northeast-2 中的 1234_ondemand、ap-southeast-1 中的 1234_ondemand 和 ap-southeast-1 中的 1234_ondemand。
步骤 5:向队列添加延迟限制
我们的游戏在游戏会话放置请求中包含延迟信息。我们还有一个玩家聚会功能,可以为一群玩家创建游戏会话。我们可以让玩家再等一会儿才能进入具有理想游戏体验的游戏。我们的游戏测试显示了以下观察结果:
-
延迟低于 50 毫秒是理想的。
-
延迟超过 250 毫秒时无法玩游戏。
-
玩家在约 1 分钟内就会变得不耐烦。
对于我们的队列,超时时间为 300 秒,我们添加了限制允许延迟的策略声明。策略声明逐渐允许更大的延迟值,延迟时间最长可达 250 毫秒。
根据此政策,我们的队列会寻找第一分钟延迟为理想的展示位置(低于 50 毫秒),然后放宽限制。队列不会在玩家延迟等于 250 毫秒或更高的位置进行放置。
下图显示了步骤四中的队列,其中添加了玩家延迟策略。玩家延迟策略规定,对 60 秒强制执行 50 毫秒的限制,对 30 秒强制执行 125 毫秒的限制,并在超时之前强制执行 250 毫秒的限制。
总结
恭喜您!以下是您完成的事项:
-
您的游戏会话队列限定为一部分玩家群体。
-
您的队列可以有效地使用竞价型实例集,并且在竞价型实例中断发生时具有弹性。
-
您的队列会优先考虑实例集以获得出色玩家体验。
-
队列有延迟限制,可以保护玩家免受糟糕的游戏体验的影响。
现在,您可以使用队列为其服务的玩家放置游戏会话。向这些玩家提出游戏会话放置请求时,请在请求中引用此游戏会话队列名称。有关提出游戏会话放置请求的更多信息,请参阅创建游戏会话或为实时服务器集成游戏客户端。
后续步骤: