Passer au contenu principal

Puis-je combiner les services Multiplayer Activity (MPA) et Multiplayer Session Directory (MPSD) dans mon titre?

Non, il n’est pas possible de combiner des appels MPA et MPSD dans un titre. Les titres doivent choisir le service à utiliser en fonction des exigences fonctionnelles.

Comment accéder à l’API Multiplayer Session Directory (MPSD) depuis un service?

Pour plus d’informations, consultez Gestion des sessions multijoueurs de service à service.

Mon titre peut-il s’abonner aux modifications de plusieurs sessions?

Oui, un titre peut s’abonner pour recevoir les modifications de 10 sessions au maximum par connexion.

Un joueur est-il retiré immédiatement s’il perd sa connexion réseau ou éteint sa console?

La connexion web socket permet à Multiplayer Session Directory (MPSD) de détecter rapidement la déconnexion d’un client et de définir ce client sur Inactive. Les membres de la session sont retirés dès que le délai d’expiration de suppression des membres inactifs est écoulé. Pour plus d’informations, consultez la section Délais d’expiration des sessions de la rubrique « Rubriques avancées sur les sessions multijoueurs ».

Comment déterminer l’ID de configuration de service (SCID), le modèle de session et la sandbox à utiliser?

Si vous n’avez pas participé à l’inscription initiale de votre titre, au cours de laquelle ces informations ont été créées, vous n’y avez pas directement accès. Communiquez avec votre gestionnaire de compte développeur (DAM), qui pourra obtenir ces données pour vous.

Disposez-vous d’un exemple de corps de requête que je peux comparer à celui de mon titre?

Consultez la structure de requête dans MultiplayerSessionRequest (JSON).

Que faire si j’obtiens un code d’état HTTP 403 lors de l’appel de MPSD?

Il s’agit généralement d’un problème d’autorisations ou d’étendue. Collectez des traces Fiddler pour obtenir plus d’informations, puis recherchez dans les messages retournés dans le corps de HttpResponse les messages 403 courants.
  • “The requested service configuration cannot be accessed.”
    • Vérifiez que vous utilisez un compte qui a accès à la sandbox.
    • Vérifiez que vous vous trouvez dans la bonne sandbox.
    • Si vous utilisez l’authentification par certificat et obtenez cette erreur, communiquez avec votre DAM.
  • “The requested session cannot be accessed. The calling user must have multiplayer privilege, and private sessions can only be read by session members.”
    • Vous n’êtes pas en mesure de voir la session, peut-être parce que vous essayez d’accéder à une session dont la visibilité est Private. Si la visibilité est définie sur Private, seuls les membres de cette session peuvent lire le document de session.
    [!NOTE] Un joueur doit disposer d’un compte XBOX Live Gold pour inscrire une nouvelle session. Sans les privilèges d’un compte Gold, les requêtes d’inscription d’une nouvelle session retournent HTTP 403.
  • “The request body can’t contain existing member references unless the authentication principal includes a server.”
    • Vous ne pouvez pas faire rejoindre une session à un autre joueur en son nom. Vous pouvez seulement l’inviter. Pour inviter un joueur, définissez l’index sur reserve_<number>.

Que faire si j’obtiens un code d’état HTTP 404 lors de l’appel de MPSD?

Collectez des traces Fiddler pour obtenir plus d’informations, puis effectuez les étapes suivantes.
  1. Recherchez dans le message retourné dans le corps de HttpResponse les messages 404 courants, comme les suivants.
    • “The requested service config is either invalid or not configured for sessions.” Assurez-vous d’utiliser le bon SCID.
    • “The requested session wasn’t found.” Assurez-vous que la session a été créée et que le modèle de session est correct avant de la récupérer. Vous pouvez créer une session avec un appel PUT.
  2. Vérifiez l’URI que vous utilisez.
  3. Redémarrez la console ou connectez-vous avec un autre joueur.
  4. Recherchez le code d’erreur ou d’autres solutions dans les forums des développeurs de jeux.
  5. Vérifiez que la session n’a pas été supprimée parce qu’elle était vide. Les sessions peuvent devenir vides parce que les joueurs expirent. Lorsque cela se produit, c’est souvent parce que tous les membres de la session se trouvent dans un état auquel un délai d’expiration s’applique, comme Ready ou Inactive. Pour plus d’informations, consultez la section États des utilisateurs de session de la rubrique « Rubriques avancées sur les sessions multijoueurs ».

