> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Utilisateurs et périphériques d'entrée

> Utilisateurs et périphériques d'entrée

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 quelques concepts clés qui vous aident à gérer ces associations et à répondre
à ce type de questions.

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

Que vous développiez un nouveau titre Microsoft Game Development Kit (GDK) ou que vous portiez un titre existant de l'ERA XBOX One, l'implémentation de la gestion des utilisateurs et des périphériques d'entrée peut prêter à confusion si vous êtes habitué au modèle utilisateur de l'ERA 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 via un appel à [XUserAddAsync](/fr/reference/system/xuser/functions/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 précédemment associé à un utilisateur du titre est associé à un utilisateur que le titre
  ne connaît pas, le titre est uniquement 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 est associé à un autre utilisateur qui n'a pas non plus été
  ajouté avec [XUserAddAsync](/fr/reference/system/xuser/functions/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 système ou
  [XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync)).

<Note>L'exemple UserManagement couvre la gestion des utilisateurs et le comportement d'association des périphériques d'entrée
dans une grande variété de situations de jeu. Il gère également les exigences XR relatives aux utilisateurs
et aux périphériques d'entrée. Pour plus d'informations sur les exemples, consultez
[Exemples du Microsoft Game Development Kit](/fr/home/setup-install/samples).</Note>

## 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 dans la session de jeu. L'ID local est utilisable dans
tous les processus que le jeu lance ou si le jeu
appelle [XLaunchNewGame](/fr/reference/system/xgame/functions/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](/fr/reference/system/xuser/functions/xusergetlocalid).

## Comment identifier un périphérique d'entrée particulier

Les périphériques de jeu, tels que les manettes, les sticks arcade et les volants, possèdent tous un
*ID de périphérique* unique représenté par une structure [APP\_LOCAL\_DEVICE\_ID](/fr/reference/system/xuser/structs/app_local_device_id).
Cet ID de périphérique est conservé d'un lancement du jeu à l'autre et lors
des 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](/fr/reference/input/xinputongameinput/functions/xinputgetdeviceid).

Si vous utilisez [GameInput](/fr/build/core-features/common/input/overviews/input-overview), vous pouvez obtenir l'ID de périphérique à partir du
membre `deviceId` de l'objet [GameInputDeviceInfo](/fr/reference/input/gameinput/structs/gameinputdeviceinfo) renvoyé par
un appel à [IGameInputDevice::GetDeviceInfo](/fr/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo).

## Modèle 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 conservé même lorsque
plusieurs utilisateurs sont autorisés à se connecter. Le titre doit également permettre de changer l'utilisateur principal si
nécessaire. Une méthode pour y parvenir consiste à proposer une invite *Changer d'utilisateur* qui ouvre un sélecteur de compte
avec [XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync).

Le sélecteur de compte répertorie tous les utilisateurs qui se sont déjà connectés sur 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
manière.

Les titres Microsoft Game Development Kit (GDK) n'ont pas une connaissance complète des utilisateurs du système. Les utilisateurs ne peuvent être
ajoutés à un titre que via un appel à [XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync). Les utilisateurs ajoutés de cette manière sont les
seuls avec lesquels le titre peut interagir. Le système n'informe pas le titre des actions effectuées pour
les utilisateurs que le titre n'a pas ajoutés. Par conséquent, le titre doit tenir sa propre liste d'utilisateurs.

Le sélecteur de compte peut être ouvert de deux façons différentes : depuis le Guide système et via
[XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync). Ce sélecteur se comporte différemment dans ces deux cas :

| Cas | Sélecteur de compte de [XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync) | Sélecteur de compte du Guide |
| - | - | - |
| Sélection d'un utilisateur qui ne s'est pas connecté au titre | L'utilisateur est connecté à la fois au système et au titre. | L'utilisateur est uniquement connecté au système. Le titre n'est pas informé de la connexion. |
| Sélection d'un utilisateur déjà connecté au titre | L'utilisateur est déjà connecté au titre ; aucune autre modification de l'état de l'utilisateur ne se produit. | L'utilisateur est déjà connecté au titre ; aucune autre modification de l'état de l'utilisateur ne se produit. |

<Note>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.
En revanche, le système peut avoir des utilisateurs que le titre ne connaît pas.</Note>

Les événements utilisateur peuvent être gérés via un [XUserChangeEventCallback](/fr/reference/system/xuser/functions/xuserchangeeventcallback) inscrit
avec [XUserRegisterForChangeEvent](/fr/reference/system/xuser/functions/xuserregisterforchangeevent). Les événements ne sont appelés que pour
les utilisateurs connectés avec [XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync). Lorsqu'un utilisateur se déconnecte du
système, le titre doit réagir en conséquence et soit supprimer l'utilisateur du titre, soit permettre au joueur
d'essayer de reconnecter l'utilisateur.

