Flexmatch Operations on Subset of Teams

I’m having some trouble accomplishing a ruleset I was hoping to create. Right now, we have two teams, red and blue and are using the FairTeamSkill rule in the documentation below:
{
“name”: “FairTeamSkill”,
“description”: “The average skill of players in each team is within N points from the average skill of all players in the match”,
“type”: “distance”,
// get skill values for players in each team and average separately to produce list of two numbers
“measurements”: [
“avg(teams[].players.attributes[skill])"
],
// get skill values for players in each team, flatten into a single list, and average to produce an overall average
“referenceValue”: "avg(flatten(teams[
].players.attributes[skill]))”,
“maxDistance”: 25
},

However, we have two different roles for each team and were hoping to basically create a team for each role (so, 2 teams x 2 roles yielding a total of 4 teams).

I was wondering if there was a way to create two versions of the FairTeamSkill rule above, but each rule only operates on two specific teams vs all four like the * would do. Something like:
“measurements”: [
“avg(teams[redRoleA, blueRoleA].players.attributes[skill])”
],

so in this rule, it would only take the two version of the RoleA team, but leave the two version of the RoleB team out of it.

Is it possible to specify a susbset of teams we’d like to include? Also, same thing but for the reference value:
“referenceValue”: “avg(flatten(teams[*].players.attributes[skill]))”,

Thanks,
Adam

Hi Adam!

I think I’m a little confused about what you’re looking to do here. It sounds like what you have is two teams, each with two roles. For now to stick some arbitrary labels on them lets call the two roles Tank and Support, and the two teams are Red and Blue.

Is what you are trying to do to match the skill level of the Tanks on both teams, then match the skill level of the Supports on both teams to form the match? Essentially trying to keep the roles skill level equivalent to each other as a way to keep the teams even.

If that’s the goal what you can do is adjust the list of measurements in the distance rule to include just the players of one of those roles. For example;

Distance Rule
Measurements: "avg(teams[RedTanks].players.attributes[skill])”
Reference value: "avg(teams[BlueTanks].players.attributes[skill])”

Alternatively you could also just put the measurements to have both roles like;
"avg(teams[RedTanks].players.attributes[skill])”, "avg(teams[BlueTanks].players.attributes[skill])”

Thanks…that makes total sense. Think i was overcomplicating that portion of it going from the original FairTeamSkill example

So that should work for blue Tanks vs red tanks and blue support vs red support comparisons. However, if I still wanted to include the core idea behind the AMZ FairTeamSkill example is that possible? So in this case, that would be “average of red tanks and supports and average of blue tanks and supports is within X distance of the average skill of all players”?

So something like:
measurements: [
“avg(teams[redTanks].players.attributes[skill] + teams[redSupports].players.attributes[skill])”,
“avg(teams[blueTanks].players.attributes[skill] + teams[blueSupports].players.attributes[skill])”
]
against
“referenceValue”: “avg(flatten(teams[*].players.attributes[skill]))”,

Thank you very much for your help!

@AlexE-aws - Actually, more important question:

If multiple players come in on the same ticket, can they be split between tanks and support but stay on the same colored team? or will payers on the same ticket only be placed on the same team (eg- all blue support or all blue tanks?)

Thanks,
Adam

Hey Adam,

So in this case, that would be “average of red tanks and supports and average of blue tanks and supports is within X distance of the average skill of all players”?

Does it make sense to just calculate Red vs Blue at equal skill overall? I’m trying to tease out the reasoning between matching Tanks and Supports, and then matching Red vs Blue. Is the concern the scenarios where the two individual roles mostly equal, but both slightly favor one color team which leads to a team overall being more favored for the match?

If multiple players come in on the same ticket, can they be split between tanks and support but stay on the same colored team?

Right now we only support players in the same ticket going to the same team unfortunately. I can certainly open a feature request in this vein for you if you’d like?

Is the concern the scenarios where the two individual roles mostly equal, but both slightly favor one color team which leads to a team overall being more favored for the match?

More or less that was my concern. But i was going to attempt just doing role comparison between teams and seeing if that woudl be good enough

Right now we only support players in the same ticket going to the same team unfortunately. I can certainly open a feature request in this vein for you if you’d like?

Unfortunately, this makes everything else a moot concern. Not being able to split players on a single ticket into multiple roles but be on the same team causes this approach to break down for us. If you could open the feature request, that’d be great.

Thanks for the replies

Lets take this discussion offline re: details of what your requirements might be for such a feature and how we might be able to help. I’ve poked folks on our end to reach out!