Skip to main content

Por que devo basear o código de entrada do meu título no GameInput?

O GameInput é uma plataforma de entrada atualizável. Ao usá-lo, o Windows pode abstrair melhor a variedade de dispositivos de entrada disponíveis no mercado e continuar aprimorando o suporte a esses dispositivos ao longo do tempo por meio de atualizações da plataforma. Ao usar o GameInput, seu título será atualizado automaticamente para funcionar com novos dispositivos por meio de versões do Windows e de hardware. Além disso, o GameInput fornece acesso a recursos mais recentes que antes não estavam disponíveis no Windows, como gatilhos de impulso, e um suporte melhor a recursos como hápticos e sensores. Ao usar o GameInput, seu título pode aproveitar esses recursos com alterações mínimas no código.

Quais plataformas o GameInput suporta?

O GameInput está disponível em:
  • XBOX (V.1+ a partir do GDK 2510)
  • Windows 10 (versão 19H1/atualização de maio de 2019 e posteriores)
  • Windows 11
Embora o GameInput v.0 faça parte do SDK do Windows e do Microsoft Game Development Kit (GDK), compilar com versões mais recentes requer o uso do pacote NuGet, tanto para console quanto para PC. O runtime do GameInput v.1+ está disponível no console a partir do GDK 2510, mas o uso desse runtime requer compilar e vincular com o cabeçalho/biblioteca do pacote NuGet mais recente do GameInput. A versão mais recente da API para PC e console está sempre disponível no pacote NuGet Microsoft.GameInput.

Preciso de versões diferentes para XBOX e PC?

Não, a mesma API do GameInput funciona em todas as plataformas. A partir do GDK 2510, a API mais recente do GameInput está disponível tanto no XBOX quanto no PC, com os mesmos cabeçalhos e binários fornecidos no pacote NuGet Microsoft.GameInput. O instalador do GameInput só é necessário para PC, pois o runtime está incluído no GDK no XBOX.

O GameInput funciona com mecanismos comumente usados, como o Unreal Engine?

Sim, embora o nível de integração varie de acordo com o mecanismo. Alguns mecanismos oferecem suporte próprio ao GameInput como um plug-in do mecanismo, enquanto outros dependem de um exemplo ou de um plug-in nativo que você mesmo integra.
  • Unreal Engine: o suporte ao GameInput é fornecido com o mecanismo como um conjunto de plug-ins, a partir do Unreal Engine 5.4. Game Input Base fornece a funcionalidade e a interface principais, Game Input (Windows) a implementa para Win64 e WinGDK, e XBOX Common Game Input a implementa para XBOX One e XBOX Series X|S. Habilite esses plug-ins no seu projeto para encaminhar a entrada pelo GameInput tanto no PC quanto no console. Para obter mais informações, confira Plug-ins do Microsoft GDK para Unreal Engine.
  • Godot: o XBOX Godot Sample inclui uma GDExtension que vincula o GameInput ao Godot, incluindo a ponte entre o GameInput e os sistemas Input e InputMap do Godot. Trata-se de uma integração de referência que você compila e adapta para o seu projeto, e não de um recurso interno do mecanismo. Para obter mais informações, confira Introdução ao Godot.
  • Unity: atualmente, nenhum pacote do Microsoft GDK expõe o GameInput ao Unity no PC, portanto, os jogos Unity no PC normalmente leem a entrada pelo Unity Input System. No XBOX Series X|S e no XBOX One, o pacote GXDK Input System para Unity adiciona funcionalidades específicas do console ao Unity Input System. Para obter mais informações, confira Pacotes do GDK para Unity.
Se o seu mecanismo não fornecer uma integração com o GameInput, ou se você quiser usar recursos do GameInput que seu mecanismo não expõe, poderá chamar o GameInput diretamente do código nativo usando o pacote NuGet Microsoft.GameInput.

Meu aplicativo não consegue encontrar o GameInput. O que devo verificar?

  1. Verifique se o runtime do GameInput está instalado no computador de destino. Para as versões v.1 e posteriores, isso requer um pacote Microsoft.GameInput, que o usuário pode instalar a partir do pacote MSI incluído no pacote NuGet Microsoft.GameInput. Para instalar a versão mais recente do pacote, você também pode executar winget install Microsoft.GameInput em um prompt de comando com privilégios elevados.
  2. Verifique se o seu aplicativo está vinculado à biblioteca correta do GameInput. A versão mais recente no pacote NuGet garante que seu projeto use o binário correto do GameInput nos diferentes pontos de extremidade/plataformas.
  3. Verifique se a sua versão do Windows suporta o GameInput (19H1 ou posterior).

Qual é a dificuldade de portar do XInput para o GameInput?

Muitas funções do XInput são mapeadas diretamente para equivalentes no GameInput, o que simplifica o trabalho de portar de um para o outro. A principal diferença é que o GameInput usa interfaces C++ em vez de funções C simples. O GameInput também fornece funcionalidades extras não disponíveis no XInput, como acesso ao gatilho de impulso encontrado nos controles do XBOX One e em outros dispositivos semelhantes.

Como faço para portar do DirectInput ou do Raw Input?

O GameInput fornece um caminho de interface como parte da estrutura GameInputDeviceInfo. Esse campo é o mesmo usado pela API DirectInput, permitindo que os aplicativos continuem usando o código DirectInput existente para enumeração de dispositivos e recuperação de informações enquanto migram a leitura de entrada e outras funcionalidades para o GameInput. Para obter mais detalhes, confira o guia de portabilidade do GameInput.

O que o serviço GameInput faz?

O serviço GameInput é responsável por arbitrar o acesso aos dispositivos de entrada no sistema e por fornecer camadas úteis de compatibilidade e abstração para outros aplicativos. Entre outras coisas, o serviço GameInput:
  • Lida com a filtragem e a sincronização da entrada
  • Fornece atualizações da plataforma e melhorias nos drivers de dispositivo
  • Medeia o acesso aos dispositivos de entrada entre instâncias de cliente do GameInput
O instalador garante que o runtime seja registrado corretamente e que o serviço seja configurado corretamente para um desempenho ideal.

Posso chamar o GameInput a partir do meu thread de renderização?

Sim, quase todas as funções do GameInput são seguras para contextos sensíveis ao tempo, como threads de renderização. A principal exceção é GameInputCreate, que você deve chamar durante a inicialização do aplicativo.

Confira também

Introdução ao GameInput Controle de versão da API do GameInput Portabilidade do XInput para o GameInput
Last modified on October 6, 2026