设计游戏会话队列 - Amazon GameLift

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

设计游戏会话队列

本主题介绍如何设计一个队列,该队列既能以最小的延迟提供玩家体验,又能有效地使用托管资源。有关游戏会话队列及其工作原理的更多信息,请参阅《Amazon GameLift 开发人员指南》中的设置游戏会话置放的 GameLift 队列

这些 Amazon GameLift 功能需要队列:

定义队列的范围

您的游戏的玩家群体中可能有一群不应该一起玩的玩家。例如,如果您以两种语言发布游戏,则每种语言都应有自己的游戏服务器。

要为您的玩家群体设置游戏会话位置,请为每个玩家区段创建一个单独的队列。确定每个队列的范围,将玩家放到正确的游戏服务器中。确定队列范围的一些常见方法包括:

  • 按地理位置划分。在多个地理区域部署游戏服务器时,您可以为每个位置的玩家建立队列以减少玩家延迟。

  • 按版本或脚本变体排列。如果您的游戏服务器有多个变体,则可能支持无法在同一游戏会话中玩游戏的玩家组。例如,游戏服务器版本或脚本可能支持不同的语言或设备类型。

  • 按事件类型划分。您可以创建一个特殊队列来管理锦标赛或其他特殊活动的参与者的游戏。

创建玩家延迟政策

如果您的展示位置请求包含玩家延迟数据,则该算法会查找所有玩家平均延迟时间最低的位置的游戏会话。根据玩家的平均延迟放置游戏会话可防止 Amazon GameLift 将大多数玩家置于延迟较高的游戏中。但是,Amazon GameLift仍然会给玩家带来极大的延迟。为了容纳这些玩家,请制定玩家延迟策略。

玩家延迟策略可防止 Amazon GameLift 将请求的游戏会话放置在请求中的玩家将延迟超过最大值的任何地方。玩家延迟策略还可以阻止 Amazon GameLift 将游戏会话请求与延迟较高的玩家进行匹配。

提示

要管理特定于延迟的规则,例如要求小组中所有玩家的延迟时间相似,您可以使用 Amazon GameLift FlexMatch 来创建基于延迟的对战规则。

例如,假设这个队列的超时时间为 5 分钟,并且有以下玩家延迟策略:

  1. 花费 120 秒钟搜索所有玩家延迟均低于 50 毫秒的目标,然后...

  2. 花费 120 秒钟搜索所有玩家延迟均低于 100 毫秒的目标,然后...

  3. 花费剩余的队列超时时间搜索所有玩家延迟均低于 200 毫秒的目标。


                控制台中配置前面描述的队列的示例屏幕。

建立多位置队列

我们建议所有队列都采用多位置设计。这种设计可以提高放置速度和托管弹性。需要采用多位置设计,才能使用玩家延迟数据让玩家以最小的延迟进入游戏会话。如果您要构建使用竞价型实例队列的多位置队列,请按照中的说明进行操作。教程:为竞价型实例设置游戏会话队列

创建多位置队列的一种方法是将多位置队列添加到列中。这样,队列就可以在实例集的任何位置放置游戏会话。您还可以添加其他具有不同配置或总部位置的实例集以实现冗余。如果您使用的是多位置竞价型实例队列,请遵循最佳实操,并包括具有相同位置的按需型实例队列。

以下示例概述了设计基本多位置队列的过程。在此示例中,我们使用两个队列:一个竞价型实例队列和一个按需型实例队列。每个实例集都有以下AWS 区域放置位置:us-east-1us-east-2ca-central-1、和us-west-2

使用多位置实例集创建基本的多位置队列
  1. 选择要在其中创建队列的位置。您可以将队列放在部署客户端服务位置附近的位置,从而最大限度地减少请求延迟。在此示例中,我们在中的队列在中的位置us-east-1

  2. 创建新队列并将我们的实例集添加为队列目标。目标顺序决定了 Amazon GameLift 如何放置游戏会话。在此示例中,我们首先列出了竞价型实例队列,然后列出了按需型实例队列。

  3. 定义队列的游戏会话放置优先顺序。此顺序决定队列首先在哪里搜索可用的游戏服务器。在此示例中,我们使用默认的优先顺序。

  4. 定义位置顺序。如果您未定义位置顺序,Amazon GameLift 会按字母顺序使用这些位置。


                控制台中的示例屏幕,配置队列放置位置和目的地,如前面的步骤所述。

                控制台中的示例屏幕,配置游戏会话放置优先级和位置顺序,如前面的步骤所述。

