Vue d’ensemble
XUser est l’API Gaming Runtime permettant de gérer les comptes d’utilisateur XBOX et l’authentification sur toutes les plateformes. Elle fournit une interface unifiée permettant aux jeux de gérer la connexion des utilisateurs, l’identité et les flux utilisateur associés sur les consoles XBOX, les PC et appareils portables Windows, ainsi que sur des plateformes non Microsoft telles que Steam Deck. Dans le cadre de l’initiative multiplateforme du GDK, XUser fournit une surface d’API cohérente sur toutes les plateformes tout en tenant compte des capacités et contraintes propres à chaque environnement.Exigences d’intégration
Pour utiliser XUser dans votre jeu, incluezXUser.h dans vos fichiers sources et effectuez l’édition de liens avec XGameRuntime.lib. La principale différence entre les plateformes réside dans la gestion des dépendances d’exécution :
Consoles XBOX et Microsoft Store / Game Pass sur Windows
Le Gaming Runtime est intégré au système d’exploitation et géré par le Store. Votre jeu utilise automatiquement les services et l’interface utilisateur intégrés du système.Autres boutiques sur Windows
- Les jeux utilisent les services et l’interface utilisateur intégrés du système d’exploitation.
- Le programme d’installation doit exécuter GamingRepair.exe pour garantir que le service Gaming Runtime est installé.
- Incluez l’outil dans le package de votre jeu : il est fourni avec le GDK dans
[GDK]\bin\GamingRepair.exe. - Ajoutez une action personnalisée : exécutez l’outil avant l’installation de votre jeu (par exemple : start /wait “Installing Gaming Services” GamingRepair.exe scenarioExternal). Cela vérifie, télécharge, installe ou répare tous les composants Gaming Runtime manquants.
- Gérez les erreurs : vérifiez le code de sortie de l’outil. En cas d’échec, informez l’utilisateur et fournissez des instructions d’installation manuelle.
Les jeux Steam doivent inclure
XGameRuntime.dll et ses dépendances pour prendre en charge les plateformes où le service système n’est pas disponible (par exemple, Steam Deck).
Sur Steam Deck ou d’autres plateformes non Microsoft, l’outil Gaming Repair ne peut pas être utilisé. À la place, intégrez XGameRuntime.dll et ses dépendances dans le package de votre jeu et placez-les à côté de votre exécutable afin qu’ils puissent être chargés au moment de l’exécution.Différences entre plateformes et API unifiée
Sur XBOX et Windows, le système d’exploitation gère nativement la connexion XBOX Live et la gestion des utilisateurs, en fournissant une interface utilisateur système et un stockage sécurisé des informations d’identification des utilisateurs. XUser s’appuie sur ces services système intégrés sur ces plateformes. Sur d’autres plateformes de jeu, telles que Steam Deck ou des environnements tiers, cette prise en charge native n’existe pas. À partir de la version GDK 2510, XUser a été amélioré pour fonctionner de manière transparente sur ces deux types de plateformes grâce à une API cohérente, avec de nouvelles API et des modèles pilotés par les événements qui permettent aux jeux de fournir l’interface utilisateur et la gestion des données nécessaires lorsque la prise en charge système n’est pas disponible :- Sur les plateformes avec prise en charge native (XBOX, Windows) : XUser utilise les services intégrés du système d’exploitation pour l’authentification, l’interface utilisateur et le stockage des informations d’identification. Les jeux appellent les API XUser et le système gère automatiquement les détails.
- Sur les plateformes sans prise en charge native (Steam Deck, etc.) : XUser expose les mêmes API principales, mais les jeux doivent implémenter des gestionnaires d’événements pour fournir l’interface utilisateur nécessaire (comme l’affichage de codes QR pour la connexion) et le stockage des données. Cela donne aux jeux un contrôle total sur l’expérience d’authentification.
XUserHandle qui représente le joueur et peut être utilisé pour les services prenant en charge l’authentification XBOX (XBOX services, services PlayFab, etc.)
Nouvelles fonctionnalités multiplateformes
Les nouvelles API introduites pour XUser visent à permettre des flux de connexion et une gestion des données indépendants de la plateforme. Les principales fonctionnalités sont les suivantes :Authentification Remote Connect
Permet aux utilisateurs de se connecter avec leur compte XBOX sur un appareil (tel que Steam Deck) à l’aide d’un appareil secondaire. Les utilisateurs peuvent scanner un code QR ou saisir un code à usage unique sur un site web pour terminer l’authentification. Cela est réalisé grâce à de nouveaux gestionnaires d’événements XUser permettant d’afficher et de fermer les invites de connexion par code.Application de session unique (SPoP)
Garantit que les utilisateurs n’exécutent pas le même jeu à plusieurs endroits simultanément. Si un conflit est détecté, les utilisateurs sont invités à choisir entre « jouer ici » ou « changer de compte ». De nouvelles API permettent aux jeux de présenter ce choix et d’y répondre en conséquence.Sur les consoles XBOX et Windows, le système d’exploitation continue de gérer automatiquement la plupart des tâches d’authentification. Le jeu peut ne jamais voir ces événements sur ces plateformes. Toutefois, sur les plateformes autres que XBOX, le jeu peut prendre le contrôle total grâce aux mécanismes de rappel de XUser.
Remote Connect pour la connexion entre appareils
Remote Connect est une fonctionnalité qui permet aux joueurs de se connecter à leur compte XBOX sur un appareil en s’authentifiant via un autre appareil (tel qu’un téléphone ou un PC). Cela se fait généralement au moyen d’un code court ou d’un code QR affiché par le jeu.Fonctionnement
Sur les consoles XBOX, ce « flux par code » est géré automatiquement par l’interface utilisateur système. Toutefois, sur des plateformes comme Steam Deck ou d’autres environnements tiers, il n’existe pas d’interface de connexion XBOX gérée par le système. L’API Remote Connect de XUser permet aux jeux de faciliter directement ce flux.Le flux
-
Inscription du gestionnaire d’événements : le jeu inscrit un gestionnaire d’événements Remote Connect avant de lancer la connexion à l’aide de
XUserPlatformRemoteConnectSetEventHandlers(...). Le titre fournit des rappels pour gérer deux événements clés :- Événement Show : déclenché lorsque XUser a besoin que le jeu affiche le code à usage unique ou le code QR. Le gestionnaire présente une boîte de dialogue ou une superposition avec le code et des instructions (par exemple : « Scannez ce code QR ou rendez-vous sur xbox.com/play et saisissez le code ABCD pour vous connecter »).
- Événement Close : déclenché lorsque le processus de connexion à distance se termine ou est annulé, signalant au jeu de masquer ou de fermer la boîte de dialogue du code.
-
Lancement de la connexion de l’utilisateur : lors de l’appel à
XUserAddAsyncpour ajouter un nouvel utilisateur, si aucun utilisateur local n’est déjà connecté, le système XUser peut utiliser le flux Remote Connect (en particulier sur les plateformes sans affichage ou tierces). -
Affichage du code : XUser appelle le rappel « show », en fournissant le code ou l’URL d’authentification. Le gestionnaire d’interface du jeu (tel que
OnRemoteConnectShow) affiche le code QR ou la chaîne de code à l’utilisateur. - Authentification de l’utilisateur : le joueur utilise son téléphone ou son navigateur web pour se connecter avec le code fourni, liant ainsi son compte XBOX à la session en cours.
-
Achèvement : une fois l’authentification terminée côté serveur, XUser appelle le rappel « close », signalant que le code peut être retiré de l’écran. À ce stade, XUser a obtenu le jeton XBOX Live de l’utilisateur et crée le
XUserHandle. -
Réussite : la tâche
XUserAddAsyncse termine avec succès et l’utilisateur est connecté sans avoir saisi d’informations d’identification directement sur l’appareil.
Implémentation
Pour utiliser Remote Connect, implémentez deux fonctions de rappel et inscrivez-les :XUserAddAsync comme d’habitude pour ajouter un nouvel utilisateur. Dans le gestionnaire OnRemoteConnectShow, récupérez les informations fournies (accessibles via les API XUser, généralement une URL et un code) et affichez-les pour l’utilisateur dans une fenêtre contextuelle ou une superposition. Lorsque OnRemoteConnectClose est appelé, le processus de connexion est terminé et le jeu doit masquer l’invite.
Appelez
XUserPlatformRemoteConnectSetEventHandlers avant d’appeler XUserAddAsync (et généralement avant XUserInitialize) pour garantir que ces événements sont correctement gérés.Considérations relatives à l’expérience utilisateur
Pour offrir une bonne expérience utilisateur :- Instructions claires : expliquez clairement ce que l’utilisateur doit faire lors de l’affichage du code.
- Gestion des erreurs : si l’utilisateur annule côté distant ou si une erreur se produit, XUser fait échouer la tentative de connexion. Gérez ce cas dans le rappel d’achèvement normal de
XUserAddAsync. - Fermeture rapide : masquez le code immédiatement lorsque l’événement de fermeture se produit afin d’éviter toute confusion pour l’utilisateur.
- Conception visuelle : assurez-vous que le code QR et les instructions sont suffisamment grands et clairement visibles sur l’appareil cible.
Application de session unique (SPoP)
L’application de session unique, ou SPoP (Single Point of Presence), est une stratégie qui garantit qu’un même profil utilisateur XBOX Live n’exécute pas le même titre simultanément sur plusieurs appareils. Par exemple, si vous lancez un jeu sur votre PC alors qu’il est déjà en cours d’exécution sous votre compte sur XBOX, l’une des sessions doit être suspendue ou déconnectée afin d’éviter les conflits de sauvegardes et d’autres problèmes. Sur les consoles XBOX, ce scénario déclenche une boîte de dialogue système indiquant à l’utilisateur que le jeu est déjà en cours d’exécution ailleurs et lui demandant s’il souhaite continuer (ce qui le déconnecterait de l’autre appareil). Sur les plateformes non Microsoft, aucun mécanisme intégré ne permet de faire respecter cette règle. L’API d’invite SPoP de XUser permet aux jeux de détecter cette situation et de présenter au joueur le choix « Jouer ici ou Changer de compte ».Fonctionnement
L’API SPoP utilise un modèle de gestionnaire d’événements similaire à celui de Remote Connect. Lorsqu’un conflit de connexion est détecté, XUser appelle le gestionnaire du jeu au lieu d’échouer directement, ce qui permet au jeu de présenter des options à l’utilisateur.Le flux
-
Inscription du gestionnaire d’événements : le jeu inscrit un gestionnaire d’événements d’invite SPoP avant de lancer la connexion à l’aide de
XUserPlatformSpopPromptSetEventHandlers(...). -
Détection des conflits : lors de l’appel à
XUserAddAsyncpour ajouter un utilisateur, si XUser détecte que le même utilisateur est déjà actif ailleurs dans le même titre, il appelle le gestionnaire SPoP. - Affichage de l’invite : le gestionnaire du jeu reçoit le gamertag moderne de l’utilisateur et un handle d’opération. Le gestionnaire doit afficher une invite d’interface utilisateur telle que : « [Gamertag] joue déjà sur un autre appareil. Voulez-vous plutôt jouer ici (ce qui vous déconnectera de l’autre appareil) ou passer à un autre compte ? » avec des options comme « Jouer ici » et « Changer de compte ».
- Choix de l’utilisateur : le jeu attend que l’utilisateur fasse un choix. L’opération reste en attente jusqu’à ce que le jeu appelle l’API d’achèvement.
-
Achèvement de l’opération : en fonction du choix de l’utilisateur, le jeu appelle
XUserPlatformSpopPromptCompleteavec le résultat approprié :- Jouer ici :
XUserPlatformSpopOperationResult::SignInHere: connecte l’utilisateur sur cet appareil et met fin à la session distante. - Changer de compte :
XUserPlatformSpopOperationResult::SwitchAccount: annule la connexion sur cet appareil, ce qui permet à l’utilisateur de choisir un autre compte. - Annuler :
XUserPlatformSpopOperationResult::Canceled: abandonne la tentative de connexion.
- Jouer ici :
-
Résolution : XUser poursuit en fonction du résultat. Si « Jouer ici » a été choisi, la session distante est terminée (l’autre appareil reçoit un événement de déconnexion) et l’utilisateur devient actif localement. Si « Changer de compte » a été choisi,
XUserAddAsyncéchoue et le jeu peut demander un autre compte.
Implémentation
Pour utiliser SPoP, implémentez une fonction de rappel et inscrivez-la :OnSpopPrompt, le jeu reçoit l’identificateur de l’utilisateur et son gamertag moderne. Le gestionnaire doit mettre en pause le déroulement du jeu (puisque la connexion est en attente) et présenter une invite d’interface utilisateur avec les options. Le gestionnaire stocke le handle d’opération et ne le termine pas immédiatement.
Lorsque l’utilisateur fait un choix :
- Appelez
XUserPlatformSpopPromptSetEventHandlersavant d’appelerXUserAddAsyncpour garantir que les conflits sont correctement gérés. - Vous devez appeler
XUserPlatformSpopPromptCompleteexactement une fois pour chaque événement SPoP reçu, sinon la connexion restera bloquée indéfiniment. - Si aucun gestionnaire n’est défini et qu’un conflit se produit,
XUserAddAsyncéchoue avec un code d’erreur, sans donner à l’utilisateur la possibilité de résoudre le conflit correctement.
Considérations relatives à l’expérience utilisateur
Pour offrir une bonne expérience utilisateur :- Message clair : affichez le gamertag de l’utilisateur et expliquez clairement que continuer le déconnectera de l’autre appareil.
- Options visibles : rendez les options « Jouer ici » et « Changer de compte » clairement visibles et compréhensibles.
- Prévention des conflits de sauvegarde : soulignez que cela évite les conflits de sauvegardes et les problèmes de jeu simultané.
- Comportement propre à la plateforme : sur XBOX et Windows, le système d’exploitation gère cela automatiquement et le gestionnaire SPoP n’est jamais appelé. Sur les autres plateformes, il incombe à votre jeu de présenter ce choix.
