Amazon GameLift
开发人员指南 (版本 )
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

FlexMatch 规则引用

为 FlexMatch 规则集编写规则时,使用下列属性表达式。

了解有关创建 FlexMatch 规则的更多信息:

规则类型

支持下列规则类型。每个规则类型需要在此处定义的一组属性。

距离规则 (distance)

距离规则用于度量两个数字值之间的差值,例如技能级别之间的差距。例如,某项距离规则可能要求所有玩家必须在相邻的两个级别内。

  • measurement – 为其度量距离的玩家属性值;必须为数字值。

  • referenceValue – 用于对照潜在对战游戏度量距离的数字值。

  • minDistance/maxDistance – 为了成功进行对战游戏而允许的最大或最小距离值。

  • partyAggregation – 如何处理多玩家(战队)请求。有效选项是使用发出请求的玩家的最小值 (min)、最大值 (max) 或平均值 (avg)。默认为 avg

比较规则 (comparison)

比较规则将一个玩家属性值与另一个值进行比较。有两种类型的比较规则。第一种类型将属性值与参考值进行比较。指定参考值和任何有效的比较操作。例如,规则可能要求匹配的玩家拥有 24 或更高的技能水平。第二种类型在团队或比赛中的所有玩家之间比较某个属性值。此类型会忽略参考值,并指定等于或不等于运算 (所有玩家都具有或都不具有相同的属性值)。例如,规则可能会要求所有玩家选择相同的游戏地图。

  • measurement – 要比较的玩家属性值。

  • referenceValue – 用于对照潜在对战游戏评估测量值的值。

  • operation – 如何评估测量值。有效操作包括:<, <=, =, !=, >, >=

  • partyAggregation – 如何为多个玩家(战队)请求排序。有效选项是使用发出请求的玩家的最小值 (min)、最大值 (max) 或平均值 (avg)。默认为 avg

收集规则 (collection)

集合规则评估玩家属性值的集合。一个集合可以包含多个玩家的属性值和/或采用集合格式 (字符串列表) 的一个玩家属性。例如,某个集合规则可能会评估团队玩家选择的角色集合,并要求其中包含至少一个特定角色。

  • measurement – 要评估的玩家属性值的集合。属性值必须采用字符串列表形式。

  • referenceValue – 值或值集合,用于对照潜在对战游戏评估测量值。

  • operation – 如何评估测量值集合。有效操作包括:

  • minCount/maxCount – 为了成功进行对战游戏而允许的最大或最小计数值。

  • partyAggregation – 如何为多个玩家(战队)请求排序。有效选项是使用发出请求玩家的 unionintersection 值。默认为 union

延迟规则 (latency)

延迟规则用于根据可接受的对战游戏评估玩家延迟设置。例如,某个规则可能要求所有匹配玩家的区域延迟必须都在最大限值内。

  • maxLatency – 区域的最高可接受延迟值。对于每个玩家,忽略超过此延迟的所有区域。

  • maxDistance – 每个玩家的延迟与距离参考值之间的最大差值。

  • distanceReference – 为了成功进行对战游戏,在度量距离时用作对照的数字值。对于延迟,此值是多个玩家的延迟值的聚合。有效选项为玩家延迟的最小值 (min) 或平均值 (avg)。(请参阅属性表达式部分。)

  • partyAggregation – 如何为多个玩家(战队)请求排序。有效选项是使用发出请求的玩家的最小值 (min)、最大值 (max) 或平均值 (avg)。默认为 avg

距离排序规则 (distanceSort)

距离排序是一个显式排序选项,该选项根据玩家属性指示对战构建器将对战请求预先排序。距离排序规则根据与基准点请求的距离评估对战请求。

  • sortDirection – 有关为对战请求排序的说明。有效选项是 ascendingdescending

  • sortAttribute – 用作玩家排序依据的玩家属性。

  • mapKey – 如何对玩家的地图属性进行评估。有效选项包括:

    • minValue:对于基准点玩家,找到包含最低值的关键字。

    • maxValue:对于基准点玩家,找到包含最高值的关键字。

  • partyAggregation – 如何为多个玩家(战队)请求排序。有效选项是使用发出请求的玩家的最小值 (min)、最大值 (max) 或平均值 (avg)。默认为 avg

