다음을 통해 공유


NuGet을 사용하여 PC용 GameInput

GameInput을 사용하여 PC 게임을 빌드하는 경우 Microsoft.GameInput NuGet 패키지를 사용하여 개발용 Visual Studio를 준비하세요. 이렇게 하면 Visual Studio 프로젝트의 PC 빌드 구성만 업데이트되며 Xbox/콘솔 GameInput 빌드 종속성을 수정하지 않습니다.

GameInput은 최신 버전의 Windows에서 지원되지만, PC의 최신 GameInput 기능과 업데이트를 활용하기 위해 개발 및 릴리스 모두에 대해 NuGet 패키지에 포함된 GameInput 재배포 가능 패키지를 설치하는 것이 중요합니다.

GameInput 재배포 가능 패키지

참고 항목

GameInput 재배포 가능 패키지는 NuGet 패키지에 포함되어 있지만 자동으로 설치되지는 않습니다.

GameInput은 최신 버전의 Windows에서 지원되지만 PC 게임은 GameInput 재배포 가능 버전을 해당 설치 관리자에 통합해야 합니다. GameInput NuGet 패키지를 GameInputRedist.msi 설치하면 설치 관리자는 일반적으로 프로젝트의 루트 디렉터리에 있는 디렉터리에 배치 packages\Microsoft.GameInput.<version>\redist 됩니다.

GDK PC 타이틀로 작업하는 경우 릴리스 시 타이틀에 이 패키지를 포함하는 방법에 대한 자세한 내용은 사용자 지정 설치 작업에 대한 설명서를 참조하세요. GDK가 아닌 PC 타이틀로 작업하는 경우 이 재배포 가능 패키지가 일반 게임 설치의 일부로 설치되어 있는지 확인합니다.

GameInput 재배포 가능 패키지는 대상 시스템에서 GameInput 다운그레이드가 발생하지 않는지 확인합니다. 이는 게임이 개발에 사용된 것보다 최신 버전의 GameInput이 설치된 PC에서 실행될 수 있음을 의미하지만, GameInput API는 이전 버전과 호환되며 앞으로도 일관된 동작을 보장합니다.

WinGet을 통해 시스템에서 최신 GameInput 프로비전

개발 시나리오의 경우 Windows 패키지 관리자(WinGet)을 통해 Microsoft.GameInput NuGet 패키지와 동일한 GameInput 재배포 가능 패키지도 사용할 수 있습니다. 이를 통해 개발 머신에서 최신 GameInput 재배포 가능 파일을 신속하게 프로비전할 수 있습니다. 관리자 권한 명령 프롬프트에서 다음 명령을 실행하여 최신 GameInput 재배포 가능 파일을 쉽게 설치할 수 있습니다.

winget install Microsoft.GameInput

GameInput v.1/PC 변경 내용

PC에서 이전 버전의 GameInput을 사용하거나 GDK를 사용하여 Xbox의 GameInput과 코드를 공유하는 경우 v.1 API에서 많은 구현되지 않은 함수와 해당 열거형 및 상수가 제거되었습니다. 또한 API는 버전 관리를 용이하게 하기 위해 네임스페이스에 배치 GameInput::v1 되었습니다. 이러한 변경으로 인해 이(및 이후) 버전을 사용하여 해당 코드를 빌드할 때 컴파일 오류가 발생할 수 있습니다. 주목할 만한 변경 사항은 다음과 같습니다.

  1. IGameInputDevice::GetDeviceInfo 는 이전에 결과 IGameInputDeviceInfo 구조체를 함수의 반환 값으로 반환했습니다. 이 구조체는 이제 함수에서 out 매개 변수로 반환되고 함수의 반환 값은 이제 HRESULT입니다.

  2. IGameInput::UnregisterCallback 이전에는 시간 제한 값을 두 번째 매개 변수로 사용했습니다. 그러나 이 매개 변수는 제거되었습니다.

  3. IGameInputReading::GetSequenceNumber 는 제거되었습니다. IGameInputReading::GetTimestamp을(를) 대신 사용하세요.

이러한 경우 콘솔에서 XCloud에 사용되는 터치 API와 함께 정의를 사용하여 GAMEINPUT_API_VERSION PC와 콘솔 간에 코드를 조건부로 컴파일(또는 제외)합니다.

예시:

#include <GameInput.h>
#ifndef GAMEINPUT_API_VERSION
#define GAMEINPUT_API_VERSION 0
#endif

#if GAMEINPUT_API_VERSION == 1
using namespace GameInput::v1;
#endif

...

#if GAMEINPUT_API_VERSION >= 1
  device->GetDeviceInfo(&deviceInfo);
#else
  deviceInfo = device->GetDeviceInfo();
#endif

버전 관리 팁

  • v.0과 v.1 사이의 사용 가능한 API 표면의 변경은 최소화되며, 위의 함수 서명 변경과 함께 구현되지 않은 기능이 제거됩니다.
  • 원래 GameInput.h 헤더의 원래 v.0 API는 여전히 PC에서 지원되지만 API는 정적 상태로 유지됩니다. 이 경우 GDK, 이전 NuGet 패키지 또는 Windows SDK 헤더를 그대로 계속 사용합니다.
  • 어떤 버전의 API를 사용하든 개발 중에 NuGet 패키지 에서 최신 재배포 가능 패키지를 설치하고 최종 사용자에게 게임 설치 프로세스의 일부로 재배포 가능(또는 최신 버전)을 포함해야 합니다. 여기서 최신 GameInput 런타임 구현이 존재하며 확장된 컨트롤러 지원, 트랙 패드 지원, 원격 데스크톱 지원 및 기타 다양한 버그 수정과 같은 항목으로 API의 모든 버전을 향상시킵니다.