## Associations de 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 aux utilisateurs. Cela peut
poser problème lors du portage de titres plus anciens qui supposent un mappage 1:1 entre utilisateurs et périphériques.

Les associations de périphériques sont généralement effectuées via le sélecteur de compte. Le périphérique d'entrée qui sélectionne l'utilisateur dans
l'interface utilisateur est associé à cet utilisateur. Les associations peuvent également changer dans d'autres cas, par exemple lorsqu'un
utilisateur est déconnecté ou lorsque [XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync) est utilisé sans interface utilisateur via les
options [AddDefaultUserSilently](/fr/reference/system/xuser/enums/xuseraddoptions) et [AddDefaultUserAllowingUI](/fr/reference/system/xuser/enums/xuseraddoptions).

Le sélecteur de compte se comporte également différemment pour les associations selon la façon dont il a été ouvert :

| Cas | Sélecteur de compte de [XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync) | Sélecteur de compte du Guide |
| - | - | - |
| Sélection d'un utilisateur qui ne s'est pas connecté au titre | Une fois l'utilisateur connecté au titre, le périphérique qui a validé l'invite est associé à l'utilisateur. | L'utilisateur est connecté au système (s'il ne l'est pas déjà) et le périphérique qui a validé l'invite est associé à cet utilisateur. Comme le titre ne connaît pas cet utilisateur, il est informé que le périphérique n'est pas associé. |
| Sélection d'un utilisateur déjà connecté au titre | Le périphérique qui a validé l'invite est associé à l'utilisateur du système et du titre. | Le périphérique qui a validé l'invite est associé à l'utilisateur du système et du titre. |

Si l'utilisateur a été automatiquement connecté au titre sans sélecteur de compte par un appel à
[XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync) utilisant l'une des options [AddDefaultUserSilently](/fr/reference/system/xuser/enums/xuseraddoptions) ou
[AddDefaultUserAllowingUI](/fr/reference/system/xuser/enums/xuseraddoptions), les associations de périphériques d'entrée dont disposait le système
sont communiquées au titre.

Pour être averti des modifications d'association de périphériques des utilisateurs, vous pouvez inscrire un rappel
[XUserDeviceAssociationChangedCallback](/fr/reference/system/xuser/functions/xuserdeviceassociationchangedcallback) avec la
méthode [XUserRegisterForDeviceAssociationChanged](/fr/reference/system/xuser/functions/xuserregisterfordeviceassociationchanged). Vous pouvez
également appeler [XUserFindForDevice](/fr/reference/system/xuser/functions/xuserfindfordevice) pour rechercher l'association d'un périphérique spécifique.

<Note>Comme le titre ne peut connaître que les utilisateurs ajoutés avec
[XUserAddAsync](/fr/reference/system/xuser/functions/xuseraddasync), les rappels et méthodes d'association de périphériques ne peuvent renvoyer que les utilisateurs
que le titre a précédemment ajoutés.</Note>

## Mise en correspondance de l'utilisateur avec un point de terminaison audio par défaut

Des casques ou des microphones sont fréquemment utilisés avec les jeux. Voici quelques
questions importantes à se poser.

* L'utilisateur dispose-t-il d'un casque ? Si oui, quel casque est-il susceptible d'utiliser ?
  Quel est le point de terminaison audio de rendu des communications par défaut ?

* Un microphone est-il associé à l'utilisateur ? Quel est le
  point de terminaison de capture des communications par défaut ?

Pour répondre à ces questions pour un utilisateur spécifique, les jeux peuvent appeler
[XUserGetDefaultAudioEndpointUtf16](/fr/reference/system/xuser/functions/xusergetdefaultaudioendpointutf16). Tout comme les associations
utilisateur-périphérique peuvent changer, les points de terminaison audio par défaut associés à un
utilisateur spécifique peuvent également changer. Pour détecter ces modifications d'association, les jeux
doivent appeler [XUserRegisterForDefaultAudioEndpointUtf16Changed](/fr/reference/system/xuser/functions/xuserregisterfordefaultaudioendpointutf16changed) et surveiller
le rappel qui en résulte.


## Related topics

- [Étiquettes de fonctionnalités d'accessibilité](/fr/build/game-principles/accessibility/accessibility-feature-tags.md)
- [XR-112 Établissement d'un utilisateur et d'une manette pendant l'activation initiale et la reprise](/fr-CA/publishing/certification/xr/xr-112.md)
- [XBOX Requirements pour les jeux XBOX](/fr/publishing/certification/xbox-requirements.md)
- [Exigences XBOX testées lors de la certification pour les jeux sur console XBOX](/fr/publishing/certification/console-cert-tested-requirements.md)
- [Exigences XBOX pour les jeux XBOX](/fr-CA/publishing/certification/xbox-requirements.md)
