优先考虑游戏会话放置
Amazon GameLift Servers 采用算法来确定如何对队列的目标进行优先级排序,并决定新游戏会话的放置位置。该算法基于一组有序的标准。您可以使用默认的优先顺序,也可以自定义顺序。您可以随时编辑队列的优先级顺序。
默认优先顺序
-
延迟 – 如果游戏会话放置请求包含玩家特定位置的延迟数据,则 Amazon GameLift Servers 会计算每个位置的玩家平均延迟,并尝试将游戏会话放置在平均值最低的实例集位置。
-
成本 – 如果请求未包含延迟数据,或者多个实例集的延迟时间相等,则 Amazon GameLift Servers 会评估每个实例集的托管成本。实例集托管成本因实例集类型(竞价型或按需型)、实例类型及位置而异。
-
目标 – 如果多个实例集具有相同的延迟和成本,则 Amazon GameLift Servers 会根据队列配置中列出的目标顺序对实例集进行优先级排序。
-
位置 – 对于拥有多位置实例集的队列,如果所有其他标准都相同,则 Amazon GameLift Servers 会根据字母顺序对实例集的位置进行优先级排序。
自定义队列对游戏会话放置的优先级排序方式
您可以选择自定义队列对放置标准的优先级排序方式。该队列将对接收到的所有游戏会话放置请求应用自定义优先级排序。
注意
如果您创建自定义优先级配置时未包含全部四个标准,则 Amazon GameLift Servers 会自动按默认顺序追加所有缺失的标准。
自定义队列的优先级配置
使用 Amazon GameLift Servers 控制台
按玩家延迟确定放置优先级
如果您想为玩家提供最佳的玩家体验并确保将延迟降至最低,请在设置游戏会话放置系统时采取以下步骤:
在选择放置游戏会话的位置时,将您的队列设置为优先考虑延迟。默认情况下,延迟位于优先级列表的顶端。您还可以自定义队列的优先级配置,并选择按优先级顺序排列延迟的位置。
-
为您的队列设置玩家延迟策略。延迟策略允许您对游戏会话放置中允许的延迟量设置硬性限制。如果 Amazon GameLift Servers 无法在不超过限制的情况下放置游戏会话,则放置请求将超时并失败。您可以设置单个延迟策略,也可以创建一系列随着时间的推移逐渐放宽延迟限制的策略。通过一系列策略,您可以指定极低的初始延迟限制,并且在短暂延迟后仍然可以容纳延迟较高的玩家。有关创建延迟策略的详细信息,请参阅创建玩家延迟政策。
在提出游戏会话放置请求时(请参阅 StartGameSessionPlacement),需包含每位玩家的延迟数据。玩家延迟数据包含游戏会话可能放置的每个可能位置的对应数值。例如,对于将游戏会话放置在 Amazon Web Services 区域 us-east-2 和 ca-central-1 中的队列,延迟数据可能如下所示:
"PlayerLatencies": [ { "LatencyInMilliseconds": 100, "PlayerId": "player1", "RegionIdentifier": "us-east-2" }, { "LatencyInMilliseconds": 100, "PlayerId": "player1", "RegionIdentifier": "ca-central-1" }, { "LatencyInMilliseconds": 150, "PlayerId": "player2", "RegionIdentifier": "us-east-2" }, { "LatencyInMilliseconds": 150, "PlayerId": "player2", "RegionIdentifier": "ca-central-1" } ]
按位置确定放置优先级
您可以配置队列,使其根据地理位置优先级列表放置游戏会话。位置是队列决定新游戏会话放置位置的标准之一。默认情况下,位置的优先级排在延迟、成本和目标之后,位列第四。
对于游戏会话放置,目标和位置具有略微不同的含义:
-
目标是指特定的实例集,包含该实例集的所有托管资源(无论部署于何处)。按目标确定优先级时,Amazon GameLift Servers 可能会将会话放置到实例集内的任何位置。多位置托管式实例集和 Anywhere 实例集的托管资源可部署于一个或多个位置。
-
位置是指实例集托管资源部署的具体地理位置。一个实例集可以有多个位置,其中可能包括 Amazon Web Services 区域、Local Zones 或自定义位置(适用于 Anywhere 实例集)。单位置托管式实例集仅有一个位置,且该位置始终为 Amazon Web Services 区域。多位置实例集有一个主区域,并可包含远程位置。Anywhere 实例集有一个或多个自定义位置。
按位置确定放置优先级时,Amazon GameLift Servers 会查找包含优先级位置的所有队列目标,然后在其中搜索可用的托管资源。如果存在多个包含优先级位置的目标,则 Amazon GameLift Servers 会转而采用下一个优先级标准(成本、延迟、目标)。
您可以通过多种方式影响队列位置的优先级排序
-
配置队列处理所有游戏会话放置请求的方式:
-
向队列添加优先级配置。队列的优先级配置包括位置的有序列表。您可以指定一个或多个位置来确定其优先级。此列表不会排除任何位置,仅告知 Amazon GameLift Servers 会优先在哪些位置查找可用的托管资源。有序位置列表的一个常见用途是:当您希将大部分流量导入到一个或多个特定的地理位置,同时将其他位置作为备份容量时。通过调用 UpdateGameSessionQueue 来添加优先级配置。
-
向队列添加筛选条件配置。筛选条件配置是队列的允许列表。它指示 Amazon GameLift Servers 在寻找可用的托管资源时忽略列表之外的所有位置。筛选条件配置有两种常见用途。首先,对于具有多个位置的实例集,您可以使用筛选条件来排实例集内的某些位置。其次,在某个位置出现暂时性问题时,您可能希望暂时禁止在该位置上放置。由于您可以随时更新队列的筛选条件配置,因此可以根据需要轻松添加和移除位置。通过调用 UpdateGameSessionQueue 来添加过滤条件配置。
-
-
使用特殊指令处理个别放置请求:
-
在游戏会话放置请求中包含优先级覆盖列表。您可通过任何 StartGameSessionPlacement 请求提供备用位置优先级列表。此列表仅对本次请求生效,将覆盖队列中配置的位置优先级,且不会影响任何其他请求。此覆盖功能需满足以下要求:
-
仅当队列已设置优先级配置且将
LOCATION设为第一个优先级时,才使用覆盖列表。 -
请勿在同一放置请求中包含玩家延迟数据。包含延迟数据会在对位置进行优先级排序时引发冲突,而 Amazon GameLift Servers 无法解决此类冲突。
-
设定当 Amazon GameLift Servers 在优先级覆盖列表中找不到可用的资源时的处理方式。您可以选择回退到队列的其他位置,也可以将放置范围限制在覆盖列表内。默认情况下,Amazon GameLift Servers 会回退以尝试放置在队列的其他位置。
-
根据需要更新队列的筛选条件配置,例如在覆盖列表中添加位置。覆盖列表不会使筛选条件列表失效。
-
-