FlexMatch 属性表达式 - Amazon GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

FlexMatch 属性表达式

属性表达式在规则集中用于引用与对战有关的某些属性。它们允许您在定义属性值时使用计算和逻辑。属性表达式通常采用以下两种形式之一:

  • 单个玩家数据

  • 计算出的个人玩家数据集合。

常见的对战属性表达式

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

目标 输入 含义 输出
标识对战游戏的特定团队: teams[red] 红队 团队
标识对战游戏的特定团队: teams[red,blue] 红队和蓝队 List<Team>
标识对战游戏的所有团队: teams[*] 所有团队 List<Team>
标识特定团队中的玩家: team[red].players 红队中的玩家 List<Player>
标识特定团队中的玩家: team[red,blue].players 对战游戏的玩家 (按团队分组) List<List<Player>>
标识对战游戏的玩家: team[*].players 对战游戏的玩家 (按团队分组) List<List<Player>>

属性表达式示例

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

表达式 含义 结果类型

teams[red].players[playerId]

红队所有玩家的玩家 ID List<string>
teams[red].players.attributes[skill] 红队所有玩家的“技能”属性 List<number>
teams[red,blue].players.attributes[skill] 红队和蓝队所有玩家的“技能”属性,按队伍分组 List<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