XBOX용으로 개발하는 경우, 버전 v.0은 2510 GDK부터 GDK에서 기본으로 제공되는 버전입니다. v1.0+ API를 활용하는 타이틀은 Microsoft.GameInput NuGet 패키지와 통합하여 PC(v1.0+)와 콘솔(v2.2+) 모두에서 이를 사용할 수 있습니다. 콘솔에서 이 NuGet 패키지를 사용하려면 GDK 2510 이상이 필요합니다. PC 앱은 NuGet 패키지에 포함된 최신 GameInput 재배포 가능 패키지가 대상 컴퓨터에 설치되어 있어야 합니다. 콘솔 앱은 NuGet 패키지의 최신 GameInput 헤더 및 라이브러리로 컴파일하고 링크해야 하지만, XBOX의 GDK 이미지에 최신 GameInput 런타임이 포함되어 있으므로 재배포 가능 패키지는 필요하지 않습니다.
런타임과 API 버전 업그레이드
GameInput의 여러 버전은 유사해 보이는 이름과 메서드를 가지고 있지만, 서로 다른 UUID로 명확히 버전이 구분됩니다. GameInput API v.1부터 각 버전은 고유한 네임스페이스(예:GameInput::v1)에 정의됩니다. GameInput의 동일한 기반 객체가 이러한 인터페이스를 구현합니다. QueryInterface를 사용하여 버전 간에 전환할 수 있으며, 이는 원한다면 게임에서 API 사용을 혼합할 수 있음을 의미합니다.
전역 네임스페이스에 API가 정의되어 있던 GameInput v.0에서 업그레이드하는 경우, using namespace GameInput::v1 문을 추가하면 v.1 및 이후 API 개정 채택을 위해 업데이트해야 하는 GameInput 호출 지점 수를 줄이는 데 도움이 될 수 있습니다.
런타임 버전 확인 외에도, GAMEINPUT_API_VERSION 전처리기 정의를 확인하여 조건부 컴파일을 사용할 수 있습니다. 이 정의는 현재 사용 중인 GameInput API 버전과 GameInput 메이저 버전에 해당합니다. v.0 API에는 이 정의가 없었으므로, 이 버전을 조건부로 테스트하려면 GameInput 헤더 포함 뒤에 다음 스니펫을 추가할 수 있습니다.
런타임만 업그레이드
GameInput을 사용하면 API 사용을 업데이트하지 않고도 최신 버그 수정을 받을 수 있습니다. 이러한 버그 수정을 받으려면 최신 Microsoft.GameInput NuGet 패키지에 번들된 GameInput 재배포 가능 패키지를 설치하세요. GameInput은 이전 API 버전과의 바이너리 호환성을 유지하므로, 새 런타임과 함께 기존 헤더를 계속 사용할 수 있습니다. 테스트 환경의 기능이 프로덕션과 일관되도록 최신 GameInput 바이너리를 타이틀과 함께 재배포하는 것을 잊지 마세요.GameInput v.1 변경 사항
이전 버전의 GameInput을 사용 중이라면, 구현되지 않은 많은 함수와 그에 대응하는 열거형 및 상수가 v.1 API부터 제거된다는 점에 유의하세요. 또한 API는 버전 관리를 용이하게 하기 위해GameInput::v1 네임스페이스에 배치됩니다.
이러한 변경 사항으로 인해 이 버전(및 이후 버전)을 사용하여 코드를 빌드할 때 컴파일 오류가 발생할 수 있습니다.
주요 변경 사항은 다음과 같습니다.
-
IGameInputDevice::GetDeviceInfo는 이전에는 함수의 반환 값으로 결과IGameInputDeviceInfo구조체를 반환했습니다. 이 구조체는 이제 함수의 출력 매개 변수로 반환되며, 함수의 반환 값은 이제HRESULT입니다. -
IGameInput::UnregisterCallback은 이전에 두 번째 매개 변수로 시간 초과 값을 받았지만, 이 매개 변수는 제거되었습니다. -
IGameInputReading::GetSequenceNumber가 제거되었습니다. 대신IGameInputReading::GetTimestamp를 사용하세요.
버전 관리 팁
- v.0과 v.1 사이의 사용 가능한 API 표면 변경은 최소한이며, 결코 구현되지 않았던 기능이 제거되었고, 앞서 설명한 함수 시그니처 변경이 이루어졌습니다.
- 원래의
GameInput.h헤더의 원본 v.0 API는 계속 지원되지만, 해당 API는 정적으로 유지됩니다. 이 경우 GDK, 이전 NuGet 패키지 또는 Windows SDK에서 있는 그대로 헤더를 계속 사용하면 됩니다. - 어떤 버전의 API를 사용하든, 개발 중에 NuGet 패키지의 최신 재배포 가능 패키지를 설치해야 하며, 해당 재배포 가능 패키지(또는 그 이상)를 게임의 최종 사용자 설치 프로세스의 일부로 포함해야 합니다. 이 재배포 가능 패키지에는 최신 GameInput 런타임 구현이 있으며, 확장된 컨트롤러 지원, 트랙패드 지원, 원격 데스크톱 지원 및 기타 다양한 버그 수정과 같은 개선 사항으로 모든 API 버전을 향상시킵니다.
