Amazon Game Tech Blog

Large Match Support for Amazon GameLift – Available Now

Players expect multiplayer game sessions to be fast and full. But with the rise of Battle Royale games and other player-intensive games, ensuring a consistent matchmaking experience can be a challenge. Let’s be honest: the last thing your players want to fight is a matchmaking queue.

That’s why today, we’re excited to introduce Large Match Support for Amazon GameLift. With this update, you can now match and connect up to 200 players to a single game session on the lowest latency server instance available—all based upon a custom rule you define. We’ve also added some other new functionality that makes it even easier to support games with larger player counts, including:

  • Create multiple teams from one definition. Rather than defining team compositions separately, you can now easily create teams by specifying one team template for creating as many teams as needed for your game.
  • Easier backfilling of open player slots. We’ve automated backfilling, so you can keep matches full without causing long player wait times. Matchmaking backfill will automatically add a new player to a match even after a game has started and will prioritize filling a match before creating a new match.

How to use GameLift FlexMatch Large Match Support

Match up to 200 players

To enable a large match, you need to allow for more than 40 players minimum in your matchmaking rule set to be matched amongst all teams. For example, in a 100 player max Battle Royale, which can start with 50 players, you’d create a configuration like this:

{
    …
    "teams": [{
        "name": "GeneralPopulation",
        "minPlayers": 50,
        "maxPlayers": 100
    }],
    "playerAttributes":[{
        "name": "skill",
        "type": "number",
        "default": 10
    }],
    "algorithm": {
        "balancedAttribute": "skill",
        "strategy": "balanced",
        "batchingPreference": "fastestRegion"
    },
    …
}

When defining large match rules, there are some differences from smaller matches you should be aware of. To make sure that matches with large numbers of players can still find matches quickly, the ability to define matching rules allows only one developer defined variable, known as the “balance” attribute. This attribute must be a number and it typically reflects player skill level, though it’s up to you to determine what this value means. Additionally, limiting the acceptable player latency can make sure all of your players have a good experience. Balance and latency are the only two variables that large matches take in to account when finding players for a game session. If you’re creating matches of 40 players or fewer you can still use the full rule set for matchmaking. To learn more, visit the documentation pages.

Convenient team definition

Previously if you wanted to define multiple teams with the exact same consistency, you had to copy and paste the team definition over and over for each team. A new attribute “quantity” has been added to the team definition that allows you to specify the number of teams to creating using the definition. Note that as long as the team definitions allow more than 40 players, the large match rules will apply. In the following example, there is one small team of monsters, and then ten teams of hunters. The team definitions require a minimum of 105 players.

{
    …
        "teams": [{
        "name": "Monsters",
        "minPlayers": 5,
        "maxPlayers": 10
    },{
        "name": "Hunters",
        "minPlayers": 10,
        "maxPlayers": 15,
        "quantity": 10
    }]
    …
}

Automatic backfill

Before automatic backfilling was introduced, you had to make calls to the StartMatchBackfill API and keep track if matches needed players or not on your own. Now you can simply enable automatic backfill in your matchmaking configuration. This enables matches to be formed with fewer than the maximum allowed players to prevent long player wait times. The FlexMatch service will automatically find an appropriate player and connect them to your game session even once it has started, allowing you to easily add new players and keep matches full. In addition, automatic backfill prioritizes filling existing matches before creating new ones, so your players won’t be stuck in half full matches.

When using automatic backfill, if your rule set includes expansion rules to lower minimum player counts, we suggest that you don’t relax player counts too quickly. If you do, you’ll start a lot of matches that are fairly empty. Instead, only relax the rules once enough time has passed in the match and it doesn’t seem like the match is backfilling quickly enough. This timing will vary depending on your team composition, and will likely require some testing to come up with the correct strategy for your game.

Here’s an example of a matchmaking rule set that will attempt to match very low latency players first and then slowly relax latency rules allowing more time to find lower latency backfills. It also relaxes the rules on the required size of the hunter teams over time, while attempting to first fill all slots to fill if possible. Extending the previous example to account for this:

{
    …
    "rules": [{
         "name": "FastConnection",
         "type": "latency",
         "maxLatency": 50
    }],
    "expansions": [{
        "target": "rules[FastConnection].maxLatency",
        "steps": [{
            "waitTimeSeconds": 60,
            "value:" 100
        },{
            "waitTimeSeconds": 90,
            "value": 250
        },{
            "waitTimeSeconds": 120,
            "value": 500
        }]
    }, {
        "target": "teams[Hunters].minPlayers",
        “steps":  [{
            "waitTimeSeconds": 15,
            "value": 8
        },{
            "waitTimeSeconds": 30,
            "value": 6
        },{
            "waitTimeSeconds": 45,
            "value": 4
        }]
    }]
    …
}

Go forth and matchmake!

We hope you enjoy these new features. If you have questions please visit us at the Amazon GameLift forums.

Further Reading