RawInput 플러그인

RawInput 플러그인은 XInput 표준에 맞지 않는 디바이스에서 읽을 수 있습니다.

Choose your operating system:

Windows

macOS

Linux

RawInput 플러그인은 Microsoft 의 XInput API 로 정상 처리되지 않는 사용자 정의 디바이스 지원을 위한 것으로, 보통 비행기 조종 스틱이나 운전대같은 것을 말합니다. 이러한 입력 디바이스의 버튼과 축은 게임플레이 입력으로 커스텀 매핑시킬 수 있으며, 여기에는 플러그인 자체에서 만든 새로운 입력이 포함됩니다.

RawInput 켜기

기본적으로 플러그인은 켜져있지 않습니다. 플러그인 메뉴의 Input Devices 섹션에서 켤 수 있습니다.

RawInput plugin

플러그인이 켜지면, 프로젝트 세팅 메뉴에 Raw Input 섹션이 나타납니다.

RawInput location in Project Settings menu

디바이스 환경설정

여기서는 새 디바이스를 추가할 수 있습니다. 각 디바이스는 벤더 ID 와 제품 ID 로 식별되며, 이는 디바이스의 드라이버 속성에서 찾을 수 있는 16진 값입니다. 컨트롤러의 환경설정에 (기본으로 8 개의) 축 배열과 (기본으로 12 개의) 버튼이 추가됩니다. 컨트롤러의 (배열 인덱스로 지시된) 축과 버튼을 어떤 언리얼 엔진 축이나 키에도 매핑시킬 수 있는 기능이 제공됩니다. 플러그인에는 ("Generic USB Controller Axis 1" 부터 "Generic USB Controller Axis 8" 까지) 8 개의 축과 ("Generic USB Controller Button 1" 부터 "Generic USB Controller Button 20" 까지) 20 개의 버튼이 제공됩니다. 각 축과 버튼은 켜고 끌 수 있으며, 축 역시도 반전이나 오프셋 적용이 가능합니다.

Windows Device Settings

위는 Windows 제어판 (장치 관리자 아래) Logitech G920 에 대한 하드웨어 ID 정보입니다. Vendor ID 는 "VID_" 뒤의 네 글자이고 (046D), Product ID 는 "PID_" 뒤의 네 글자입니다 (C262). 이 정보는 RawInput 에서 디바이스 환경설정을 할 때 필요합니다.

예제 (비히클 템플릿)

언리얼 엔진 에 포함 출시되는 비히클 템플릿을 운전대와 액셀/브레이크 페달이 있는 운전용 게임 컨트롤러인 Logitech G920 과 작동하도록 환경설정한 예제입니다.

RawInput 에서 디바이스 환경설정

운전대는 드라이버가 Axis 1, 브레이크는 Axis 3, 액셀 페달은 Axis 4 로 보고합니다. RawInput 플러그인 세팅에서 각 입력은 반드시 디바이스 드라이버에서 해당하는 축 위치의 배열에 입력해야 합니다. 즉 운전대의 데이터는 반드시 배열 엘리먼트 1, 브레이크 데이터는 배열 엘리먼트 3, 액셀 페달 데이터는 배열 엘리먼트 4 에 있어야 합니다. 다른 모든 항목은 제거하거나 비활성화 마킹해야 합니다.

참고로 입력의 배열 인덱스는 "Generic USB Controller Axis" 나 "Generic USB Controller Input" 값에 해당할 필요가 없습니다. 예를 들어 브레이크는 배열 위치 3 에 있더라도 "Generic USB Controller Axis 2" 에 바인딩됩니다. 다른 컨트롤러가 다른 입력 축을 사용하라도 같은 방식으로 작동하게끔 환경설정할 수 있도록 하기 위해서입니다.

RawInput settings

디바이스의 출력 범위가 표준 컨트롤러에 기대하는 범위와 일치하지 않기 때문에, 입력 범위를 리매핑합니다. 운전대의 반환 값은 (왼쪽) 0.0 에서 (오른쪽) 1.0 이지만, 입력 범위는 가운데에서 0.0 이 되도록 해야 하므로, 오프셋을 0.5 줍니다. 브레이크와 액셀 페달 역시 0.0 에서 1.0 값을 반환하지만, 디바이스에서는 페달을 밟았을 때 0.0, 떼었을 때 1.0 을 사용하므로, 프로젝트에서는 반대 값을 기대합니다. 이러한 조정을 위해서는 축 값을 반전시킨 뒤 1.0 오프셋을 더합니다.

RawInput 축을 입력 바인딩에 매핑

Input settings

그 후 새로운 축을 게임의 입력 바인딩에 매핑시키면 됩니다. ("Generic USB Controller Axis 1" 에 있는) 운전대는 [-0.5, 0.5] 범위로 매핑시키지만, 보다 민감하게 했으면 하므로 3.0 스케일을 적용합니다. 비슷하게 ("Generic USB Controller Axis 2" 에 있는) 브레이크도 음수 방향으로 가야 하고 액셀 페달보다는 강력해야 하므로, -2 스케일을 적용합니다. ("Generic USB Controller Axis 3" 에 있는) 액셀 페달은 변경이 필요치 않으며, 적합한 입력 바인딩만 추가해 주면 됩니다. RawInput 을 사용해서 이러한 입력 바인딩을 추가하면, 새로운 입력 바인딩이나 프로젝트의 코드 또는 블루프린트를 변경하지 않고도 Logitech G920 를 지원하는 것이 가능합니다.

이런 식의 스케일은 디바이스를 표준 게임패드 스틱 입력으로 환경설정하는 것보다 "Generic USB Controller" 축을 더욱 잘 사용할 수 있는 인수가 됩니다.

태그
언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기