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.
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 namespaceGameInput::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:
-
IGameInputDevice::GetDeviceInfoanteriormente retornava a structIGameInputDeviceInforesultante 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 é umHRESULT. -
IGameInput::UnregisterCallbackanteriormente recebia um valor de tempo limite como segundo parâmetro, mas esse parâmetro foi removido. -
IGameInputReading::GetSequenceNumberfoi removido. UseIGameInputReading::GetTimestampno 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.horiginal 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.