Pourquoi est-ce que j’obtiens un code d’état HTTP 404 lors de l’appel de XblMultiplayerWriteSessionByHandleAsync ou de XblMultiplayerGetSessionByHandleAsync?

Si votre titre utilise un handle pour accéder à une session MPSD en réponse à une activation par protocole de jonction contenant un ID de handle, l’ID de handle de l’activation par protocole est peut-être obsolète pour l’une des raisons suivantes.
  • La vue de l’interface utilisateur du shell XBOX à partir de laquelle le titre a lancé la jonction est peut-être obsolète. Certaines vues, comme la carte de profil du joueur, n’actualisent pas automatiquement les handles de jonction tant qu’elles sont ouvertes. Pour éviter de recevoir le code d’état HTTP 404, le titre doit fermer puis rouvrir la vue pour actualiser les données avant la jonction.
  • Le joueur que le titre rejoint a peut-être changé de session d’activité après que le titre a sélectionné l’opération de jonction dans l’interface utilisateur du shell XBOX. Ce cas est rare.
Dans les deux cas, le code de votre titre doit afficher au joueur qui rejoint un message d’erreur indiquant que la jonction a échoué.

Pourquoi est-ce que j’obtiens un code d’état HTTP 412 lors de l’appel de MPSD?

La requête suivante retourne HTTP 412 si la session existe déjà.
La requête suivante retourne HTTP 412 si l’ETag de la session ne correspond pas à l’en-tête If-Match.
Pour plus d’informations, consultez la section Synchronisation des mises à jour de session de la rubrique « Vue d’ensemble de Multiplayer Session Directory ».

Pourquoi est-ce que j’obtiens un code d’état HTTP 400, 405, 409, 503 ou similaire lors de l’appel de MPSD?

Collectez des traces Fiddler pour obtenir plus d’informations, puis vérifiez les messages retournés dans le corps de HttpResponse. Grâce à ces informations, vous devriez pouvoir identifier et corriger l’erreur. Sinon, recherchez des solutions dans les forums des développeurs. Vous pouvez également obtenir le corps de la réponse si vous utilisez XBOX Services API (XSAPI), comme décrit dans Résolution des problèmes liés à XBOX Services API. Votre code peut aussi utiliser HCTraceSetClientCallback pour envoyer la sortie vers l’interface utilisateur de votre titre.

Que puis-je ou dois-je modifier dans les modèles de session de mon titre?

Les modèles de session sont des patrons pour vos sessions, et vous ne pouvez pas remplacer les constantes déjà définies dans les modèles. Vous pouvez cependant ajouter de nouvelles propriétés aux modèles. Pour plus d’informations, consultez Modèles de session multijoueur et Vue d’ensemble de Multiplayer Session Directory.

Pourquoi est-ce que j’obtiens une erreur indiquant que ma session n’est pas initialisée?

Voici un exemple du message d’erreur que vous pouvez recevoir. 400 - \[ResponseBody\]: This session is configured for managed initialization requiring at least 2 members to start. La session ne peut pas être créée, car la requête n’inclut pas suffisamment de réservations de membres de session dont le champ initialize est défini sur true. Votre code peut définir ce champ pour un membre à l’aide du paramètre initializeRequested de XblMultiplayerSessionAddMemberReservation ou de XblMultiplayerSessionJoin. Lorsque l’initialisation est spécifiée dans votre modèle de session, assurez-vous que "initialize": true est défini pour suffisamment de réservations de membres afin de satisfaire les exigences de qualité de service (QoS) du matchmaking. Pour plus d’informations, consultez Initialisation de la session cible et QoS.

Pourquoi ma session n’est-elle pas créée lorsque j’obtiens un code d’état HTTP 204?

