Fonctionnalités clés
Les principales fonctionnalités de l’API Multiplayer Manager sont les suivantes.- Gestion simplifiée des sessions et du matchmaking des services XBOX
- Modèle de programmation basé sur les états et sur les événements
- Respect des pratiques exemplaires des services XBOX et conformité aux XR multijoueurs
- Implémentation des organigrammes du Multijoueur 2015
- Les grandes sessions MPSD (plus de 100 membres) ne sont pas prises en charge.
- Elle cible uniquement les conceptions multijoueurs hébergées par un pair. Les titres disposant de serveurs dédiés doivent plutôt utiliser le service Multiplayer Activity ou les API du service Multijoueur et les appels de service à service (rubrique sous NDA).
Pour réussir la certification, votre jeu doit tout de même implémenter les événements requis pour le multijoueur en ligne.
Vue d’ensemble
Multiplayer Manager s’articule autour des concepts clés suivants.- Session de salon : session persistante utilisée pour gérer les utilisateurs locaux de l’appareil et les amis invités qui souhaitent jouer ensemble. Le groupe peut jouer au jeu; par exemple, sur plusieurs manches, cartes et niveaux. La session de salon suit ce groupe d’amis principal (y compris les joueurs locaux de l’appareil). En général, ce groupe se forme pendant que l’hôte parcourt les menus et discute avec les membres du groupe pour choisir le mode de jeu auquel ils souhaitent jouer.
- Session de jeu : suit les joueurs qui jouent à une instance spécifique du jeu. Par exemple, une course, une carte ou un niveau. Vous pouvez créer une session de jeu au moyen de XblMultiplayerManagerJoinGameFromLobby, qui inclut les membres de la session de salon. Lorsqu’un membre accepte une invitation, il est ajouté au salon et à la session de jeu (s’il reste de la place). D’autres joueurs peuvent être ajoutés à la session de jeu si le matchmaking est activé, mais ces joueurs supplémentaires ne sont pas ajoutés à la session de salon. Cela signifie qu’à la fin de la partie, les joueurs de la session de salon restent ensemble, contrairement aux joueurs supplémentaires issus du matchmaking.
- XblMultiplayerManagerMember : représente un utilisateur individuel connecté sur un appareil local ou distant.
- XblMultiplayerManagerDoWork : garantit le maintien de mises à jour correctes de l’état du jeu entre le titre et le service Multijoueur des services XBOX. Pour garantir des performances optimales, XblMultiplayerManagerDoWork doit être appelée fréquemment, par exemple une fois par trame. XblMultiplayerManagerDoWork vous fournit un tableau d’événements de rappel XblMultiplayerEvent que le jeu doit gérer.
Machine à états
L’appel de XblMultiplayerManagerDoWork est nécessaire pour garantir que votre état reste à jour. Pour que Multiplayer Manager puisse effectuer son travail, vous devez appeler régulièrement la méthode XblMultiplayerManagerDoWork. Le moyen le plus fiable consiste à l’appeler au moins une fois par trame. XblMultiplayerManagerDoWork retourne rapidement lorsqu’elle n’a aucun travail à effectuer; il n’y a donc pas lieu de craindre de l’appeler trop souvent.Threads
Aucun des objets retournés par l’API Multiplayer Manager ne doit être considéré comme thread-safe. L’API vous laisse toutefois le contrôle de la synchronisation des threads si vous l’appelez depuis plusieurs threads. La bibliothèque dispose d’une protection interne contre les accès multithread. Vous devez toutefois implémenter votre propre verrouillage si un thread doit accéder à des valeurs; par exemple, parcourir la liste des membres alors qu’un autre thread est susceptible d’appeler XblMultiplayerManagerDoWork.Mise à jour du modèle basé sur les états
Multiplayer Manager gère un modèle basé sur les états qui met à jour les sessions en arrière-plan lorsque des joueurs rejoignent ou quittent la partie, ou lorsque des sessions sont mises à jour. Pour éviter les problèmes de synchronisation entre le thread de l’interface utilisateur et le thread de votre jeu, Multiplayer Manager ne met pas à jour l’état des sessions visible par l’application tant que vous n’appelez pas la méthode XblMultiplayerManagerDoWork. Traditionnellement, vous receviez des notifications d’événements, comme des modifications de session, sur un thread d’arrière-plan, puis vous deviez les synchroniser avec un thread d’interface utilisateur pour afficher ces modifications. Avec Multiplayer Manager, ce travail en coulisses est effectué à votre place. Vous pouvez appeler XblMultiplayerManagerDoWork sur votre thread principal au moment de votre choix pour obtenir le dernier instantané de l’état que Multiplayer Manager met en mémoire tampon pour vous en coulisses.Événements et notifications
Multiplayer Manager définit un ensemble d’événements importants (voir XblMultiplayerEvent) et en informe le titre au moyen de la méthode XblMultiplayerManagerDoWork lorsqu’ils se produisent. Par exemple, les événements comprennent l’arrivée ou le départ de joueurs distants, la modification des propriétés des membres ou le changement d’état de la session. Toutes les API Multiplayer Manager sont asynchrones. La méthode XblMultiplayerManagerDoWork retourne une liste d’événements lorsque ces opérations asynchrones sont terminées. Votre titre doit gérer ces événements de manière appropriée en fonction de votre situation. Pour plus de détails, consultez la documentation de la classe XblMultiplayerEvent. Chaque XblMultiplayerEvent retourné inclut unEventArgsHandle, que vous devez utiliser pour obtenir les args appropriés au type d’événement.
Par exemple, si le XblMultiplayerEventType est MemberJoined, vous pouvez appeler XblMultiplayerEventArgsMembersCount et XblMultiplayerEventArgsMembers.
L’exemple suivant illustre l’utilisation de XblMultiplayerManagerDoWork pour gérer les événements.
API C plat
- XblMultiplayerEvent
- XblMultiplayerEventArgsMembers
- XblMultiplayerEventArgsMembersCount
- XblMultiplayerEventArgsPropertiesJson
- XblMultiplayerEventType
- XblMultiplayerManagerDoWork
- XblMultiplayerManagerMember
Scénarios
Cette section couvre des scénarios courants et les API que vous appelleriez dans chacun d’eux. Elle fournit également des informations sur ce que fait Multiplayer Manager en coulisses.- Permettre de jouer à une partie multijoueur avec des amis à l’aide de Multiplayer Manager
- Trouver une partie multijoueur avec SmartMatch à l’aide de Multiplayer Manager
- Envoi d’invitations de jeu à l’aide de Multiplayer Manager
- Gestion de l’activation de protocole pour démarrer une partie à l’aide de Multiplayer Manager
Ce que Multiplayer Manager ne fait pas
Multiplayer Manager facilite grandement l’implémentation des scénarios multijoueurs et vous dispense de gérer certaines données. Toutefois, Multiplayer Manager ne gère pas les éléments suivants :- Les jeux sur serveur en ligne persistants, comme les jeux en ligne massivement multijoueurs (MMO) ou d’autres types de jeux nécessitant de grandes sessions (plus de 100 joueurs dans une session)
- La gestion des sessions de serveur à serveur
- La limitation des appels au MPSD afin de respecter la limitation du débit granulaire
- Le mélange des API du service Multijoueur et des API Multiplayer Manager
Multiplayer Manager n’est limité à aucune technologie réseau spécifique et doit fonctionner avec n’importe quelle couche de communication réseau.
Ressources
Pour un exemple fonctionnel de l’API, consultez l’exemple NetRumble. Pour la documentation de l’API, consultez multiplayer_manager_c. Vous pouvez également consulter le fichier d’en-têtemultiplayer_manager_c.h.
Si vous avez des questions, des commentaires ou des problèmes d’utilisation de Multiplayer Manager, communiquez avec votre gestionnaire de compte développeur (DAM) ou publiez un fil de soutien sur les forums à l’adresse https://forums.xboxlive.com.