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 tirent parti des API v1.0+ peuvent le faire tant sur PC (v1.0+) que sur console (v2.2+) en intégrant le package NuGet Microsoft.GameInput. Le GDK 2510 ou ultérieur est requis pour utiliser ce package NuGet sur console. Les applications PC nécessitent que le plus récent 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 plus récents en-tête et bibliothèque GameInput du package NuGet, mais ne nécessitent pas le composant redistribuable, puisque le plus récent runtime GameInput est inclus dans l’image du GDK sur XBOX.
Mise à niveau du runtime et de la version de l’API
Les différentes versions de GameInput ont des noms et des méthodes semblables, mais elles sont versionnées distinctement 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). Les mêmes objets sous-jacents de GameInput implémentent ces interfaces. Vous pouvez utiliser QueryInterface pour passer d’une version à l’autre, ce qui signifie que vous pouvez combiner les utilisations de l’API dans votre jeu si vous le souhaitez.
Si vous effectuez une mise à niveau à partir de 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 que vous devez 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 voulez tester cette version de façon conditionnelle, vous pouvez donc ajouter l’extrait suivant après l’inclusion de votre en-tête GameInput.
Mise à niveau du runtime seulement
GameInput vous permet d’obtenir les plus récents 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 plus récent package NuGet Microsoft.GameInput. Comme GameInput demeure 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 plus récents binaires GameInput avec vos titres pour garantir que le fonctionnement dans votre environnement de test est cohérent avec celui en production.Modifications de GameInput v.1
Si vous utilisez une version antérieure de GameInput, notez que de nombreuses fonctions non implémentées ainsi que les énumérations et constantes correspondantes sont retirées à partir de l’API v.1. De plus, l’API est placée dans l’espace de nomsGameInput::v1
afin de faciliter la gestion des versions. En raison de ces modifications, vous pourriez rencontrer
des erreurs de compilation lors de la compilation de ce code avec cette version (et les versions
futures). Les modifications notables comprennent :
-
IGameInputDevice::GetDeviceInforetournait auparavant la structureIGameInputDeviceInforésultante comme valeur de retour de la fonction. Cette structure est maintenant retournée comme paramètre de sortie de la fonction, et la valeur de retour de la fonction est maintenant unHRESULT. -
IGameInput::UnregisterCallbackacceptait auparavant une valeur de délai d’expiration comme deuxième paramètre, mais ce paramètre est retiré. -
IGameInputReading::GetSequenceNumberest retiré. Utilisez plutôtIGameInputReading::GetTimestamp.
Conseils sur la gestion des versions
- Le changement de la surface d’API utilisable entre v.0 et v.1 est minime : il s’agit du retrait de fonctionnalités qui n’ont jamais été implémentées et des modifications de signatures de fonctions décrites précédemment.
- L’API v.0 d’origine provenant de l’en-tête
GameInput.hd’origine est toujours prise en charge, mais cette API demeure statique. Dans ce cas, vous continueriez à utiliser l’en-tête tel quel provenant du GDK, d’un ancien package NuGet ou du Windows SDK. - Peu importe la version de l’API que vous utilisez, vous devez installer le plus récent composant redistribuable 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 se trouve 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.
