Pourquoi devrais-je fonder le code d’entrée de mon titre sur GameInput?
GameInput est une plateforme d’entrée pouvant être mise à jour. En l’utilisant, Windows peut mieux abstraire la variété de périphériques d’entrée offerts sur le marché et continuer d’améliorer la prise en charge de ces périphériques au fil du temps grâce aux mises à jour de la plateforme. En utilisant GameInput, votre titre sera automatiquement mis à jour pour fonctionner avec les nouveaux périphériques au fil des versions de Windows et du matériel. De plus, GameInput donne accès à de nouvelles fonctionnalités auparavant non disponibles sur Windows, comme les gâchettes à impulsion, et offre une meilleure prise en charge de fonctionnalités comme la rétroaction haptique et les capteurs. En utilisant GameInput, votre titre peut tirer parti de ces fonctionnalités avec un minimum de modifications du code.Quelles plateformes GameInput prend-il en charge?
GameInput est disponible sur :- XBOX (v.1+ à partir du GDK 2510)
- Windows 10 (version 19H1/mise à jour de mai 2019 et ultérieures)
- Windows 11
Ai-je besoin de versions différentes pour XBOX et PC?
Non, la même API GameInput fonctionne sur toutes les plateformes. À partir du GDK 2510, la plus récente API GameInput est disponible sur XBOX et sur PC, avec les mêmes en-têtes et binaires fournis dans le package NuGet Microsoft.GameInput. Le programme d’installation de GameInput n’est requis que sur PC, puisque le runtime est inclus avec le GDK sur XBOX.GameInput fonctionne-t-il avec les moteurs couramment utilisés comme Unreal Engine?
Oui, bien que le niveau d’intégration varie selon le moteur. Certains moteurs offrent une prise en charge native de GameInput sous forme de plug-in du moteur, tandis que d’autres reposent sur un exemple ou un plug-in natif que vous intégrez vous-même.- Unreal Engine : la prise en charge de GameInput est fournie avec le moteur sous forme d’un ensemble de plug-ins, à partir d’Unreal Engine 5.4. Game Input Base fournit les fonctionnalités et l’interface de base, Game Input (Windows) les implémente pour Win64 et WinGDK, et XBOX Common Game Input les implémente pour XBOX One et XBOX Series X|S. Activez ces plug-ins dans votre projet pour acheminer les entrées par GameInput sur PC et sur console. Pour plus d’informations, consultez Plug-ins Microsoft GDK pour Unreal Engine.
- Godot : l’exemple XBOX Godot comprend une GDExtension qui lie GameInput à Godot, notamment en reliant GameInput aux systèmes
InputetInputMapde Godot. Il s’agit d’une intégration de référence que vous compilez et adaptez à votre projet plutôt que d’une fonctionnalité intégrée au moteur. Pour plus d’informations, consultez Bien démarrer avec Godot. - Unity : aucun package Microsoft GDK n’expose actuellement GameInput à Unity sur PC, de sorte que les jeux Unity sur PC lisent généralement les entrées au moyen du Unity Input System. Sur XBOX Series X|S et XBOX One, le package GXDK Input System pour Unity ajoute des fonctionnalités propres à la console au Unity Input System. Pour plus d’informations, consultez Packages GDK pour Unity.
Mon application ne trouve pas GameInput : que dois-je vérifier?
- Vérifiez que le runtime GameInput est installé sur l’ordinateur cible. Pour les versions v.1 et ultérieures, cela nécessite un package Microsoft.GameInput, que l’utilisateur peut installer à partir du package MSI inclus dans le package NuGet Microsoft.GameInput. Pour installer la plus récente version du package, vous pouvez aussi exécuter
winget install Microsoft.GameInputà partir d’une invite de commandes avec élévation de privilèges. - Assurez-vous que votre application est liée à la bonne bibliothèque GameInput. La plus récente version du package NuGet garantit que votre projet utilise le bon binaire GameInput sur les différents points de terminaison et plateformes.
- Vérifiez que votre version de Windows prend en charge GameInput (19H1 ou ultérieure).
Est-il difficile de porter du code de XInput vers GameInput?
De nombreuses fonctions XInput correspondent directement à des équivalents GameInput, ce qui simplifie le portage de l’un vers l’autre. La principale différence est que GameInput utilise des interfaces C++ plutôt que des fonctions C plates. GameInput offre aussi des fonctionnalités supplémentaires non disponibles dans XInput, comme l’accès aux gâchettes à impulsion des manettes XBOX One et d’autres périphériques similaires.Comment porter du code à partir de DirectInput ou de Raw Input?
GameInput fournit un chemin d’interface dans la structure GameInputDeviceInfo. Ce champ est le même que celui utilisé par l’API DirectInput, ce qui permet aux applications de continuer à utiliser leur code DirectInput existant pour l’énumération des périphériques et la récupération d’informations tout en migrant la lecture des entrées et d’autres fonctionnalités vers GameInput. Pour plus de détails, consultez le Guide de portage vers GameInput.À quoi sert le service GameInput?
Le service GameInput est responsable de l’arbitrage de l’accès aux périphériques d’entrée du système et de la fourniture de couches de compatibilité et d’abstraction utiles aux autres applications. Entre autres, le service GameInput :- Gère le filtrage et la synchronisation des entrées
- Fournit les mises à jour de la plateforme et les améliorations des pilotes de périphériques
- Assure la médiation de l’accès aux périphériques d’entrée entre les instances clientes de GameInput
Puis-je appeler GameInput à partir de mon thread de rendu?
Oui, presque toutes les fonctions GameInput peuvent être utilisées en toute sécurité dans des contextes sensibles au temps comme les threads de rendu. La principale exception estGameInputCreate, que vous devriez appeler lors de l’initialisation de l’application.