Ce code d’état indique qu’aucun joueur n’a été ajouté à la session lors de sa création. Si aucun joueur ne se trouve dans la session au moment de sa création et que le délai d’expiration de session vide est zéro (valeur par défaut), la session n’est pas créée. Assurez-vous d’inclure au moins un joueur lors de la création d’une session. Pour les scénarios de serveur dédié, obtenez un joueur qui essaie de créer un match ou qui doit en créer un, et faites de ce joueur le joueur initial du match. Vous pouvez également modifier ou supprimer le délai d’expiration de session vide. Pour plus d’informations, consultez la section Délais d’expiration des sessions de la rubrique « Rubriques avancées sur les sessions multijoueurs ».

Quand dois-je interroger MPSD?

Vos titres doivent éviter d’interroger régulièrement MPSD. Si un titre doit détecter des modifications des sessions MPSD, il doit s’abonner aux événements de modification de session. Pour plus d’informations, consultez la section S’abonner aux notifications de modification de session MPSD de la rubrique « Tâches multijoueurs ».

Puis-je utiliser XblMultiplayerQuerySessionsAsync pour implémenter le parcours des sessions ou le matchmaking?

La méthode XblMultiplayerQuerySessionsAsync est destinée à des appels peu fréquents pour faciliter le débogage. En raison des limitations du service, les résultats de session de cette API ne sont pas en temps réel et peuvent être incomplets lorsqu’elle est appelée plus fréquemment. Pour implémenter une fonctionnalité de parcours des sessions, consultez la section « Handles de recherche » de Parcours des sessions multijoueurs. Pour implémenter le matchmaking, consultez Utilisation du matchmaking SmartMatch.

Que se passe-t-il si un joueur réservé ou invité à une session ne la rejoint pas?

Cela dépend de si le titre est en cours d’exécution lorsque le joueur est informé que la session de jeu est prête. Si le joueur se trouve dans le titre et n’accepte pas la notification de session de jeu depuis l’interface utilisateur du titre, il incombe au titre de retirer le joueur de la session de jeu à l’aide de la méthode XblMultiplayerSessionLeave. Si le titre est contraint ou n’est pas en cours d’exécution, le shell affiche une notification qui informe le joueur qu’un emplacement est disponible. Si le joueur refuse ou ignore la notification système, MPSD retire ce joueur de la session de jeu.

Pourquoi une session créée ne serait-elle pas trouvée par le matchmaking?

Sur XBOX One, la simple création d’une session ne suffit pas pour que le matchmaking trouve la nouvelle session. Vous devez créer un ticket de match pour commencer à annoncer la session au service de matchmaking. Pour plus d’informations, consultez Vue d’ensemble du matchmaking.

Si une session de jeu a des emplacements de joueur libres et prend en charge la jonction en cours de partie, pourquoi les joueurs ne pourraient-ils pas trouver la session après son démarrage?

Lorsqu’une session de jeu démarre, elle n’est plus annoncée sur le service de matchmaking. Si des emplacements de joueur se libèrent dans la session et que l’arbitre (hôte) souhaite attirer de nouveaux joueurs, l’arbitre doit créer un nouveau ticket de match pour la session en cours en appelant la méthode XblMatchmakingCreateMatchTicketAsync. Le ticket annonce à nouveau la session et permet de trouver d’autres joueurs. Pour plus d’informations, consultez Vue d’ensemble du matchmaking.

Si une session de jeu est ouverte, un joueur qui vient de rejoindre une partie peut-il simplement rejoindre la session et commencer à jouer sans attendre la réservation?

Oui. C’est particulièrement utile lorsque votre titre utilise plusieurs sessions pour suivre des sous-groupes de joueurs au sein d’une session de jeu. Le joueur qui rejoint peut rejoindre la session qui représente son groupe, puis devoir rejoindre la session de jeu plus large.

Lorsque de grandes sessions de jeu sont en cours dans mon titre, pourquoi tous les membres de la session ne voient-ils pas la notification d’invitation de jeu?

Lorsque votre titre ajoute un joueur à la session par jonction, il définit toujours le membre InitializeRequested de XblMultiplayerSessionMember sur true. Cela indique à MPSD d’attendre les autres membres de la session avant de faire sortir la partie de l’étape d’initialisation. Sinon, les joueurs disposent d’un temps très court pour rejoindre la session et peuvent manquer les notifications de modification de session.
Dernière modification le 8 octobre 2026