优先考虑游戏会话放置

Amazon GameLift 使用 FleetiQ 算法根据一组有序的标准来确定在哪里放置新游戏会话。您可以使用默认的优先顺序,也可以自定义顺序。

默认优先顺序

对于包含玩家延迟数据的放置请求,FleetiQ会按以下默认顺序优先考虑游戏会话放置标准:

  1. 延迟-请求中所有玩家的最低平均延迟。

  2. 成本-如果多个位置的延迟时间相等,则托管成本最低。托管费用主要取决于实例类型和位置的组合。

  3. 目的地-目的地订单,如果多个位置的延迟和成本相等。FleetIQ 会根据实例集配置中所列的目标顺序确定优先级。

  4. 位置-位置顺序,如果多个位置的延迟、成本和目的地相等。FleetIQ 会根据实例集配置中所列的目标顺序确定优先级。

自定义优先顺序

要在 Amazon GameLift 主机中自定义队列的优先顺序,请将优先级值拖到您想要的位置。要使用 AWS Command Line Interface (AWS CLI) 自定义队列的优先级顺序,请使用带--priority-configuration选项的create-game-session-queue命令。您可以使用此命令创建新队列或更新现有队列。

FleetiQ 算法会根据默认顺序将任何未明确提及的标准附加到列表末尾。如果在优先级配置中包含位置标准,则还必须提供有序的位置列表。

根据需要设计多个队列

根据您的游戏和玩家,您可能需要创建多个游戏会话队列。当游戏客户端或客户端服务请求新游戏会话时,它指定用于放置的队列。为了帮助您确定是否使用多个队列,请考虑:

  • 游戏服务器的变体。您可以为游戏服务器的每个变体创建单独的队列。队列中的所有实例集都必须部署兼容的游戏服务器。这是因为使用队列加入游戏的玩家必须能够在队列的任何游戏服务器上玩游戏。

  • 不同的玩家群体。您可以根据玩家群体自定义 Amazon GameLift 如何放置游戏会话。例如,您可能需要为某些需要特殊实例类型或运行时配置的游戏模式自定义队列。或者,您可能需要一个特殊的队列来管理锦标赛或其他赛事的排名。

  • 游戏会话队列指标。您可以根据想要如何收集游戏会话展示位置指标来设置队列。有关更多信息,请参阅Amazon GameLift 队列指标

评估队列指标

使用指标来评估您的队列的执行情况。您可以在 Amazon GameLift 控制台或 Amazon CloudWatch 中查看与队列相关的指标。有关队列指标的列表和说明,请参阅Amazon GameLift 队列指标

队列指标可以提供有关以下内容的见解:

  • 队列总体性能-队列指标表明队列响应放置请求的成功程度。这些指标还可以帮助您确定展示位置失败的时间和原因。对于具有手动缩放队列的队列,AverageWaitTimeQueueDepth指标可以指示何时应调整队列的容量。

  • FleetIQ 算法性能 – 对于使用 FleetIQ 算法的放置请求,指标显示该算法找到理想游戏会话位置的频率。展示位置可以优先使用玩家延迟最低的资源或成本最低的资源。还有一些错误指标可以确定 Amazon GameLift 找不到理想位置的常见原因。有关指标的更多信息,请参阅 使用 Amazon CloudWatch 监控 Amazon GameLift

  • 特定位置的展示位置-对于多位置队列,指标会按位置显示成功展示位置。通过使用 的队列,此数据提供对玩家活动出现位置的有用见解。

当评估 性能的指标,请考虑以下提示:

  • 要跟踪队列寻找理想位置的速度,请将该PlacementsSucceeded指标与FleetiQ指标结合使用,以实现最低延迟和最低价格。

  • 要提高队列寻找理想位置的速度,请查看以下错误指标:

    • 如果FirstChoiceOutOfCapacity为高,请调整队列队列的容量扩展。

    • 如果FirstChoiceNotViable错误指标很高,请查看您的竞价型实例队列。当特定实例类型的中断率太高时,竞价型实例被认为“不可行”。要解决此问题,请更改队列以使用具有不同实例类型的竞价型实例集。我们建议您在每个位置加入具有不同实例类型的竞价型实例队列。