More information
A joinable multiplayer experience is one where players can intentionally play together. Examples include, but aren’t limited to, directly joining another player, sending and receiving invites, private lobbies, and password-protected experiences. If a user is no longer in an experience that supports joining, the user must not appear as available for joining, so titles must clear the advertised activity when the player is no longer joinable. When a user joins a game session but the experience is no longer joinable by that user for any reason, the title must either:- Ask the user to wait until the next opportunity to jump in.
- Give the user a clear message explaining the reason for the join failure.
Invitations
Platform invitations sent from the XBOX shell must always be available for joinable sessions. In-game invitations are recommended but aren’t a hard requirement; a title isn’t required to offer an in-game invite mechanism before a player can invite others through the shell. When a title does provide an in-game invite mechanism, that mechanism must route the invitation through the XBOX platform so the recipient receives it through the XBOX shell notification. A title may restrict who can send invitations (for example, only the host or team captain) and may present a subset of the player’s XBOX friends. Titles that are joinable only within a franchise, club, or clan may scope invitations accordingly.Implementation guidance and best practices
Use the Multiplayer Activity (MPA) feature to advertise joinable activities and to send and accept invitations, and keep the activity up to date with player counts, joinability state, and restrictions. Don’t mix MPA with the legacy Multiplayer Session Directory (MPSD) for the same purpose, because maintaining both can create duplicate records and join conflicts. Clear the activity whenever the session becomes non-joinable, and use the XBOX platform invitation APIs so that platform and in-game invitations behave consistently.Certification test cases
064-01 Joining a game session from outside the game
Configuration- Two XBOX Profiles
- Device 1 Profile A - Friends with Profile B
- Device 2 Profile B - Friends with Profile A
- When the console enters Connected Standby by being turned off with the power mode set to Instant-on.
- When the game remains out of focus for ten minutes. For example, launching an application such as Settings and keeping it in focus for ten minutes.
- Using Profile A, create a joinable game session.
- Using Profile B not running the title, access the Friends List via the XBOX shell interface and verify that the Profile A is listed as joinable.
- It is possible that some games may only support private multiplayer sessions and therefore not appear as joinable for Profile B, in which case please jump to step 6.
- Profile B join Profile A’s game.
- Confirm that both profiles are placed into the game experience together.
- Repeat steps 1-4 with Profile B while the title is in a suspended state on a console, and while the system is in Sleep or Hibernate on a PC.
- Repeat steps 1-5 but this time, instead of Profile B joining through the Friends List, have Profile A send a game invite via the system shell to Profile B and make sure Profile B can receive, accept, and join Profile A.
User B must be able to join user A’s game and progress into the game experience together. For games that only support private multiplayer sessions and therefore do not appear as joinable for Profile B, it is acceptable for invites to be the only mechanism to join Profile A. For multiplayer game sessions that only support joining the session via matchmaking (e.g. ranked matches), it is acceptable to not support joining via the XBOX shell interface. For titles that support cross-platform multiplayer, users must be able to join between an XBOX One Console and PC. Pass examples
- Both profiles are placed into the game experience together.
- User B is able to join user A’s game and progress into the game experience together.
- User A does not appear as joinable in the Friends List via the XBOX shell interface because the game only supports private multiplayer sessions, however user A can send user B a game invitation via the system shell.
- User A does not appear as joinable and is unable to send game invites via the XBOX shell interface whilst participating in a session that only supports joining via matchmaking (e.g. ranked matches).
- User B is not able to successfully join User A’s game and is not placed in the game experience.
- User A does not appear as joinable in the Friends List via the XBOX shell interface because the game only supports private multiplayer sessions, and user A cannot send user B a game invitation via the system shell.
064-02 Joining a game session from the same game
Configuration- 2 XBOX Profiles
- Device 1 Profile A - Friends with Profile B
- Device 2 Profile B - Friends with Profile A
- Using Profile A, launch the title and create a joinable game session within the title.
- Using Profile B, launch the same title and enter some experience within the title.
- Using Profile B, access the Friends List via the XBOX shell interface and select to join Profile A’s game.
- It is possible that some games may only support private multiplayer sessions and therefore do not appear as joinable for Profile B, in which case please jump to step 5.
- Confirm that both profiles are placed into the game experience together.
- Repeat steps 1-4 but this time instead of Profile B joining through the Friends List via the XBOX shell interface, have Profile A send a game invite via the system shell to Profile B and make sure Profile B can receive, accept, and join Profile A.
User B must be able to join user A’s game and progress into the game experience together. For games that only support private multiplayer sessions and therefore do not appear as joinable for Profile B, it is acceptable for invites to be the only mechanism to join Profile A. For multiplayer game sessions that only support joining the session via matchmaking (e.g. ranked matches), it is acceptable to not support joining via the XBOX shell interface. For titles that support cross-platform multiplayer, users must be able to join between an XBOX One Console and PC. Pass examples
- Both profiles are placed into the game experience together.
- User B is able to join user A’s game and progress into the game experience together.
- User A does not appear as joinable in the Friends List via the XBOX shell interface because the game only supports private multiplayer sessions, however user A can send user B a game invitation via the system shell.
- User A does not appear as joinable and is unable to send game invites via the XBOX shell interface whilst participating in a session that only supports joining via matchmaking (e.g. ranked matches).
- User B is not able to successfully join User A’s game and is not placed in the game experience.
- User A does not appear as joinable in the Friends List via the XBOX shell interface because the game only supports private multiplayer sessions, and user A cannot send user B a game invitation via the system shell.
064-03 In-game invitations
This test case applies only to titles that provide an in-game invite mechanism. Configuration- Two XBOX profiles each signed into a different device
- Device 1 profile A - friends with profile B
- Device 2 profile B - friends with profile A
- Sign Users A and B into their respective devices.
- Both users launch the title.
- User A creates a game session and locates the in-game option to send invitations.
- User A sends a game invite to User B.
- Profile B accepts an invite from each of the following areas to join Profile A’s game session.
- Anywhere from the initial boot sequence to the initial interactive state
- The main menu (if featured)
- During single player gameplay (if featured)
- During multiplayer gameplay (if featured)
- While the title is in a suspended state on a console, or in Sleep or Hibernate on a PC, on the main menu (if featured)
- While the title is in a suspended state on a console, or in Sleep or Hibernate on a PC, during single player gameplay (if featured)
- While the title is in a constrained state on the main menu (if featured)
- While the title is in a constrained state during any gameplay (if featured)
- Confirm that both profiles are placed into the game experience together after each invite.
When a title offers an in-game invite mechanism, that mechanism must route the invitation through the XBOX platform so that Profile B receives it through the XBOX shell notification and can join the session hosted by Profile A. It’s acceptable for the title to restrict who can send invites to the session (for example, only team captains in a team game). Because the title can’t stop the invitation or join action from being taken, it isn’t required to ask for confirmation of destructive actions. For titles that support cross-platform multiplayer, users must be able to join sessions via invites between an XBOX One Console and PC. Pass examples
- The in-game invite option routes the invitation through the XBOX platform, and Profile B receives and accepts it through the XBOX shell.
- The player doesn’t receive a confirmation of destructive action message when accepting a game invitation while in-game.
- The invite completes but the session can’t be started/launched when required DLC isn’t present on the device. This is clearly messaged to the player.
- Only the host of the game session can send invitations, if it’s clear who the host is.
- The in-game invite mechanism doesn’t route the invitation through the XBOX platform, so Profile B doesn’t receive it through the XBOX shell.
- After accepting a game invitation the active player isn’t taken into the game session to which they were invited.
- The invite doesn’t complete when required DLC isn’t present on the device, and this isn’t messaged to the player.
064-04 Non-joinable game
Configuration- 3 XBOX profiles each signed into a different device
- Device 1 Profile A - Friends with Profiles B & C
- Device 2 Profile B - Friends with Profile A
- Device 3 Profile C - Friends with Profile A
- Using Profile A, launch the title and create a joinable game session.
- Using Profile A, invite profiles B and C to the game.
- Using Profile A, enter a game session so there is only one remaining slot after A joins.
- Using Profile B, accept the invite.
- Confirm Profiles A & B are playing together.
- Using Profile C, accept the invite and attempt to join the game session.
Profile C is asked to wait until the next opportunity to jump in or Profile C is messaged the reason for the failure to join the game session. Pass examples
- Profile C is asked to wait until the next opportunity to jump in.
- Profile C is messaged the reason for the failure to join the game session.
- Profile C is not asked to wait until the next opportunity to jump in and Profile C is not messaged for the failure to join.
