¿Por qué debería basar el código de entrada de mi título en GameInput?
GameInput es una plataforma de entrada actualizable. Al usarla, Windows puede abstraer mejor la variedad de dispositivos de entrada disponibles en el mercado y seguir mejorando la compatibilidad con esos dispositivos con el tiempo mediante actualizaciones de la plataforma. Al usar GameInput, su título se actualizará automáticamente para funcionar con nuevos dispositivos a través de las versiones de Windows y de hardware. Además, GameInput proporciona acceso a características más recientes que antes no estaban disponibles en Windows, como los gatillos de impulso, y una mejor compatibilidad con características como los hápticos y los sensores. Al usar GameInput, su título puede aprovechar estas características con cambios mínimos en el código.¿Qué plataformas admite GameInput?
GameInput está disponible en:- XBOX (V.1+ a partir del GDK 2510)
- Windows 10 (versión 19H1/actualización de mayo de 2019 y posteriores)
- Windows 11
¿Necesito versiones diferentes para XBOX y PC?
No, la misma API de GameInput funciona en todas las plataformas. A partir del GDK 2510, la API de GameInput más reciente está disponible tanto en XBOX como en PC, con los mismos encabezados y binarios proporcionados en el paquete NuGet Microsoft.GameInput. El instalador de GameInput solo es necesario para PC, ya que el entorno de ejecución se incluye con el GDK en XBOX.¿Funciona GameInput con motores de uso común como Unreal Engine?
Sí, aunque el nivel de integración varía según el motor. Algunos motores incluyen compatibilidad propia con GameInput como complemento del motor, mientras que otros dependen de un ejemplo o de un complemento nativo que usted mismo integra.- Unreal Engine: la compatibilidad con GameInput se incluye con el motor como un conjunto de complementos, a partir de Unreal Engine 5.4. Game Input Base proporciona la funcionalidad principal y la interfaz, Game Input (Windows) la implementa para Win64 y WinGDK, y XBOX Common Game Input la implementa para XBOX One y XBOX Series X|S. Habilite estos complementos en su proyecto para enrutar la entrada a través de GameInput tanto en PC como en consola. Para obtener más información, consulte Complementos del Microsoft GDK para Unreal Engine.
- Godot: el ejemplo de Godot para XBOX incluye una GDExtension que vincula GameInput con Godot, incluida la conexión de GameInput con los sistemas
InputeInputMapde Godot. Se trata de una integración de referencia que usted compila y adapta para su proyecto, en lugar de una característica integrada del motor. Para obtener más información, consulte Introducción a Godot. - Unity: actualmente ningún paquete del Microsoft GDK expone GameInput a Unity en PC, por lo que los juegos de Unity en PC normalmente leen la entrada a través del sistema de entrada de Unity. En XBOX Series X|S y XBOX One, el paquete GXDK Input System para Unity agrega funcionalidad específica de consola al sistema de entrada de Unity. Para obtener más información, consulte Paquetes del GDK para Unity.
Mi aplicación no encuentra GameInput. ¿Qué debo comprobar?
- Compruebe que el entorno de ejecución de GameInput está instalado en la máquina de destino. Para las versiones v.1 y posteriores, esto requiere un paquete Microsoft.GameInput, que el usuario puede instalar desde el paquete MSI incluido en el paquete NuGet Microsoft.GameInput. Para instalar la versión más reciente del paquete, también puede ejecutar
winget install Microsoft.GameInputdesde un símbolo del sistema con privilegios elevados. - Asegúrese de que su aplicación se vincula con la biblioteca de GameInput correcta. La versión más reciente del paquete NuGet garantiza que su proyecto use el binario de GameInput adecuado en los diferentes puntos de conexión/plataformas.
- Compruebe que su versión de Windows es compatible con GameInput (19H1 o posterior).
¿Qué dificultad tiene portar de XInput a GameInput?
Muchas funciones de XInput se asignan una a una a sus equivalentes de GameInput, lo que simplifica el trabajo de portar de una a otra. La principal diferencia es que GameInput usa interfaces de C++ en lugar de funciones planas de C. GameInput también proporciona funcionalidad adicional no disponible en XInput, como el acceso al gatillo de impulso presente en los mandos de XBOX One y otros dispositivos similares.¿Cómo porto desde DirectInput o Raw Input?
GameInput proporciona una ruta de interfaz como parte de la estructura GameInputDeviceInfo. Este campo es el mismo que usa la API de DirectInput, lo que permite a las aplicaciones seguir usando su código de DirectInput existente para la enumeración de dispositivos y la recuperación de información mientras migran la lectura de entrada y otra funcionalidad a GameInput. Para obtener más detalles, consulte la Guía de portabilidad de GameInput.¿Qué hace el servicio de GameInput?
El servicio de GameInput es responsable de arbitrar el acceso a los dispositivos de entrada del sistema y de proporcionar capas útiles de compatibilidad y abstracción para otras aplicaciones. Entre otras cosas, el servicio de GameInput:- Controla el filtrado y la sincronización de la entrada
- Proporciona actualizaciones de la plataforma y mejoras de los controladores de dispositivo
- Media el acceso a los dispositivos de entrada entre las instancias cliente de GameInput
¿Puedo llamar a GameInput desde mi subproceso de representación?
Sí, casi todas las funciones de GameInput son seguras para contextos sensibles al tiempo, como los subprocesos de representación. La principal excepción esGameInputCreate, a la que debe llamar durante la inicialización de la aplicación.
