Passer au contenu principal
Utilisez cette rubrique pour permettre aux utilisateurs de votre titre d’interroger, à l’aide du parcours des sessions multijoueurs, une liste de sessions de jeu multijoueur ouvertes qui répondent à leurs critères. Le parcours des sessions multijoueurs a été introduit en novembre 2016. Dans un scénario de parcours des sessions, un utilisateur d’un jeu peut récupérer une liste de sessions de jeu qu’il est possible de rejoindre. Chaque entrée de session de cette liste contient des métadonnées supplémentaires sur la partie, qu’un utilisateur peut utiliser pour l’aider à choisir la session à rejoindre. L’utilisateur peut également filtrer la liste des sessions à l’aide de ces métadonnées. Lorsque l’utilisateur voit une session de jeu qui l’intéresse, il peut la rejoindre. Un utilisateur peut également créer une session de jeu et utiliser la fonctionnalité de parcours des sessions pour recruter d’autres utilisateurs plutôt que de s’appuyer sur le matchmaking. Le parcours des sessions multijoueurs et le matchmaking traditionnel sont différents. Avec le parcours des sessions multijoueurs, l’utilisateur choisit la session de jeu qu’il souhaite rejoindre. Avec le matchmaking, l’utilisateur sélectionne une option « trouver une partie » qui tente de le placer automatiquement dans une session de jeu appropriée. Bien que le parcours des sessions multijoueurs soit un processus manuel et plus lent qui ne sélectionne pas toujours la meilleure expérience de jeu pour l’utilisateur, celui-ci dispose d’un meilleur contrôle, et la fonctionnalité de parcours peut être perçue comme le choix de partie subjectivement le meilleur. Il est courant d’inclure à la fois des scénarios de parcours des sessions multijoueurs et de matchmaking dans les jeux. En général, le matchmaking est utilisé pour les modes de jeu les plus joués, tandis que le parcours des sessions multijoueurs est utilisé pour les parties personnalisées.

Exemple de scénario

John souhaite jouer à un jeu multijoueur d’arène de combat, mais il veut une partie dans laquelle tous les utilisateurs sélectionnent leur héros au hasard. À l’aide du parcours des sessions multijoueurs, il peut récupérer une liste de sessions de jeu ouvertes et trouver celles qui incluent « héros aléatoires » dans leur description. Si l’interface utilisateur du titre propose cette option, il peut sélectionner le mode de jeu « héros aléatoire » et récupérer uniquement les sessions marquées comme parties « RandomHero ». Lorsque John trouve une session de jeu qui lui plaît, il peut la rejoindre. Une fois que suffisamment de personnes l’ont rejointe, l’hôte de la session de jeu peut la démarrer.

Rôles

Une session présente dans la fonctionnalité de parcours des sessions multijoueurs peut indiquer qu’elle recrute des utilisateurs pour des rôles spécifiques. Par exemple, un utilisateur peut souhaiter créer une session de jeu qui ne contient pas plus de cinq classes d’assaut, mais qui doit contenir au moins deux rôles de soigneur et au moins un rôle de tank. Lorsqu’un autre utilisateur postule pour la session, il peut présélectionner son rôle. Le service décide alors s’il peut rejoindre la session en fonction du nombre de places disponibles pour le rôle sélectionné. Si un utilisateur souhaite réserver deux places pour que ses amis puissent le rejoindre, il peut désigner un rôle « amis » pour la session, et seuls les utilisateurs amis avec l’hôte peuvent occuper les deux places réservées au rôle « amis ». Pour plus d’informations sur les rôles, consultez Rôles multijoueurs.

Fonctionnement du parcours des sessions multijoueurs

Le parcours des sessions fonctionne à l’aide de handles de recherche. Un handle de recherche est un paquet de données qui contient une référence à la session, ainsi que des métadonnées supplémentaires sur la session, comme les attributs de recherche. Lorsqu’un titre crée une session de jeu éligible au parcours des sessions multijoueurs, il crée un handle de recherche pour la session. Le handle de recherche est stocké dans le Multiplayer Service Directory (MPSD), qui gère les handles de recherche du titre. Lorsqu’un titre doit récupérer une liste de sessions, il peut envoyer une requête de recherche au MPSD, qui retourne une liste de handles de recherche répondant aux critères de recherche. Le titre peut ensuite utiliser la liste des sessions pour afficher à l’utilisateur une liste de parties qu’il est possible de rejoindre. Lorsqu’une session est complète, ou ne peut pas être rejointe pour une autre raison, votre titre peut supprimer le handle de recherche du MPSD afin que la session n’apparaisse pas dans les requêtes de parcours des sessions multijoueurs.
Les handles de recherche sont utilisés pour afficher une liste de sessions à un utilisateur.
N’utilisez pas les handles de recherche pour le matchmaking en arrière-plan. Pour le matchmaking en arrière-plan, nous vous recommandons d’utiliser SmartMatch. Pour plus d’informations, consultez Trouver une partie multijoueur avec SmartMatch à l’aide de Multiplayer Manager.

