FlexMatch 规则集架构 - Amazon GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

FlexMatch 规则集架构

FlexMatch 规则集对小对战规则和大对战规则使用标准模式。将此模式与FlexMatch 规则语言创建游戏的对战规则。

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

小匹配的规则集架构

以下架构记录了规则集的所有可能属性和允许值,该规则集用于构建最多 40 个玩家的匹配项。

{ "name": "string", "ruleLanguageVersion": "1.0", "playerAttributes":[{ "name": "string, "type": <"string", "number", "string_list", "string_number_map">, "default": "string" }], "algorithm": { "strategy": "exhaustiveSearch", "batchingPreference": <"random", "sorted">, "sortByAttributes": [ "string" ], "expansionAgeSelection": <"newest", "oldest">, "backfillPriority": <"normal", "low", "high"> }, "teams": [{ "name": "string", "maxPlayers": number, "minPlayers": number, "quantity": integer }], "rules": [{ "type": "distance", "name": "string", "description": "string", "measurements": "string", "referenceValue": number, "maxDistance": number, "minDistance": number, "partyAggregation": <"avg", "min", "max"> },{ "type": "comparison", "name": "string", "description": "string", "measurements": "string", "referenceValue": number, "operation": <"<", "<=", "=", "!=", ">", ">=">, "partyAggregation": <"avg", "min", "max"> },{ "type": "collection", "name": "string", "description": "string", "measurements": "string", "referenceValue": number, "operation": <"intersection", "contains", "reference_intersection_count">, "maxCount": number, "minCount": number, "partyAggregation": <"union", "intersection"> },{ "type": "latency", "name": "string", "description": "string", "maxLatency": number, "maxDistance": number, "distanceReference": number, "partyAggregation": <"avg", "min", "max"> },{ "type": "distanceSort", "name": "string", "description": "string", "sortDirection": <"ascending", "descending">, "sortAttribute": "string", "mapKey": <"minValue", "maxValue">, "partyAggregation": <"avg", "min", "max"> },{ "type": "absoluteSort", "name": "string", "description": "string", "sortDirection": <"ascending", "descending">, "sortAttribute": "string", "mapKey": <"minValue", "maxValue">, "partyAggregation": <"avg", "min", "max"> }], "expansions": [{ "target": "string", "steps": [{ "waitTimeSeconds": number, "value": number }, { "waitTimeSeconds": number, "value": number }] }] }

大型匹配的规则集架构

以下架构记录用于构建 40 位以上玩家的对战规则集的所有可能属性和允许值。如果总maxPlayers规则集中所有团队的值超过 40,FlexMatch 进程将对战指南下使用此规则集的请求进行对战。

{ "name": "string", "ruleLanguageVersion": "1.0", "playerAttributes":[{ "name": "string, "type": <"string", "number", "string_list", "string_number_map">, "default": "string" }], "algorithm": { "strategy": "balanced", "batchingPreference": <"largestPopulation", "fastestRegion">, "balancedAttribute": "string", "expansionAgeSelection": <"newest", "oldest">, "backfillPriority": <"normal", "low", "high"> }, "teams": [{ "name": "string", "maxPlayers": number, "minPlayers": number, "quantity": integer }], "rules": [{ "type": "latency", "name": "string", "description": "string", "maxLatency": number, "partyAggregation": <"avg", "min", "max"> }], "expansions": [{ "target": "string", "steps": [{ "waitTimeSeconds": number, "value": number }, { "waitTimeSeconds": number, "value": number }] }] }

规则集架构属性定义

本节定义规则集架构中的每个属性。有关创建规则集的其他帮助,请参阅设计 FlexMatch 规则集

name

规则集的描述性标签。此值与分配给 GameLift 的名称没有关联MatchmakingRuleSet 资源。此值包含在描述已完成匹配的匹配数据中,但没有被任何 GameLift 进程使用。

允许的值:字符串

必需? 否

ruleLanguageVersion

正在使用的 FlexMatch 属性表达式语言的版本。

允许的值:1.0

必需? 是

playerAttributes

包含在匹配请求中并在匹配过程中使用的玩家数据的集合。您还可以在此声明属性,以便将玩家数据包含在传递给游戏服务器的匹配数据中,即使数据未在匹配过程中使用。

必需? 否

name

玩家属性的唯一名称,供匹配者使用。此名称必须与匹配请求中引用的播放器属性名称匹配。

允许的值:字符串

必需? 是

type

玩家属性值的数据类型。

允许的值:“字符串”、“数字”、“字符串列表”、“字符串数字映射”

必需? 是

default

对战请求未为玩家提供对战请求时要使用的默认值。

允许的值:玩家属性允许的任何值。

必需? 否

algorithm

自定义匹配过程的可选配置设置。

必需? 否

strategy

构建匹配时使用的方法。如果未设置该属性,默认行为为 “耗尽搜索”。

允许的值:

  • “耗尽搜索” — 标准匹配方法。FlexMatch 通过评估池中基于一组自定义匹配规则的其他票证来围绕批中最早的票证形成匹配。这个策略适用于 40 名或更少的球员的比赛。在使用这一战略时,batchingPreference应该设置为 “随机” 或 “排序”。

  • “平衡” — 为快速形成大型匹配而优化的方法。这个策略仅用于 41 到 200 名玩家的比赛。它通过对票券池进行预排序、建立潜在比赛并将球员分配给球队,然后使用指定的球员属性平衡比赛中的每支球队来形成比赛。例如,此策略可用于平衡比赛中所有球队的平均技能水平。在使用这一战略时,balancedAttribute必须设置,batchingPreference应该设置为 “最大人口” 或 “最快地区”。此策略无法识别大多数自定义规则类型。

必需? 是

batchingPreference

在分组门票之前使用的预排序方法以进行比赛建立。预先排序彩票池会根据特定特征对门票进行批处理,这会增加最后一场比赛中玩家的统一性。

允许的值:

  • “随机”-仅适用于strategy= “耗尽搜索”。不会进行预排序;池中的票证随机进行批处理。这是详尽搜索策略的默认行为。

  • “已排序”-仅适用于strategy= “耗尽搜索”。票务池根据sortbyAttributes

  • “最大人口” — 仅在strategy= “平衡”。票券池按玩家报告可接受延迟等级的区域进行预排序。这是平衡策略的默认行为。

  • “最快的区域” — 仅适用于strategy= “平衡”。票券池按玩家报告其最低延迟级别的区域进行预排序。结果比赛需要更长的时间才能完成,但所有玩家的延迟往往很低。

必需? 是

balancedAttribute

使用平衡策略构建大型比赛时使用的球员属性的名称。

允许的值:声明的任何属性playerAttributestype= “数字”。

必需? 是strategy= “平衡”。

sortByAttributes

在批处理前对票证池进行预排序时使用的玩家属性列表。此属性仅在使用详尽搜索策略进行预排序时使用。属性列表的顺序决定排序顺序。FlexMatch 对字母和数字值使用标准排序约定。

允许的值:声明的任何属性playerAttributes

必需? 是batchingPreference= “已排序”。

backfillPriority

匹配回填工单的优先级排序方法。此属性确定 FlexMatch 何时处理批处理回填工单。它仅在使用详尽的搜索策略进行预排序时使用。如果未设置该属性,默认行为为 “正常”。

允许的值:

  • “正常” — 在形成匹配时不考虑工单的请求类型(回填或新匹配)。

  • “高” — 工单批次按请求类型(然后按年龄)排序,FlexMatch 会首先尝试匹配回填票证。

  • “低” — 工单批次按请求类型(然后按年龄)排序,FlexMatch 会首先尝试匹配非回填票证。

必需? 否

expansionAgeSelection

计算匹配规则扩展等待时间的方法。如果比赛经过一段时间后没有完成,则扩展用于放宽比赛要求。等待时间是根据已在部分填充匹配中的票证的年龄来计算的。如果未设置该属性,默认行为为 “最新”。

允许的值:

  • “最新” — 扩展等待时间是基于在部分完成的匹配中具有最近创建时间戳的票证计算的。扩展往往会更慢地触发,因为一个较新的票证可以重新启动等待时钟。

  • “最旧” — 扩展等待时间是根据匹配中具有最早创建时间戳的票证计算的。扩展往往会更快地触发。

必需? 否

teams

对战团队的配置。为每个团队提供团队名称和规模范围。规则集必须至少定义一个团队。

name

团队的唯一名称。团队名称可在规则和扩展中引用。在成功的比赛中,球员将在匹配数据中按球队名称分配。

允许的值:字符串

必需? 是

maxPlayers

可以分配给团队的玩家的最大数量。

允许的值:数字

必需? 是

minPlayers

在对战可行之前必须分配给团队的玩家的最小数量。

允许的值:数字

必需? 是

quantity

要在比赛中创建的这种类型的球队数。数量大于 1 的团队将使用附加数字指定(“Red_1"、“Red_2" 等)。如果未设置该属性,默认值为 “1"。

允许的值:数字

必需? 否

rules

规则语句集合,此类语句用于定义如何评估对战游戏的玩家。

必需? 否

name

规则的唯一名称。规则集中的所有规则都必须具有唯一的名称。规则名称在跟踪与规则相关的活动的事件日志和指标中引用。

允许的值:字符串

必需? 是

description

规则的文本描述。此信息不可用于对战过程。

允许的值:字符串

必需? 否

type

规则语句的类型。每个规则类型都有必须设置的其他属性。有关如何完全定义每种规则类型的详细信息,请参阅FlexMatch 规则语言

允许的值:

  • “距离” — 测量数字值之间的距离。

  • “比较” — 比较两个值。

  • “收藏” — 评估集合中的值,例如作为集合的玩家属性或多个玩家的一组值。

  • “延迟” — 评估为匹配请求报告的区域延迟数据。

  • “DistanceSort” — 根据具有数值的指定玩家属性与批中最早票证的比较方式,对批次中的票证进行排序的显式排序方法。

  • “AbsoluteSort” — 根据指定的播放器属性是否与批处理中最早的票证进行比较的显式排序方法。

必需? 是

expansions

在比赛无法完成时,随着时间的推移放松比赛要求的规则。将扩展设置为一系列逐步应用的步骤,以便更易于查找匹配项。默认情况下,FlexMatch 会根据添加到匹配的最新票证的年龄计算等待时间。您可以使用算法属性更改扩展等待时间的计算方式expansionAgeSelection

扩展等待时间是绝对值,因此每个步骤的等待时间应比上一步长。例如,要计划一系列逐步扩展,您可以使用 30 秒、40 秒和 50 秒的等待时间。等待时间不能超过对战请求允许的最长时间,此时间在对战配置中设置。

必需? 否

target

要放宽的规则集元素。您可以放松团队大小属性或任何规则语句属性。语法为 "<component name> [<rule/team name>]。 <property name>”。例如,要更改组最小规模,请执行以下操作:teams[Red, Yellow].minPlayers。要更改名为 “最小技能” 的比较规则语句中的最低技能要求,请执行以下操作:rules[minSkill].referenceValue

必需? 是

steps
waitTimeSeconds

为目标规则集元素应用新值之前要等待的时间长度,以秒为单位。

必需? 是

value

目标规则集元素的新值。