本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例:使用複合規則來建立與具有類似屬性或類似選擇之玩家的配對
此範例說明如何使用 設定兩個團隊配對的規則集compound
。在範例中:
-
此
SimilarLeagueDistance
規則可確保配對中的所有玩家,在其他玩家的 2 個league
內都有 。 -
此
SimilarSkillDistance
規則可確保配對中的所有玩家在其他玩家中都有 10skill
個內的 。如果玩家正在等待 10 秒,則距離會擴展到 20 秒。如果玩家正在等待 20 秒,則距離會擴展至 40。 -
此
SameMapComparison
規則可確保配對中的所有玩家都請求相同的map
。 -
此
SameModeComparison
規則可確保配對中的所有玩家都請求相同的mode
。 -
如果至少符合下列其中一個條件,則
CompoundRuleMatchmaker
規則可確保符合:-
配對中的玩家已請求相同的
map
和相同的mode
。 -
配對中的玩家具有相當的
skill
和league
屬性。
-
{ "ruleLanguageVersion": "1.0", "teams": [{ "name": "red", "minPlayers": 10, "maxPlayers": 20 }, { "name": "blue", "minPlayers": 10, "maxPlayers": 20 }], "algorithm": { "strategy":"balanced", "balancedAttribute": "skill", "batchingPreference":"fastestRegion" }, "playerAttributes": [{ "name": "league", "type": "number" },{ "name": "skill", "type": "number" },{ "name": "map", "type": "string" },{ "name": "mode", "type": "string" }], "rules": [{ "name": "SimilarLeagueDistance", "type": "distance", "measurements": ["max(flatten(teams[*].players.attributes[league]))"], "referenceValue": "min(flatten(teams[*].players.attributes[league]))", "maxDistance": 2 }, { "name": "SimilarSkillDistance", "type": "distance", "measurements": ["max(flatten(teams[*].players.attributes[skill]))"], "referenceValue": "min(flatten(teams[*].players.attributes[skill]))", "maxDistance": 10 }, { "name": "SameMapComparison", "type": "comparison", "operation": "=", "measurements": ["flatten(teams[*].players.attributes[map])"] }, { "name": "SameModeComparison", "type": "comparison", "operation": "=", "measurements": ["flatten(teams[*].players.attributes[mode])"] }, { "name": "CompoundRuleMatchmaker", "type": "compound", "statement": "or(and(SameMapComparison, SameModeComparison), and(SimilarSkillDistance, SimilarLeagueDistance))" }], "expansions": [{ "target": "rules[SimilarSkillDistance].maxDistance", "steps": [{ "waitTimeSeconds": 10, "value": 20 }, { "waitTimeSeconds": 20, "value": 40 }] }] }