绝对排序规则 (absoluteSort)

绝对排序是一个显式排序选项,该选项根据玩家属性指示对战构建器将对战请求预先排序。绝对排序根据其玩家属性是否与基准点请求匹配来评估对战请求。

  • sortDirection – 有关为对战请求排序的说明。有效选项是 ascendingdescending

  • sortAttribute – 用作玩家排序依据的玩家属性。

  • mapKey – 如何对玩家的地图属性进行评估。有效选项包括:

    • minValue:对于基准点玩家,找到包含最低值的关键字。

    • maxValue:对于基准点玩家,找到包含最高值的关键字。

  • partyAggregation – 如何为多个玩家(战队)请求排序。有效选项是使用发出请求的玩家的最小值 (min)、最大值 (max) 或平均值 (avg)。默认为 avg

属性表达式

属性表达式在规则集中用于引用与对战有关的某些属性。属性可以包括来自对战请求的玩家属性值。例如,某个规则可能使用属性表达式来确定要评估哪个玩家属性。

它们通常采用以下两种形式:

  • 单个玩家数据

  • 计算的团队数据,即包含单个玩家数据的集合的形式。

有效属性表达式标识单个玩家、团队或对战游戏的特定值。以下部分表达式说明了如何标识团队和玩家:

标识对战游戏的特定团队: teams[red] 红队 团队
标识对战游戏的所有团队: teams[*] 所有团队 List<Team>
标识特定团队中的玩家: team[red].players 红队中的玩家 List<Player>
标识对战游戏的玩家: team[*].players 对战游戏的玩家 (按团队分组) List<List<Player>>

下表给出基于之前示例构建的部分有效属性表达式:

表达式 含义 结果类型

teams[red].players[playerid]

红队所有玩家的玩家 ID List<string>
teams[red].players.attributes[skill] 红队所有玩家的“技能”属性 List<number>
teams[*].players.attributes[skill] 对战游戏的所有玩家的“技能”属性 (按团队分组) List<List<number>>

属性表达式可用于使用以下函数或组合函数来聚合团队数据:

聚合 输入 含义 输出
min List<number> 获取列表中所有数字的最小值。 number
max List<number> 获取列表中所有数字的最大值。 number
avg List<number> 获取列表中所有数字的平均值。 number
median List<number> 获取列表中所有数字的中值。 number
sum List<number> 获取列表中所有数字的总和。 number
count List<?> 获取列表中的元素数量。 number
stddev List<number> 获取列表中所有数字的标准差。 number
flatten List<List<?>> 将嵌套列表的集合变成包含所有元素的单个列表。 List<?>
set_intersection List<List<string>> 获取在集合的所有字符串列表中找到的字符串列表。 List<string>
以上全部 List<List<?>> 对嵌套列表的所有操作会对每个子列表执行一次以生成结果列表。 List<?>

下表给出使用聚合函数的部分有效属性表达式:

表达式 含义 结果类型
flatten(teams[*].players.attributes[skill]) 对战游戏中的所有玩家的“技能”属性 (未分组) List<number>
avg(teams[red].players.attributes[skill]) 红队玩家的平均技能 number
avg(teams[*].players.attributes[skill] 对战游戏中的每个团队的平均技能 List<number>
avg(flatten(teams[*].players.attributes[skill])) 对战游戏中的所有玩家的平均技能级别。该表达式获取玩家技能的展开列表,然后计算它们的平均值。 number
count(teams[red].players) 红队的玩家数量 number
count (teams[*].players) 对战游戏中的每个团队的玩家数量 List<number>
max(avg(teams[*].players.attributes[skill])) 对战游戏中的最高团队技能级别 number

本页内容: