Skip to main content
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 런타임이 포함되어 있으므로 재배포 가능 패키지는 필요하지 않습니다.
GameInput은 새 기능이 추가되고 필요하지 않거나 오래된 기능이 제거되면서 시간이 지남에 따라 계속 진화하는 살아 있는 API입니다. GameInput의 최신 버전은 공식 NuGet 패키지에서 찾을 수 있습니다. 이 패키지에는 최신 버전 기록도 포함되어 있습니다. 이 패키지에는 항상 타이틀에 포함할 최신 GameInput 헤더, 바이너리, 재배포 가능 패키지가 포함되어 있습니다. 새 버전의 GameInput으로 업그레이드하는 것은 빠르고 번거롭지 않습니다. 또한 최신 GameInput 헤더에 설명된 API에 관계없이, 이전 버전의 GameInput으로 컴파일된 애플리케이션에 대해 바이너리 및 기능적 호환성이 유지됩니다. 이 모델에서는 이미 출시된 게임도 GameInput의 개선 사항을 누릴 수 있고, 필요하다면 새 기능을 활용하기 위해 최신 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 네임스페이스에 배치됩니다. 이러한 변경 사항으로 인해 이 버전(및 이후 버전)을 사용하여 코드를 빌드할 때 컴파일 오류가 발생할 수 있습니다. 주요 변경 사항은 다음과 같습니다.
  1. IGameInputDevice::GetDeviceInfo는 이전에는 함수의 반환 값으로 결과 IGameInputDeviceInfo 구조체를 반환했습니다. 이 구조체는 이제 함수의 출력 매개 변수로 반환되며, 함수의 반환 값은 이제 HRESULT입니다.
  2. IGameInput::UnregisterCallback은 이전에 두 번째 매개 변수로 시간 초과 값을 받았지만, 이 매개 변수는 제거되었습니다.
  3. IGameInputReading::GetSequenceNumber가 제거되었습니다. 대신 IGameInputReading::GetTimestamp를 사용하세요.

버전 관리 팁

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

함께 보기

GameInput NuGet 패키지
마지막 수정일 2026년 8월 13일