Choose your operating system:
Windows
macOS
Linux
RawInput 플러그인은 Microsoft 의 XInput API 로 정상 처리되지 않는 사용자 정의 디바이스 지원을 위한 것으로, 보통 비행기 조종 스틱이나 운전대같은 것을 말합니다. 이러한 입력 디바이스의 버튼과 축은 게임플레이 입력으로 커스텀 매핑시킬 수 있으며, 여기에는 플러그인 자체에서 만든 새로운 입력이 포함됩니다.
RawInput 켜기
기본적으로 플러그인은 켜져있지 않습니다. 플러그인 메뉴의 Input Devices 섹션에서 켤 수 있습니다.
플러그인이 켜지면, 프로젝트 세팅 메뉴에 Raw Input 섹션이 나타납니다.
디바이스 환경설정
여기서는 새 디바이스를 추가할 수 있습니다. 각 디바이스는 벤더 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 개의 버튼이 제공됩니다. 각 축과 버튼은 켜고 끌 수 있으며, 축 역시도 반전이나 오프셋 적용이 가능합니다.
예제 (비히클 템플릿)
언리얼 엔진 에 포함 출시되는 비히클 템플릿을 운전대와 액셀/브레이크 페달이 있는 운전용 게임 컨트롤러인 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" 에 바인딩됩니다. 다른 컨트롤러가 다른 입력 축을 사용하라도 같은 방식으로 작동하게끔 환경설정할 수 있도록 하기 위해서입니다.
디바이스의 출력 범위가 표준 컨트롤러에 기대하는 범위와 일치하지 않기 때문에, 입력 범위를 리매핑합니다. 운전대의 반환 값은 (왼쪽) 0.0 에서 (오른쪽) 1.0 이지만, 입력 범위는 가운데에서 0.0 이 되도록 해야 하므로, 오프셋을 0.5 줍니다. 브레이크와 액셀 페달 역시 0.0 에서 1.0 값을 반환하지만, 디바이스에서는 페달을 밟았을 때 0.0, 떼었을 때 1.0 을 사용하므로, 프로젝트에서는 반대 값을 기대합니다. 이러한 조정을 위해서는 축 값을 반전시킨 뒤 1.0 오프셋을 더합니다.
RawInput 축을 입력 바인딩에 매핑
그 후 새로운 축을 게임의 입력 바인딩에 매핑시키면 됩니다. ("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" 축을 더욱 잘 사용할 수 있는 인수가 됩니다.