Configurer une session pour le parcours des sessions multijoueurs

Pour utiliser des handles de recherche pour une session, les propriétés searchable et userAuthorizationStyle de la session doivent être définies sur true. La fonctionnalité userAuthorizationStyle n’est requise que pour les jeux UWP, mais nous vous recommandons de l’implémenter pour tous les jeux XBOX, y compris les jeux Microsoft Game Development Kit (GDK). Cela garantit la portabilité future de votre titre.
Définir userAuthorizationStyle sur true remplace la valeur none des propriétés readRestriction et joinRestriction de la session par local. Cela signifie que les titres doivent utiliser des handles de recherche ou de transfert pour rejoindre une session de jeu.
Vous pouvez définir ces fonctionnalités dans le modèle de session lorsque vous configurez vos services XBOX.
Pour le parcours des sessions multijoueurs, créez des handles de recherche uniquement sur les sessions utilisées pour le jeu proprement dit. Ne les utilisez pas pour les sessions de salon.

Propriété des sessions de jeu

De nombreux types de sessions de jeu, comme SmartMatch ou une session réservée aux amis, ne nécessitent pas d’hôte ni de propriétaire. Toutefois, lors de la configuration de parties de parcours des sessions multijoueurs, vous pouvez souhaiter avoir un propriétaire. Une session gérée par un propriétaire présente certains avantages pour l’hôte, comme la possibilité de retirer d’autres membres de la session ou de modifier le statut de propriétaire d’autres membres. Pour utiliser des propriétaires pour une session, la propriété hasOwners de la session doit être définie sur true. Lorsque vous utilisez des rôles multijoueurs, vous pouvez faire en sorte que seuls les propriétaires puissent attribuer des rôles aux utilisateurs.
Si le propriétaire d’une session a bloqué un membre XBOX, ce membre ne peut pas rejoindre la session.
Si tous les propriétaires quittent une session, le service agit sur la session en fonction de la stratégie ownershipPolicy.migration définie pour celle-ci. Si la stratégie est « oldest », l’utilisateur présent depuis le plus longtemps dans la session devient le nouveau propriétaire. Si la stratégie est « endsession » (valeur par défaut si aucune n’est fournie), le service met fin à la session et en retire tous les utilisateurs restants.

Handles de recherche

Un handle de recherche est stocké dans le MPSD sous la forme d’une structure JSON. Outre une référence à la session, les handles de recherche contiennent également des métadonnées supplémentaires pour les recherches, appelées attributs de recherche. Une session ne peut avoir qu’un seul handle de recherche à la fois. Pour créer un handle de recherche pour une session à l’aide de l’API des services XBOX (XSAPI), appelez la méthode XblMultiplayerCreateSearchHandleAsync.

Attributs de recherche

Les attributs de recherche se composent des éléments suivants.
  • Les tags sont des descripteurs sous forme de chaînes que les utilisateurs peuvent employer pour catégoriser une session de jeu, comme un hashtag.
    • Les tags doivent commencer par une lettre, ne peuvent pas contenir d’espaces et doivent comporter moins de 100 caractères.
    • Exemples de tags : “ProRankOnly”, “norocketlaunchers”, “cityMaps”.
  • Les strings sont des variables de texte.
    • Les noms de chaînes doivent commencer par une lettre, ne peuvent pas contenir d’espaces et doivent comporter moins de 100 caractères.
    • Exemples de métadonnées de chaîne : “Weapons”=“knives+pistols+rifles”, “MapName”=“UrbanCityAssault”, “description”=“Fun casual game, new people welcome.”
  • Les numbers sont des variables numériques. Les XSAPI récupèrent les valeurs numériques sous le type float.
    • Les noms de nombres doivent commencer par une lettre, ne peuvent pas contenir d’espaces et doivent comporter moins de 100 caractères.
    • Exemples de métadonnées numériques : “MinLevel” = 25, “MaxRank” = 10.
La casse des tags et des valeurs de chaîne est conservée dans le service, mais vous devez utiliser la fonction tolower() lorsque vous interrogez des tags. Cela signifie que les tags et les valeurs de chaîne sont actuellement tous traités en minuscules, même s’ils contiennent des majuscules.
Dans les XSAPI, vous pouvez définir les attributs de recherche, comme les tags et les métadonnées, à l’aide de la méthode XblMultiplayerCreateSearchHandleAsync.

