Skip to main content
Les jeux doivent savoir quels périphériques d’entrée sont associés à un utilisateur donné. C’est essentiel pour répondre aux questions suivantes :
  • Qui a effectué une action dans le jeu?
  • Qui obtient le succès?
  • Qui effectue l’achat?
Cette rubrique présente certains concepts clés qui vous aident à gérer ces associations et à répondre à ce genre de questions.

Différences de modèle d’utilisateur entre l’ERA de XBOX One et le Microsoft Game Development Kit (GDK)

Que vous développiez un nouveau titre avec le Microsoft Game Development Kit (GDK) ou que vous portiez un titre antérieur de l’ERA de XBOX One, la mise en œuvre de la gestion des utilisateurs et des périphériques d’entrée peut être déroutante lorsqu’on est habitué au modèle d’utilisateur de l’ERA de XBOX One.
  • Les titres qui ont besoin d’utilisateurs, par exemple lorsque des sauvegardes de jeu ou des succès sont nécessaires, doivent établir un utilisateur principal. Cet utilisateur principal est une construction propre au titre et n’est pas fourni par le système.
  • Le titre ne connaît que les utilisateurs ajoutés au moyen d’un appel à XUserAddAsync. Le titre n’est informé d’aucune action effectuée par le système pour les utilisateurs qu’il n’a pas ajoutés.
  • Lorsqu’un périphérique qui était auparavant associé à un utilisateur du titre est associé à un utilisateur que le titre ne connaît pas, le titre est seulement informé d’un événement d’association de périphérique, sans nouvel utilisateur.
  • Si un périphérique qui n’était pas associé à un utilisateur du titre devient associé à un autre utilisateur qui n’a pas non plus été ajouté avec XUserAddAsync, le titre n’est pas informé de l’événement d’association.
  • Le sélecteur de compte se comporte différemment selon la façon dont il a été ouvert (guide du système ou XUserAddAsync).
L’exemple UserManagement couvre la gestion des utilisateurs et le comportement de jumelage des périphériques d’entrée dans une grande variété de situations de jeu. Il gère aussi les exigences XR liées aux utilisateurs et aux périphériques d’entrée. Pour plus d’informations sur les exemples, consultez Exemples du Microsoft Game Development Kit.

Comment identifier un utilisateur donné

Les jeux utilisent l’ID local pour interagir avec les périphériques d’entrée. L’ID local est un identificateur qui reste associé à l’utilisateur pendant toute sa durée de vie au sein de la session de jeu. L’ID local est utilisable dans tous les processus que le jeu génère ou si le jeu appelle XLaunchNewGame. N’utilisez pas l’ID local pour identifier un utilisateur d’une session de jeu à l’autre. Pour obtenir l’ID local d’un utilisateur, utilisez la fonction XUserGetLocalId.

Comment identifier un périphérique d’entrée particulier

Les périphériques de jeu, comme les manettes, les manettes d’arcade et les volants, ont tous un ID de périphérique unique représenté par une structure APP_LOCAL_DEVICE_ID. Cet ID de périphérique persiste d’un lancement du jeu à l’autre et entre les redémarrages du système. L’ID de périphérique est différent pour deux jeux différents exécutés sur le même système. Si vous utilisez XInput sur la console, vous pouvez obtenir l’ID de périphérique à l’aide de XInputGetDeviceId. Si vous utilisez GameInput, vous pouvez obtenir l’ID de périphérique à partir du membre deviceId de l’objet GameInputDeviceInfo retourné par un appel à IGameInputDevice::GetDeviceInfo.

Modèle d’utilisateur

