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
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
InputeInputMapdo 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.
Meu aplicativo não consegue encontrar o GameInput. O que devo verificar?
- 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.GameInputem um prompt de comando com privilégios elevados. - 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.
- 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
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.
