왜 내 타이틀의 입력 코드를 GameInput으로 뒷받침해야 하나요?
GameInput은 업데이트 가능한 입력 플랫폼입니다. 이를 사용하면 Windows가 시장에 나와 있는 다양한 입력 장치를 더 잘 추상화할 수 있으며, 플랫폼 업데이트를 통해 시간이 지나면서 이러한 장치에 대한 지원을 계속 개선할 수 있습니다. GameInput을 사용함으로써 타이틀은 Windows 및 하드웨어 릴리스를 통해 새 장치에서 자동으로 작동하도록 업데이트됩니다. 또한 GameInput은 임펄스 트리거와 같이 이전에 Windows에서 사용할 수 없었던 최신 기능에 대한 액세스뿐만 아니라 햅틱 및 센서와 같은 기능에 대한 더 나은 지원을 제공합니다. GameInput을 사용하면 최소한의 코드 변경으로 타이틀이 이러한 기능을 활용할 수 있습니다.GameInput은 어떤 플랫폼을 지원하나요?
GameInput은 다음에서 사용할 수 있습니다.- XBOX (2510 GDK부터 V.1+)
- Windows 10 (버전 19H1/2019년 5월 업데이트 이상)
- Windows 11
XBOX와 PC용으로 다른 버전이 필요한가요?
아니요, 동일한 GameInput API가 모든 플랫폼에서 작동합니다. 2510 GDK부터 최신 GameInput API는 XBOX와 PC 모두에서 사용할 수 있으며, Microsoft.GameInput NuGet 패키지에 동일한 헤더와 바이너리가 제공됩니다. GameInput 설치 프로그램은 PC에만 필요합니다. XBOX에서는 런타임이 GDK에 포함되어 있기 때문입니다.GameInput은 Unreal Engine과 같이 흔히 사용되는 엔진에서 동작하나요?
네, 다만 통합 수준은 엔진마다 다릅니다. 일부 엔진은 엔진 플러그인 형태로 자체 GameInput 지원을 제공하고, 다른 엔진은 직접 통합하는 샘플이나 네이티브 플러그인에 의존합니다.- Unreal Engine: GameInput 지원은 Unreal Engine 5.4부터 엔진에 플러그인 세트로 포함되어 있습니다. Game Input Base는 핵심 기능과 인터페이스를 제공하고, **Game Input (Windows)**는 Win64와 WinGDK에 대해 이를 구현하며, XBOX Common Game Input은 XBOX One과 XBOX Series X|S에 대해 이를 구현합니다. 프로젝트에서 이 플러그인들을 활성화하면 PC와 콘솔 모두에서 입력을 GameInput을 통해 라우팅할 수 있습니다. 자세한 내용은 Microsoft GDK plug-ins for Unreal Engine을 참조하세요.
- Godot: XBOX Godot 샘플에는 GameInput을 Godot에 바인딩하는 GDExtension이 포함되어 있으며, GameInput을 Godot의
Input및InputMap시스템에 연결하는 브리지도 포함됩니다. 이는 엔진에 내장된 기능이 아니라, 여러분이 프로젝트에 맞게 빌드하고 조정하는 참조 통합입니다. 자세한 내용은 Godot 시작하기를 참조하세요. - Unity: 현재 PC의 Unity에 GameInput을 노출하는 Microsoft GDK 패키지는 없으므로, PC의 Unity 게임은 일반적으로 Unity Input System을 통해 입력을 읽습니다. XBOX Series X|S 및 XBOX One에서는 Unity용 GXDK Input System 패키지가 Unity Input System에 콘솔 전용 기능을 추가합니다. 자세한 내용은 GDK packages for Unity를 참조하세요.
내 애플리케이션이 GameInput을 찾을 수 없습니다. 무엇을 확인해야 하나요?
- 대상 컴퓨터에 GameInput 런타임이 설치되어 있는지 확인합니다. v.1 이상 버전의 경우 Microsoft.GameInput 패키지가 필요하며, 사용자는 Microsoft.GameInput NuGet 패키지의 MSI 패키지에서 설치할 수 있습니다. 최신 버전의 패키지를 설치하려면 관리자 명령 프롬프트에서
winget install Microsoft.GameInput을 실행할 수도 있습니다. - 애플리케이션이 올바른 GameInput 라이브러리에 링크되어 있는지 확인합니다. NuGet 패키지의 최신 버전은 프로젝트가 여러 엔드포인트/플랫폼에서 올바른 GameInput 바이너리를 사용하도록 보장합니다.
- Windows 버전이 GameInput을 지원하는지 확인합니다(19H1 이상).
XInput에서 GameInput으로 포팅하는 것은 얼마나 어렵나요?
많은 XInput 함수가 GameInput의 등가 함수와 일대일로 매핑되어 있어 포팅 작업이 단순합니다. 주된 차이점은 GameInput이 플랫 C 함수 대신 C++ 인터페이스를 사용한다는 점입니다. 또한 GameInput은 XBOX One 컨트롤러 및 기타 유사한 장치에 있는 임펄스 트리거에 대한 액세스와 같이 XInput에는 없는 추가 기능을 제공합니다.DirectInput 또는 Raw Input에서 어떻게 포팅하나요?
GameInput은 GameInputDeviceInfo 구조체의 일부로 인터페이스 경로를 제공합니다. 이 필드는 DirectInput API에서 사용하는 것과 동일하므로, 애플리케이션은 기존 DirectInput 코드를 계속 사용하여 장치 열거와 정보 검색을 수행하는 동시에 입력 읽기와 기타 기능을 GameInput으로 이전할 수 있습니다. 자세한 내용은 GameInput 포팅 가이드를 참조하세요.GameInput 서비스는 무엇을 하나요?
GameInput 서비스는 시스템의 입력 장치에 대한 액세스를 중재하고, 다른 애플리케이션에 유용한 호환성 및 추상화 계층을 제공하는 역할을 합니다. 다른 것들 중에서 GameInput 서비스는 다음과 같은 일을 합니다.- 입력 필터링과 동기화를 처리합니다.
- 플랫폼 업데이트와 장치 드라이버 개선 사항을 전달합니다.
- GameInput 클라이언트 인스턴스 간의 입력 장치 액세스를 중재합니다.
렌더 스레드에서 GameInput을 호출할 수 있나요?
예, 거의 모든 GameInput 함수는 렌더 스레드처럼 시간에 민감한 컨텍스트에서 안전합니다. 주된 예외는GameInputCreate이며, 이 함수는 애플리케이션 초기화 중에 호출해야 합니다.
