Matchmaking

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 Oculus Platform feature, for a gameplay session.

This topic provides a conceptual overview of matchmaking and its various features. For steps to integrate matchmaking into your app, see How to Implement Simple, Advanced and Browse Matchmaking.

How Matchmaking Works

When you set up matchmaking, you use 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

As mentioned previously, you start adding matchmaking to your app by defining one or more matchmaking pools. 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.

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.

Topic Guide

Following are topics contained in this section:

TopicDescription
Matchmaking APIDescribes the APIs needed to complete matchmaking tasks
How to Implement Simple, Advanced and Browse MatchmakingDetailed steps that describe how to implement simple, advanced and browse matchmaking in a game.
Skill, Data Settings and Queries for MatchmakingDescribes how to add skill components, data settings and queries to your matchmaking implementation.
Testing and TuningDescribes how to use advance tuning to affect user matches.