Skip to main content
Se você estiver desenvolvendo para XBOX, a versão v.0 é a versão padrão disponível no GDK a partir do GDK 2510. Os títulos que utilizam as APIs v1.0+ podem fazer isso tanto para PC (v1.0+) quanto para console (v2.2+) integrando o pacote NuGet Microsoft.GameInput. O GDK 2510 ou mais recente é necessário para usar esse pacote NuGet com console. Os aplicativos para PC exigem que o redistribuível mais recente do GameInput, incluído no pacote NuGet, esteja instalado no computador de destino. Os aplicativos para console devem ser compilados e vinculados com o cabeçalho e a biblioteca mais recentes do GameInput no pacote NuGet, mas não exigem o redistribuível, pois o runtime mais recente do GameInput está incluído na imagem do GDK no XBOX.
O GameInput é uma API viva que continua evoluindo ao longo do tempo à medida que novos recursos são adicionados e recursos desnecessários ou desatualizados são removidos. Você pode encontrar a versão mais recente do GameInput no pacote NuGet oficial. Esse pacote também inclui o Histórico de versões mais recente e atualizado. O pacote sempre contém o cabeçalho, os binários e o redistribuível mais recentes do GameInput para incluir com seu título. A atualização para uma versão mais recente do GameInput é rápida e simples. Além disso, independentemente da API descrita no cabeçalho mais recente do GameInput, a compatibilidade binária e funcional é mantida para aplicativos compilados com versões anteriores do GameInput. Nesse modelo, os jogos lançados podem aproveitar as melhorias no GameInput e podem ser migrados para a versão mais recente do GameInput, se necessário, para aproveitar novos recursos.

Atualização do runtime e da versão da API

Diferentes versões do GameInput têm nomes e métodos de aparência semelhante, mas são versionadas de forma distinta, com UUIDs diferentes. A partir da API GameInput v.1, cada versão é definida em um namespace exclusivo (por exemplo, GameInput::v1). Os mesmos objetos subjacentes do GameInput implementam essas interfaces. Você pode usar QueryInterface para alternar entre versões, o que significa que você pode misturar o uso da API no seu jogo, se quiser. Se você estiver atualizando do GameInput v.0, em que a API era definida no namespace global, talvez perceba que adicionar uma instrução using namespace GameInput::v1 ajuda a reduzir o número de locais de chamada do GameInput que você precisa atualizar para adotar a v.1 e as revisões subsequentes da API. Além das verificações de versão em runtime, você pode usar a compilação condicional verificando a definição de processador GAMEINPUT_API_VERSION. Essa definição corresponde à versão da API do GameInput atualmente em uso, bem como à versão principal do GameInput. A API v.0 não apresentava essa definição; portanto, se você quiser testar condicionalmente essa versão, poderá adicionar o seguinte trecho após a inclusão do cabeçalho do GameInput.

Atualização somente do runtime

O GameInput permite que você obtenha as correções de bugs mais recentes sem forçá-lo a atualizar o uso da API. Para obter essas correções de bugs, instale o redistribuível do GameInput incluído no pacote NuGet Microsoft.GameInput mais recente. Como o GameInput permanece compatível em nível binário com versões mais antigas da API, você pode continuar usando seu cabeçalho existente com o novo runtime. Lembre-se de redistribuir os binários mais recentes do GameInput com seus títulos para garantir que a funcionalidade no seu ambiente de teste seja consistente com a de produção.

Alterações do GameInput v.1

Se você estiver usando uma versão anterior do GameInput, observe que muitas funções não implementadas e as enumerações e constantes correspondentes foram removidas da API a partir da v.1. Além disso, a API foi colocada no namespace GameInput::v1 para facilitar o controle de versão. Devido a essas alterações, você poderá encontrar erros de compilação ao compilar esse código usando esta versão (e versões futuras). As alterações notáveis incluem:
  1. IGameInputDevice::GetDeviceInfo anteriormente retornava a struct IGameInputDeviceInfo resultante como valor de retorno da função. Essa struct agora é retornada como um parâmetro de saída da função, e o valor de retorno da função agora é um HRESULT.
  2. IGameInput::UnregisterCallback anteriormente recebia um valor de tempo limite como segundo parâmetro, mas esse parâmetro foi removido.
  3. IGameInputReading::GetSequenceNumber foi removido. Use IGameInputReading::GetTimestamp no lugar.

Dicas de controle de versão

  • A mudança na superfície de API utilizável entre a v.0 e a v.1 é mínima, com a remoção de funcionalidades que nunca foram implementadas, além das alterações de assinatura de função descritas anteriormente.
  • A API v.0 original do cabeçalho GameInput.h original ainda é suportada, mas essa API permanece estática. Nesse caso, você continuaria a usar o cabeçalho como está, do GDK, de um pacote NuGet mais antigo ou do SDK do Windows.
  • Independentemente da versão da API que você usar, você deve instalar o redistribuível mais recente do pacote NuGet durante o desenvolvimento e incluir esse redistribuível (ou um mais recente) como parte do processo de instalação do seu jogo para os usuários finais. É nesse redistribuível que está a implementação mais recente do runtime do GameInput, e ela aprimora todas as versões da API com itens como suporte expandido a controles, suporte a trackpad, suporte a área de trabalho remota e várias outras correções de bugs.

Confira também

Pacote NuGet do GameInput
Last modified on October 6, 2026