Si está desarrollando para XBOX, la versión v.0 es la versión predeterminada disponible en el GDK a partir del GDK 2510. Los títulos que aprovechan las API v1.0+ pueden hacerlo tanto para PC (v1.0+) como para consola (v2.2+) integrándose con el paquete NuGet Microsoft.GameInput. Se requiere el GDK 2510 o posterior para usar este paquete NuGet con la consola. Las aplicaciones de PC requieren que el paquete redistribuible de GameInput más reciente, que se incluye en el paquete NuGet, esté instalado en la máquina de destino. Las aplicaciones de consola deben compilarse y vincularse con el encabezado y la biblioteca de GameInput más recientes del paquete NuGet, pero no requieren el paquete redistribuible, ya que el entorno de ejecución de GameInput más reciente se incluye con la imagen del GDK en XBOX.
Actualización del entorno de ejecución y de la versión de la API
Las diferentes versiones de GameInput tienen nombres y métodos de aspecto similar, pero tienen versiones diferenciadas con distintos UUID. A partir de la API de GameInput v.1, cada versión se define en un espacio de nombres único (por ejemplo,GameInput::v1). Los mismos objetos subyacentes de GameInput implementan estas interfaces. Puede usar QueryInterface para cambiar entre versiones, lo que significa que puede mezclar el uso de las API en su juego si lo desea.
Si está actualizando desde GameInput v.0, donde la API se definía en el espacio de nombres global, es posible que agregar una instrucción using namespace GameInput::v1 ayude a reducir el número de puntos de llamada a GameInput que necesita actualizar para adoptar la v.1 y las revisiones posteriores de la API.
Además de las comprobaciones de versión en tiempo de ejecución, puede usar la compilación condicional comprobando la definición de preprocesador GAMEINPUT_API_VERSION. Esta definición corresponde a la versión de la API de GameInput actualmente en uso, así como a la versión principal de GameInput. La API v.0 no incluía esta definición, por lo que si quiere comprobar condicionalmente esta versión, puede agregar el siguiente fragmento después de la inclusión del encabezado de GameInput.
Actualización solo del entorno de ejecución
GameInput le permite obtener las correcciones de errores más recientes sin obligarle a actualizar su uso de la API. Para obtener estas correcciones de errores, instale el paquete redistribuible de GameInput incluido en el paquete NuGet Microsoft.GameInput más reciente. Dado que GameInput mantiene la compatibilidad binaria con las versiones anteriores de la API, puede seguir usando su encabezado existente con el nuevo entorno de ejecución. Recuerde redistribuir los binarios de GameInput más recientes con sus títulos para garantizar que la funcionalidad en su entorno de pruebas sea coherente con la de producción.Cambios de GameInput v.1
Si está usando una versión anterior de GameInput, tenga en cuenta que muchas funciones no implementadas y las enumeraciones y constantes correspondientes se eliminan a partir de la API v.1. Además, la API se coloca en el espacio de nombresGameInput::v1
para facilitar el control de versiones. Debido a estos cambios, podría experimentar
errores de compilación al compilar ese código con esta versión (y las futuras).
Los cambios destacados incluyen:
-
IGameInputDevice::GetDeviceInfodevolvía anteriormente la estructuraIGameInputDeviceInforesultante como valor de retorno de la función. Esta estructura ahora se devuelve como parámetro de salida en la función, y el valor de retorno de la función ahora es unHRESULT. -
IGameInput::UnregisterCallbacktomaba anteriormente un valor de tiempo de espera como segundo parámetro, pero este parámetro se ha eliminado. -
IGameInputReading::GetSequenceNumberse ha eliminado. UseIGameInputReading::GetTimestampen su lugar.
Sugerencias sobre el control de versiones
- El cambio en la superficie de la API utilizable entre v.0 y v.1 es mínimo, con la eliminación de la funcionalidad que nunca se implementó, junto con los cambios de firma de función descritos anteriormente.
- La API v.0 original del encabezado
GameInput.horiginal sigue siendo compatible, pero esa API permanece estática. En este caso, seguiría usando el encabezado tal cual desde el GDK, un paquete NuGet más antiguo o el SDK de Windows. - Sea cual sea la versión de la API que use, debe instalar el paquete redistribuible más reciente del paquete NuGet durante el desarrollo, e incluir ese paquete redistribuible (o uno más reciente) como parte del proceso de instalación de su juego para los usuarios finales. Este paquete redistribuible es donde existe la implementación más reciente del entorno de ejecución de GameInput, y mejora todas las versiones de la API con aspectos como una compatibilidad ampliada con mandos, compatibilidad con trackpad, compatibilidad con escritorio remoto y otras diversas correcciones de errores.
