> ## 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 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](/fr-CA/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 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](/fr-CA/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 du système ou
  [XUserAddAsync](/fr-CA/reference/system/xuser/functions/xuseraddasync)).

<Note>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](/fr-CA/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 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](/fr-CA/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-CA/reference/system/xuser/functions/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](/fr-CA/reference/system/xuser/structs/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](/fr-CA/reference/input/xinputongameinput/functions/xinputgetdeviceid).

Si vous utilisez [GameInput](/fr-CA/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-CA/reference/input/gameinput/structs/gameinputdeviceinfo) retourné par
un appel à [IGameInputDevice::GetDeviceInfo](/fr-CA/reference/input/gameinput/interfaces/igameinputdevice/methods/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](/fr-CA/reference/system/xuser/functions/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](/fr-CA/reference/system/xuser/functions/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](/fr-CA/reference/system/xuser/functions/xuseraddasync). Ce sélecteur se comporte différemment dans ces deux cas :

| Cas | Sélecteur de compte de [XUserAddAsync](/fr-CA/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 seulement 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, donc aucun autre changement d'état de l'utilisateur ne se produit. | L'utilisateur est déjà connecté au titre, donc aucun autre changement d'é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.
Toutefois, le système peut avoir des utilisateurs que le titre ne connaît pas.</Note>

Les événements d'utilisateur peuvent être gérés au moyen d'un [XUserChangeEventCallback](/fr-CA/reference/system/xuser/functions/xuserchangeeventcallback) inscrit
avec [XUserRegisterForChangeEvent](/fr-CA/reference/system/xuser/functions/xuserregisterforchangeevent). Les événements ne sont appelés que pour
les utilisateurs connectés avec [XUserAddAsync](/fr-CA/reference/system/xuser/functions/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](/fr-CA/reference/system/xuser/functions/xuseraddasync) est utilisé sans interface utilisateur au moyen des
options [AddDefaultUserSilently](/fr-CA/reference/system/xuser/enums/xuseraddoptions) et [AddDefaultUserAllowingUI](/fr-CA/reference/system/xuser/enums/xuseraddoptions).

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 :

| Cas | Sélecteur de compte de [XUserAddAsync](/fr-CA/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 répondu à l'invite devient 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 répondu à l'invite est associé à cet utilisateur. Puisque 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 répondu à l'invite devient associé à l'utilisateur du système et du titre. | Le périphérique qui a répondu à l'invite devient associé à l'utilisateur du système et du titre. |

Si l'utilisateur a été automatiquement connecté au titre sans sélecteur de compte au moyen d'un appel à
[XUserAddAsync](/fr-CA/reference/system/xuser/functions/xuseraddasync) utilisant l'une des options [AddDefaultUserSilently](/fr-CA/reference/system/xuser/enums/xuseraddoptions) ou
[AddDefaultUserAllowingUI](/fr-CA/reference/system/xuser/enums/xuseraddoptions), 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](/fr-CA/reference/system/xuser/functions/xuserdeviceassociationchangedcallback) avec la
méthode [XUserRegisterForDeviceAssociationChanged](/fr-CA/reference/system/xuser/functions/xuserregisterfordeviceassociationchanged). Vous pouvez
aussi appeler [XUserFindForDevice](/fr-CA/reference/system/xuser/functions/xuserfindfordevice) pour rechercher l'association d'un périphérique précis.

<Note>Puisque le titre ne peut connaître que les utilisateurs ajoutés avec
[XUserAddAsync](/fr-CA/reference/system/xuser/functions/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.</Note>

## 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](/fr-CA/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 précis peuvent aussi changer. Pour détecter ces changements d'association, les jeux
doivent appeler [XUserRegisterForDefaultAudioEndpointUtf16Changed](/fr-CA/reference/system/xuser/functions/xuserregisterfordefaultaudioendpointutf16changed) et porter attention
au 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)
