FlexMatch ruleset for starting a game session with a single player

Hello,

A couple of questions:

  1. Is it possible to start a game session with only one player using a ruleset which has two teams defined and uses FairTeamSkill rule? If not, what would be the correct approach on implementing a game mode with two skill balanced teams where a player wouldn’t need to wait for other players and could start a bot filled match which could be later backfilled?

  2. Is it possible to create multiple simultaneous game sessions on a single game server process?

  1. I believe you could have an expansion that relaxed required players on 1 team to zero. You could then use backfill/autobackfill to bring in a matching player within a certain time period.

  2. Use the multi-process features of GameLift to run up to 50 processes per instance. Each process can host 1 game session: https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-multiprocess.html

Thanks for the quick reply.

I made the conclusion that the root of my single player matchmaking problem was FairTeamSkill rule. Correct me if I’m wrong, but it seems like the first player match evaluation fails because of an undefined avg result in measurements field when it tries to calculate it for an empty team.

Maybe there’s some kind of workaround for this problem?

Any new information on this?

Apologies, I did ping someone with more expertize in FlexMatch but I haven’t heard back from them. Let me try again.

Hi,
Sorry for the late reply.

Unfortunately, as you have pointed out, FairTeamSkill rule can’t be used to make a match with an empty team. This is because the the empty team’s average skill level cannot be evaluated, and expansions currently cannot be used to remove a rule entirely from the ruleset.

One alternative could be to use a FairPlayerSkill rule instead of a FairTeamSkill rule.

{
“name”: “FairPlayerSkill”,
“description”: “The skill of all players is within 50 points from the average skill of all players in the match”,
“type”: “distance”,
“measurements”: [ “flatten(teams[].players.attributes[skill])" ],
“referenceValue”: "avg(flatten(teams[
].players.attributes[skill]))”,
“maxDistance”: 50
}

Hope this helps!