Détails supplémentaires

Lorsque vous récupérez un handle de recherche, les résultats incluent également des données utiles sur la session, par exemple si la session est fermée et s’il existe des restrictions d’accès. Dans les XSAPI, ces détails, ainsi que les attributs de recherche, sont inclus dans les résultats XblMultiplayerSearchHandle retournés après une requête de recherche.

Supprimer un handle de recherche

Lorsque vous souhaitez retirer une session du parcours des sessions multijoueurs, par exemple lorsque la session est complète ou fermée, vous pouvez supprimer le handle de recherche. Dans les XSAPI, supprimez un handle de recherche à l’aide de la méthode XblMultiplayerDeleteSearchHandleAsync.

Créer un handle de recherche avec des métadonnées

Le code suivant montre comment créer un handle de recherche pour une session à l’aide des API multijoueurs XBOX.

C plat

Pour plus d’informations sur les fonctions utilisées dans l’exemple de code, consultez multiplayer_c.

Créer une requête de recherche de sessions

Lorsque vous récupérez une liste de handles de recherche, vous pouvez utiliser une requête de recherche pour limiter les résultats aux sessions qui répondent à des critères spécifiques. La syntaxe des requêtes de recherche est une syntaxe de style OData, seuls les opérateurs suivants étant pris en charge.
Vous pouvez également utiliser des expressions lambda et la fonction canonique tolower.
Aucune autre fonction OData n’est actuellement prise en charge. Lorsque vous recherchez des tags ou des valeurs de chaîne, vous devez utiliser la fonction tolower dans la requête de recherche. Le service ne prend en charge que la recherche de chaînes en minuscules. Le service XBOX ne retourne que les 100 premiers résultats correspondant à la requête de recherche. Assurez-vous que les utilisateurs puissent affiner leur requête de recherche si les résultats sont trop larges.
Les instructions OR logiques sont prises en charge dans les requêtes de chaîne de filtre.
Toutefois, un seul OR est autorisé, et il doit se trouver à la racine de votre requête. Vous ne pouvez pas avoir plusieurs instructions OR dans votre requête, ni créer une requête dans laquelle OR ne se trouverait pas au niveau le plus élevé de la structure de la requête.

Exemples de requêtes de handles de recherche

Dans un appel REST, « Filter » est l’endroit où vous spécifiez une chaîne du langage OData Filter qui est exécutée dans votre requête sur tous les handles de recherche. Dans les API multijoueurs 2015, vous pouvez spécifier la chaîne de filtre de recherche à l’aide du paramètre searchFilter de la méthode XblMultiplayerGetSearchHandlesAsync. Les scénarios de filtrage suivants sont actuellement pris en charge.

Actualisation des résultats de recherche

Votre jeu doit éviter d’actualiser automatiquement une liste de sessions. Donnez à l’utilisateur la possibilité d’actualiser manuellement la liste au moyen de l’interface utilisateur. Cela est utile si l’utilisateur affine ses critères de recherche pour mieux filtrer les résultats. Si un utilisateur tente de rejoindre une session complète ou fermée, votre jeu doit également actualiser les résultats de recherche.
Un trop grand nombre d’actualisations de recherche peut entraîner une limitation par le service.
Votre titre doit limiter la fréquence à laquelle la requête peut être actualisée. Pour réduire le volume d’appels au service, les handles de recherche incluent des propriétés de session personnalisées qui peuvent être utilisées pour stocker et interroger des attributs de session qui changent rapidement. Ces attributs ne doivent pas être stockés dans les attributs de recherche.

Rechercher des handles de recherche

Le code suivant montre comment rechercher des handles de recherche. L’API retourne une collection d’objets XblMultiplayerSearchHandle qui représentent tous les handles de recherche correspondant à la requête.

C plat

Pour plus d’informations sur les fonctions utilisées dans l’exemple de code, consultez multiplayer_c.

Rejoindre une session à l’aide d’un handle de recherche

Une fois qu’un utilisateur a récupéré le handle de recherche d’une session qu’il souhaite rejoindre, assurez-vous qu’il peut s’ajouter lui-même à la session à l’aide de XblMultiplayerWriteSessionByHandleAsync.
Les méthodes XblMultiplayerWriteSessionAsync ne peuvent pas être utilisées pour rejoindre une session de parcours des sessions multijoueurs.
Dernière modification le 8 octobre 2026