範例:使用複合規則來建立與具有類似屬性或類似選擇之玩家的配對 - Amazon GameLift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

範例:使用複合規則來建立與具有類似屬性或類似選擇之玩家的配對

此範例說明如何使用 設定兩個團隊配對的規則集compound。在範例中:

  • SimilarLeagueDistance規則可確保配對中的所有玩家,在其他玩家的 2 個league內都有 。

  • SimilarSkillDistance規則可確保配對中的所有玩家在其他玩家中都有 10 skill 個內的 。如果玩家正在等待 10 秒,則距離會擴展到 20 秒。如果玩家正在等待 20 秒,則距離會擴展至 40。

  • SameMapComparison規則可確保配對中的所有玩家都請求相同的 map

  • SameModeComparison規則可確保配對中的所有玩家都請求相同的 mode

  • 如果至少符合下列其中一個條件,則CompoundRuleMatchmaker規則可確保符合:

    • 配對中的玩家已請求相同的 map和相同的 mode

    • 配對中的玩家具有相當的 skillleague 屬性。

{ "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 }] }] }