For more information on the deprecation of this API, click here.
Third-party solutions, such as Photon, can be used as an alternative to implement matchmaking in your app. For an example of how Photon, and other third-party solutions integrate with the Platform API, check here.
Matchmaking places users together in a shared playing experience. User matching can be done by common skill or other criteria that you define, or you can configure matchmaking so that users can browse and find their own matches.
The goal of matchmaking is to place users together in Rooms, another Meta Horizon platform feature, for a gameplay session.
This is a Platform SDK feature requiring Data Use Checkup
To use this or any other Platform SDK feature, you must complete a Data Use Checkup (DUC). The DUC ensures that you comply with Developer Policies. It requires an administrator from your organization to certify that your use of user data aligns with platform guidelines. Until the app review team reviews and approves your DUC, platform features are only available for test users.
How Matchmaking Works
A high level overview of the matchmaking feature follows:
Set up matchmaking, in the developer dashboard to create and associate one or more matchmaking pools with your app.
When you create the pool, you provide some basic criteria for matches.
When a user asks to be matched, you call an API to enqueue them in a matchmaking pool.
Other users that meet the same criteria will be placed in the same pool.
The system evaluates the potential matches in a pool and assigns them match a quality value from 0 and 1, with 1 being a perfect match. Ping time between the users, skill level and other user data is considered when determining the quality value. When the match quality value exceeds a predetermined match threshold, a match is made. The longer a user is in a matchmaking pool, the match threshold reduces so that the a user is more likely to get matched. For more about how the system matches users and tuning the system, see the Advanced Tuning section.
When users are matched by the system they are placed in a matchmaking room, together with other matched users for a gameplay session. The matchmaking room hosts and manages the game play session. For the simplest match scenarios, the matchmaking service creates rooms when it has matched users.
For more complex scenarios you can use the matchmaking APIs to allow users to create rooms or browse rooms that have already been created. Ultimately, you can configure pools and rooms and use the matchmaking APIs to enable a number of game playing scenarios.
Matchmaking Pools and Rooms
Add matchmaking to your app by defining one or more matchmaking pools in the Developer Dashboard. Use the pool settings to define the number of users per matchmaking session, the connectivity requirements, and other high-level matchmaking criteria. In addition, you can create skill components and associate them with matchmaking pools. Skill components consider a user’s cumulative skill level when making matches.
If you create multiple pools for the same app, each pool will have a separate queue of users. Users in different pools cannot be matched. The matchmaking mode and other options you select when you create a pool determines who can create rooms and how users are matched.
The following are some matchmaking scenarios and the options you should choose in the matchmaking section of the developer dashboard:
System matches for 2-4 users that all join at the same time
Choose No for Should Pool Manage Rooms?. This means the system manages a pool of users looking for matches, and rooms are created for players once a match has been made. Simple Matchmaking is designed for 2-4 player games, like chess, checkers or tennis, where users don’t need the ability to join matches in progress. For more information how to set up simple matchmaking , see the Simple Matchmaking section of the Matchmaking How-to.
System matches for user-created rooms, and the ability to join/leave games in progress
Choose Yes for Should Pool Manage Rooms?, and both Users and System for Who can create rooms? This means the system manages a pool of users looking for matches and a list of rooms for that pool, where each room might have different matchmaking settings. You configure whether rooms are created by the user, by the matchmaking service, or both. Advanced matchmaking is designed for more complicated games with multiple match options, and where users may join, or leave, during the course of a match. For more information about how to set up an advanced match, see the Advanced Matchmaking section of the Matchmaking How-to.
System manages a pool of rooms that can be browsed by users.
Choose Yes for Should Pool Manage Rooms?, and Users for Who can create rooms?. This results in a pool of rooms. Users can create and host rooms or choose from a list of rooms to join. Browse also supports more complicated games with multiple match options and users may join and leave a match in progress. For more information about how to set up a browse scenario, see the Browse section of the Matchmaking How-to.
Skill Component
Regardless of the matchmaking pool mode, you can always add a skill component to your matchmaking pool. You do this by first creating a skill component and then applying it to your matchmaking pool. A skill component is reusable across matchmaking pools. For more information about skill components, see Adding Skill Matches section of the Skill and Queries topic.
Data Settings and Queries
For more advanced matchmaking, you can configure data settings that apply to each pool, and use those data settings to set up queries and filter for the best matches. You can learn more about data settings and queries in the Skill, Data Settings and Queries topic.
Advanced Tuning
As mentioned previously, every potential match is assigned a value between 0 and 1. A value of 0.5 is considered to be a marginal match, while 0.9 an excellent match. A successful match occurs when a match value is is greater than or equal to a match threshold. At enqueue time, the default match threshold for a pool is 1.0 (perfect match), but the threshold will decrease to 0.5 over the default ramp down period of 30 seconds. When you first set up matchmaking, you should use the default threshold and rampdown values, but once you have sufficient data, you can use the advance tuning settings to configure the match quality value and how quickly the match threshold decreases in your matchmaking pool. See the Testing and Tuning topic to learn more.
Additional Topics
Read the following topics to learn more about matchmaking: