教程:为 Spot 实例设置游戏会话队列 - 亚马逊 GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:为 Spot 实例设置游戏会话队列

介绍

本教程介绍如何为部署在低成本 Spot 队列上的游戏设置游戏会话位置。Spot 舰队需要采取额外步骤来维持玩家持续的游戏服务器可用性。

目标受众

本教程适用于想要使用竞价队列托管自定义游戏服务器或实时服务器的游戏开发者。

你会学到什么
  • 定义您的游戏会话队列所服务的玩家群组。

  • 构建舰队基础架构以支持游戏会话队列的范围。

  • 为每个队列分配别名以抽象队列 ID。

  • 创建队列、添加舰队并优先考虑亚马逊GameLift放置游戏会话的位置。

  • 添加玩家延迟策略以帮助最大限度地减少延迟问题。

先决条件

在为游戏会话放置创建队列和队列之前,请完成以下任务:

步骤 1:定义队列的范围

在本教程中,我们为具有一个游戏服务器版本变体的游戏设计了一个队列。游戏发布时,我们将在两个地点发布游戏:亚太地区(首尔)和亚太地区(新加坡)。由于这些位置彼此靠近,因此延迟对我们的玩家来说不是问题。

在这个例子中,只有一个玩家分段,这意味着我们创建了一个队列。将来,当我们在北美发布游戏时,我们可以创建第二个仅限北美玩家的队列。

有关更多信息,请参阅定义队列的范围

步骤 2:创建 Spot 舰队基础架构

使用符合你定义范围的游戏服务器版本或脚本在步骤 1:定义队列的范围不同地点创建舰队。

在本教程中,我们创建了一个双站点基础架构,每个地点至少有一个Spot 队列和一个按需队列。每个舰队都部署相同的游戏服务器版本。此外,我们预计首尔地区的玩家流量会更大,因此我们在那里增加了更多的Spot舰队。

下图显示了 Spot 舰队基础设施示例,其中 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-southeast-1 中的队列包含以下队列配置:实例类型为 c5.large 的队列 1234_spot_1 和实例类型为 c5.large 的队列 1234_ondemand。


                Spot 队列基础架构,位于亚太地区(首尔)和亚太地区(新加坡),混合了按需实例和竞价型实例。

步骤 3:为每个舰队分配别名

为基础架构中的每个队列创建一个新别名。别名抽象舰队身份,使定期更换舰队变得高效。有关创建别名的更多信息,请参阅为亚马逊GameLift队列添加别名

我们的舰队基础设施有五个舰队,因此我们使用路由策略创建了五个别名。我们在亚太地区(首尔)位置需要三个别名,在亚太地区(新加坡)位置需要两个别名。

下图显示了步骤二中描述的 Spot 队列基础架构,并在每个队列中添加了别名。舰队 1234_spot_1 的别名 mbg_spot_1,舰队 1234_spot_2 的别名 mbg_spot_2,舰队 1234_ondemand 的别名 mbg_ondemand。


                步骤 2 中描述的示例 Spot 队列基础架构,其别名指向每个队列。

有关更多信息,请参阅建立多位置队列

步骤 4:创建包含目的地的队列

创建游戏会话队列并添加您的舰队目的地。有关创建队列的更多信息,请参阅创建游戏会话队列

创建队列时:

  • 将默认超时设置为 10 分钟。稍后,你可以测试队列超时如何影响玩家进入游戏的等待时间。

  • 暂时跳过关于玩家延迟政策的部分。我们将在下一步中介绍这一点。

  • 优先考虑队列中的舰队。在使用 Spot 队列时,我们建议使用以下任一方法:

    • 如果您的基础架构使用主位置,将车队放在第二个位置进行备份,请先按位置优先排列车队的优先级,然后再按队列类型排序。

    • 如果您的基础架构平均使用多个地点,请按舰队类型对车队进行优先排序,将竞价型车队排在队列的首位。

在本教程中,我们创建了一个名为的新队列MBG_spot_queue,并添加了所有五个队列的别名。然后,我们首先按地点优先放置,然后按舰队类型确定放置的优先级。

基于此配置,该队列总是尝试在首尔的 Spot 舰队中放置新的游戏会话。当这些机队满员时,队列将使用首尔按需机队的可用容量作为备份。如果所有三支首尔舰队都不可用,亚马逊会在新加坡舰队上GameLift放置游戏会话。

下图显示了超时时间为 300 秒的队列和优先目的地的队列。目的地按以下顺序排列:ap-northeast-2 中的 1234_spot_1、ap-northeast-2 中的 1234_spot_2、ap-northeast-2 中的 1234_ondemand、ap-southeast-1 中的 1234_spot_1。


                包含多个 Spot 队列和备用按需队列的 Spot 队列示例。

步骤 5:向队列添加延迟限制

我们的游戏在游戏会话放置请求中包含延迟信息。我们还有一个玩家聚会功能,可以为一组玩家创建游戏会话。我们可以让玩家再等一会儿才能进入具有理想游戏体验的游戏。我们的游戏测试显示了以下观察结果:

  • 低于 50 毫秒的延迟是理想的选择。

  • 游戏在延迟超过 250 毫秒时无法运行。

  • 玩家大约一分钟后就会变得不耐烦。

对于超时 300 秒的队列,我们添加了限制允许延迟的策略声明。策略声明逐渐允许更大的延迟值,最高可达 250 毫秒的延迟。

使用此策略,我们的队列会寻找第一分钟延迟(小于 50 毫秒)的展示位置,然后放宽限制。队列不会在玩家延迟为 250 毫秒或更高的位置进行投放。

下图显示了步骤四中的队列,其中添加了玩家延迟策略。玩家延迟政策规定,对 60 秒强制执行 50 毫秒限制,对 30 秒强制执行 125 毫秒限制,在超时之前强制执行 250 毫秒限制。


                第四步中的示例队列添加了玩家延迟策略。玩家延迟政策规定,对 60 秒强制执行 50 毫秒限制,对 30 秒强制执行 125 毫秒限制,在超时之前强制执行 250 毫秒限制。

摘要

恭喜您!以下是你完成的事情:

  • 您的游戏会话队列范围限定为一部分玩家群体。

  • 您的队列可以有效地使用 Spot 队列,并且在 Spot 中断时具有弹性。

  • 您的队列会优先考虑舰队,以获得顶级玩家体验。

  • 队列有延迟限制,以保护玩家免受不良游戏体验的影响。

现在,您可以使用队列为其服务的玩家设置游戏会话。在为这些玩家发出游戏会话放置请求时,请在请求中引用此游戏会话队列名称。有关提出游戏会话放置请求的更多信息创建游戏会话,请参阅或为实时服务器集成游戏客户端

接下来的步骤: