Matchmaking
Matchmaking Platform Documentation
Overview
The Airship platform provides a robust Matchmaking system for game developers to quickly implement competitive, multiplayer gaming. With minimal configuration, you can easily setup skill based, role based, and other types of matchmaking queues that easily integrate into your existing Airship games.
Quickstart
More documentation is below, this exists to help you quickly get familiar with the core concepts of matchmaking.
After creating a matchmaking queue in the Create Airship console:
Concepts
Group - A collection of players who should get put into matches together. This can be a party, a single player, or any collection of Airship Users.
Queue - Where groups get matched together. A queue has a configuration consisting of teams & rules that designate how players should be matched together.
Team - A set of Groups that are a part of a specific team in a match. Each queue must have at least one team.
Rules - Specifies how groups should be placed into teams and matches. Rules have different effects, such as requiring a minimum difference between specific attributes (eg. skill level)., specifying what roles a user can be, or the minimum difference in team size. Each queue can be configured with multiple rules to create complex matchmaking requirements.
Groups
A group can have one of 3 states:
IDLE
No action is being performed. The group is in an idle state.
IN_QUEUE
The group is currently in a queue and waiting for a match.
IN_MATCH
The group is currently assigned to a match. Players in the group are expected to be in their assigned match server until the match server closes.
A group can be in only one queue at a time and will remain in that queue until either a match is made or the request expires (about 30 minutes). To join another queue, you will either need to call Leave Queue
or create a new group.
Players are allowed to be part of a group even if they are not playing the game. Members that are not in the game will have their "active" value set to false. If any players in the group are inactive, the group will be unable to matchmake. If a group member becomes inactive while their group is in queue, the group will automatically leave the queue.
Queues
Queues are a collection of configuration that can be used to define a specific game mode or other concept that players can matchmake for. Each queue is separate and groups can only be part of one queue at a time.
Teams
The team configuration for a queue determines the number of teams the queue has, as well as the minimum and maximum number of players for each team. Teams can be used to represent traditional two team games (Red vs. Blue team) or can represent other game modes such as Battle Royal (25 teams of 4), or asymmetric teams (one vs many). You must always have at least one team.
Each team defined in the configuration is created by selecting groups waiting in the queue. A group will never be split between teams. Keep this in mind, as groups larger than the max size for teams in a queue will not be able to find matches.
Rules
Difference Rule
Specifies a maximum difference between groups either at a match level (all groups) or a team level.
Attribute
The attribute to compare. This can be any attribute that is present on the matchmaking group specified when joining the queue.
Difference
Maximum difference that can exist between groups for the specified group attribute.
Scope
The scope of the rule. "Match" will compare the differences for all groups in the match. "Team" will compare the differences for groups within the same team.
Seconds Until Optional
The amount of time in seconds until this rule no longer applies. Use this to loosen rule restrictions.
Example: Skill Based Matchmaking
Assuming a DifferenceRule with attribute set to "skill".
Match Set Rule
Compares sets of values looking for a minimum number of similarities. Useful for findings groups that share: favorite maps, purchased content, game modes, etc.
Attribute
The attribute to compare. This can be any attribute containing an array of strings that is present on the matchmaking group specified when joining the queue.
Minimum Size
Minimum number of elements required to be matching between groups (set intersection).
Seconds Until Optional
The amount of time in seconds until this rule no longer applies. Use this to loosen rule restrictions.
Example: Selected Map Modes
Assuming a MatchSetRule with attribute set to "favoriteMaps" and difference set to 1.
String Equality
Requires that all groups in the specified scope (match or team) have the same value for an attribute. With scope = match, this is useful for restricting a match to a certain type of player (eg. diamond rank) With scope = team, this is useful for clan based matchmaking, location vs. location, etc.
Attribute
The attribute to compare. This can be any attribute containing a string that is present on the matchmaking group specified when joining the queue.
Minimum Size
Minimum number of elements required to be matching between groups (set intersection).
Scope
The scope of the rule. "Match" will require equality for all groups in a match. "Team" will require equality for all groups on a specific team, other teams may have different values (can be required to be different with the property Other Teams Should Be Different
)
Other Teams Should Be Different
When Scope = Team, used to require that no teams in a match share the same team equality value. This is useful for clan based matchmaking where you want Clan A vs. Clan B and want to ensure A and B are not the same value.
Seconds Until Optional
The amount of time in seconds until this rule no longer applies. Use this to loosen rule restrictions.
Example: Clan Based Matchmaking
Assuming a StringEquality rule with attribute set to "clan", scope set to "team" and other teams should be different set to true:
Team Fixed Roles
Requires each player on a team be assigned a role. Useful in role based game modes. Players can be automatically assigned a role if none is specified with the property Automatically Assign Roles
Teams
The teams that this rule applies to.
Attribute
The attribute where the role will be specified. This can be any attribute containing a string that is present on the matchmaking Player
specified when joining the queue.
Match Roles
Name: The name of the role that will be present for a player "dps", "healer", etc. Quantity: The number of this role that should be present for a team.
Automatically Assign Roles
When a player doesn't already have a role assigned, automatically assign them a role based on whatever roles are not already filled. This can be useful if some players haven't selected the role they want to play or if you want the matchmaker to automatically assign roles to players.
Seconds Until Optional
The amount of time in seconds until this rule no longer applies. Use this to loosen rule restrictions.
Example: Role Based Matches
Assuming a TeamFixedRoles Rule with Attribute set to "role", match roles set to dps: 1, healer: 1, and Automatically Assign Roles
checked.
Team Size Balance
Used to limit the difference between team sizes in a match. Since teams can have variable minimum and maximum sizes based on expansion rules, this rule prevents creating matches where the size difference between the teams in a match is too large.
Difference
The maximum size difference between two teams.
Seconds Until Optional
The amount of time in seconds until this rule no longer applies. Use this to loosen rule restrictions.
No attributes are specified at a group / player level for this rule.
Region Latency (Coming Soon)
Last updated