Skip to main content
Si vous développez pour XBOX, la version v.0 est la version par défaut disponible dans le GDK à partir du GDK 2510. Les titres qui utilisent les API v1.0+ peuvent le faire à la fois sur PC (v1.0+) et sur console (v2.2+) en intégrant le package NuGet Microsoft.GameInput. Le GDK 2510 ou une version ultérieure est requis pour utiliser ce package NuGet sur console. Les applications PC nécessitent que le dernier composant redistribuable GameInput, inclus dans le package NuGet, soit installé sur l’ordinateur cible. Les applications console doivent être compilées et liées avec les derniers en-tête et bibliothèque GameInput du package NuGet, mais ne nécessitent pas le composant redistribuable, car le dernier runtime GameInput est inclus dans l’image du GDK sur XBOX.
GameInput est une API vivante qui continue d’évoluer au fil du temps, à mesure que de nouvelles fonctionnalités sont ajoutées et que celles devenues inutiles ou obsolètes sont supprimées. Vous trouverez la version la plus récente de GameInput dans le package NuGet officiel. Ce package inclut également l’historique des versions le plus récent. Le package contient toujours les derniers en-tête, binaires et composant redistribuable GameInput à inclure avec votre titre. La mise à niveau vers une version plus récente de GameInput est rapide et simple. De plus, quelle que soit l’API décrite dans le dernier en-tête GameInput, la compatibilité binaire et fonctionnelle est maintenue pour les applications compilées avec des versions antérieures de GameInput. Dans ce modèle, les jeux déjà publiés peuvent bénéficier des améliorations de GameInput et peuvent être migrés vers la dernière version de GameInput, si nécessaire, pour profiter des nouvelles fonctionnalités.

Mise à niveau du runtime et de la version de l’API

Les différentes versions de GameInput ont des noms et des méthodes similaires, mais sont versionnées de manière distincte avec des UUID différents. À partir de l’API GameInput v.1, chaque version est définie dans un espace de noms unique (par exemple, GameInput::v1). Ce sont les mêmes objets sous-jacents de GameInput qui implémentent ces interfaces. Vous pouvez utiliser QueryInterface pour passer d’une version à l’autre, ce qui signifie que vous pouvez combiner différentes utilisations de l’API dans votre jeu si vous le souhaitez. Si vous effectuez une mise à niveau depuis GameInput v.0, où l’API était définie dans l’espace de noms global, l’ajout d’une instruction using namespace GameInput::v1 peut vous aider à réduire le nombre de sites d’appel GameInput à mettre à jour pour adopter la v.1 et les révisions ultérieures de l’API. En plus des vérifications de version au moment de l’exécution, vous pouvez utiliser la compilation conditionnelle en vérifiant la définition de préprocesseur GAMEINPUT_API_VERSION. Cette définition correspond à la version de l’API GameInput actuellement utilisée ainsi qu’à la version majeure de GameInput. L’API v.0 ne comportait pas cette définition ; si vous souhaitez tester cette version de manière conditionnelle, vous pouvez donc ajouter l’extrait suivant après l’inclusion de l’en-tête GameInput.

Mise à niveau du runtime uniquement

GameInput vous permet d’obtenir les derniers correctifs de bogues sans vous obliger à mettre à jour votre utilisation de l’API. Pour obtenir ces correctifs, installez le composant redistribuable GameInput fourni dans le dernier package NuGet Microsoft.GameInput. Comme GameInput reste compatible au niveau binaire avec les anciennes versions de l’API, vous pouvez continuer à utiliser votre en-tête existant avec le nouveau runtime. N’oubliez pas de redistribuer les derniers binaires GameInput avec vos titres pour garantir que le fonctionnement dans votre environnement de test est cohérent avec la production.

Modifications de GameInput v.1

Si vous utilisez une version précédente de GameInput, notez que de nombreuses fonctions non implémentées, ainsi que les énumérations et constantes correspondantes, ont été supprimées de l’API à partir de la v.1. En outre, l’API est placée dans l’espace de noms GameInput::v1 pour faciliter la gestion des versions. En raison de ces modifications, vous pourriez rencontrer des erreurs de compilation lors de la génération de ce code avec cette version (et les versions futures). Les modifications notables sont les suivantes :
  1. IGameInputDevice::GetDeviceInfo retournait auparavant la structure IGameInputDeviceInfo résultante comme valeur de retour de la fonction. Cette structure est désormais retournée sous forme de paramètre de sortie de la fonction, et la valeur de retour de la fonction est désormais un HRESULT.
  2. IGameInput::UnregisterCallback prenait auparavant une valeur de délai d’expiration comme deuxième paramètre, mais ce paramètre a été supprimé.
  3. IGameInputReading::GetSequenceNumber a été supprimé. Utilisez IGameInputReading::GetTimestamp à la place.

Conseils de gestion des versions

  • Le changement de la surface d’API utilisable entre la v.0 et la v.1 est minime : il se limite à la suppression de fonctionnalités qui n’ont jamais été implémentées, ainsi qu’aux modifications de signatures de fonctions décrites précédemment.
  • L’API v.0 d’origine, issue de l’en-tête GameInput.h d’origine, est toujours prise en charge, mais elle reste figée. Dans ce cas, vous continuerez à utiliser l’en-tête tel quel à partir du GDK, d’un ancien package NuGet ou du Windows SDK.
  • Quelle que soit la version de l’API que vous utilisez, vous devez installer le dernier composant redistribuable à partir du package NuGet pendant le développement, et inclure ce composant redistribuable (ou une version plus récente) dans le processus d’installation de votre jeu pour les utilisateurs finaux. C’est dans ce composant redistribuable que réside l’implémentation la plus récente du runtime GameInput, qui améliore toutes les versions de l’API avec notamment une prise en charge étendue des manettes, la prise en charge des pavés tactiles, la prise en charge du Bureau à distance et divers autres correctifs de bogues.

Voir aussi

Package NuGet GameInput
Last modified on October 6, 2026