Lorsqu’un titre a besoin d’utilisateurs, par exemple lorsque des sauvegardes de jeu ou des succès sont nécessaires, le titre est entièrement responsable de l’établissement d’un utilisateur principal. Cet utilisateur principal doit être maintenu même lorsque plusieurs utilisateurs peuvent se connecter. Le titre doit aussi permettre de changer l’utilisateur principal au besoin. Une façon de le faire serait d’offrir une invite Changer d’utilisateur qui ouvre un sélecteur de compte avec XUserAddAsync. Le sélecteur de compte affiche la liste de tous les utilisateurs qui se sont déjà connectés à la console, comporte un bouton Ajouter pour se connecter à de nouveaux comptes et permet de connecter des utilisateurs invités temporaires. N’importe lequel de ces comptes d’utilisateur peut être sélectionné, quelle que soit la véritable identité de l’utilisateur. Le système prend en charge les utilisateurs qui choisissent de jouer en tant que quelqu’un d’autre de cette façon. Les titres du Microsoft Game Development Kit (GDK) n’ont pas une connaissance complète des utilisateurs du système. Les utilisateurs peuvent plutôt seulement être ajoutés à un titre au moyen d’un appel à XUserAddAsync. Les utilisateurs ajoutés de cette façon sont les seuls avec lesquels le titre peut interagir. Le système n’informe pas le titre des actions effectuées pour des utilisateurs que le titre n’a pas ajoutés. Par conséquent, le titre doit maintenir sa propre liste d’utilisateurs. Le sélecteur de compte peut être ouvert de deux façons différentes : à partir du guide du système et au moyen de XUserAddAsync. Ce sélecteur se comporte différemment dans ces deux cas :
L’ensemble des utilisateurs connectés à un titre est toujours un sous-ensemble des utilisateurs connectés au système. Un titre ne peut pas avoir d’utilisateurs connectés que le système n’a pas connectés. Toutefois, le système peut avoir des utilisateurs que le titre ne connaît pas.
Les événements d’utilisateur peuvent être gérés au moyen d’un XUserChangeEventCallback inscrit avec XUserRegisterForChangeEvent. Les événements ne sont appelés que pour les utilisateurs connectés avec XUserAddAsync. Lorsqu’un utilisateur se déconnecte du système, le titre doit réagir en conséquence et soit retirer l’utilisateur du titre, soit permettre au joueur de tenter de reconnecter l’utilisateur.

Associations des périphériques d’entrée

Le Microsoft Game Development Kit (GDK) permet d’associer n’importe quel nombre de périphériques d’entrée à un utilisateur. Cela peut représenter un défi lors du portage de titres plus anciens qui supposent une correspondance 1:1 entre les utilisateurs et les périphériques. Les associations de périphériques sont généralement établies au moyen du sélecteur de compte. Le périphérique d’entrée qui sélectionne l’utilisateur dans l’interface utilisateur devient associé à cet utilisateur. Les associations peuvent aussi changer dans d’autres cas, par exemple lorsqu’un utilisateur est déconnecté ou lorsque XUserAddAsync est utilisé sans interface utilisateur au moyen des options AddDefaultUserSilently et AddDefaultUserAllowingUI. Le sélecteur de compte se comporte aussi différemment en ce qui concerne les associations selon la façon dont il a été ouvert : Si l’utilisateur a été automatiquement connecté au titre sans sélecteur de compte au moyen d’un appel à XUserAddAsync utilisant l’une des options AddDefaultUserSilently ou AddDefaultUserAllowingUI, les jumelages de périphériques d’entrée dont disposait le système sont communiqués au titre. Pour être averti des changements d’association de périphériques des utilisateurs, vous pouvez inscrire un rappel XUserDeviceAssociationChangedCallback avec la méthode XUserRegisterForDeviceAssociationChanged. Vous pouvez aussi appeler XUserFindForDevice pour rechercher l’association d’un périphérique précis.
Puisque le titre ne peut connaître que les utilisateurs ajoutés avec XUserAddAsync, les rappels et méthodes d’association de périphériques des utilisateurs ne peuvent retourner que les utilisateurs que le titre a déjà ajoutés.

Faire correspondre l’utilisateur à un point de terminaison audio par défaut

Les casques d’écoute ou les microphones sont souvent fournis avec les jeux. Voici quelques questions importantes à se poser.
  • L’utilisateur a-t-il un casque d’écoute? Si oui, quel casque utilise-t-il probablement? Quel est le point de terminaison audio de rendu des communications par défaut?
  • L’utilisateur a-t-il un microphone qui lui est associé? Quel est le point de terminaison de capture des communications par défaut?
Pour répondre à ces questions pour un utilisateur précis, les jeux peuvent appeler XUserGetDefaultAudioEndpointUtf16. Tout comme les associations utilisateur-périphérique peuvent changer, les points de terminaison audio par défaut associés à un utilisateur précis peuvent aussi changer. Pour détecter ces changements d’association, les jeux doivent appeler XUserRegisterForDefaultAudioEndpointUtf16Changed et porter attention au rappel qui en résulte.
Last modified on October 6, 2026