Skip to main content
이 항목에서는 GameInput의 포스 피드백이 장치 출력을 어떻게 관리하는지 이해합니다. 포스 피드백을 통해 게임 입력 장치는 장치의 하나 이상의 입력 컨트롤을 물리적으로 움직여 사용자에게 촉각적인 피드백을 제공할 수 있습니다. 포스 피드백은 드라이빙 휠, 비행 시뮬레이션 장비 등 차량 조작을 시뮬레이션하는 입력 장치와 함께 작동합니다. 이러한 장치에는 축을 따라 컨트롤러에 힘을 가하는 포스 피드백 모터가 포함되어 있습니다. 레이싱 휠에서는 게임 내 상황을 시뮬레이션하기 위해 휠을 회전시키는 회전력이 됩니다. 비행 스틱과 함께 포스 피드백을 사용하면 특정 위치에서 레버를 밀거나 당기기 어렵게 만들 수 있습니다. 포스 피드백을 지원하는 GameInput 인터페이스에 대한 자세한 내용은 IGameInputDeviceIGameInputForceFeedbackEffect를 참조하세요.

포스 피드백 모터 확인

포스 피드백 효과를 만들려면, 효과를 적용할 입력 장치를 나타내는 IGameInputDevice 인터페이스가 필요합니다. IGameInputDevice 인터페이스를 얻은 후, GameInputDeviceInfo 구조체를 검사하여 장치의 포스 피드백 모터 개수를 확인합니다. 이는 IGameInputDevice::GetDeviceInfo를 호출하여 수행할 수 있습니다. 입력 장치에 포스 피드백 모터가 있으면 GameInputDeviceInfo 멤버 ForceFeedbackMotorCount의 값이 1 이상입니다.

포스 피드백 효과 만들기

장치의 GameInputDeviceInfo 구조체가 하나 이상의 포스 피드백 모터를 가지고 있음을 나타내면, 다음 코드와 같이 IGameInputDevice::CreateForceFeedbackEffect를 호출하여 장치에 대한 포스 피드백 효과를 만듭니다.
motor index 매개 변수는 포스 피드백의 영향을 받는 모터의 인덱스입니다. 이 인덱스는 GameInputDeviceInfo 구조체의 GameInputForceFeedbackMotorInfo 배열 내 해당 모터와 일치합니다. 이 배열에는 존재하는 포스 피드백 모터와 그 기능에 대한 정보가 포함됩니다. 두 번째 매개 변수의 경우, 다음 코드와 같이 효과의 특성을 설명하는 포스 피드백 효과에 대한 GameInputForceFeedbackParams 구조체를 만듭니다.
GameInputForceFeedbackEffectKind 열거형을 선택한 다음, 해당하는 GameInputForceFeedbackParams 구조체를 초기화합니다. 예를 들어, 스프링 동작으로 피드백 효과를 만들려면 GameInputForceFeedbackParamsGameInputForceFeedbackEffectKindGameInputForceFeedbackSpring과 스프링용 GameInputForceFeedbackConditionParams 구조체로 구성됩니다. 선택한 GameInputForceFeedbackEffectKind 열거형에 대한 매개 변수를 채웁니다. 인덱스로 포스 피드백 모터 효과를 선택하고 GameInputForceFeedbackParams 구조체를 만든 후, IGameInputDevice::CreateForceFeedbackEffect를 호출하여 효과를 만듭니다. 이 효과는 IGameInputForceFeedbackEffect 인터페이스로 표현됩니다. 포스 피드백 효과의 수명은 생성된 IGameInputForceFeedbackEffect 인터페이스와 연관됩니다. 효과가 생성되면 장치에 로드됩니다. 마지막 참조가 해제되면 포스 피드백 효과가 중지되고 장치 모터에서 언로드됩니다.

포스 피드백 효과 적용 및 업데이트

포스 피드백 효과가 생성되면 장치 모터에 직접 로드됩니다. 포스 피드백 모터는 한정된 메모리 용량을 가지고 있습니다. 이로 인해 동시에 로드되어 재생되는 포스 피드백 효과의 수가 제한됩니다. 이 한도에 도달한 후 IGameInputDevice::CreateForceFeedbackEffect를 호출하면 함수가 오류를 반환합니다. 포스 피드백 효과가 생성되면 정지 상태로 포스 피드백 모터에 로드됩니다. 로드된 후에는 IGameInputForceFeedbackEffect 인터페이스를 사용하여 효과의 상태를 설정해서 Running으로 만듭니다. 그러면 장치 모터에서 효과가 재생됩니다.

포스 피드백 효과의 상태

포스 피드백 효과는 게임의 현재 상태에 맞게 여러 상태를 거칩니다. 예상 동작을 유지하려면 게임에 따라 효과의 상태를 업데이트하고 파악하는 것이 중요합니다. 포스 피드백의 상태는 다음 코드와 같이 GameInputFeedbackEffectState에 따라 설정할 수 있습니다.
포스 피드백 효과가 생성된 후에는 Stopped 상태로 변경됩니다. 새 피드백 효과나 중지된 피드백 효과를 Running 상태로 설정하면 효과가 처음부터 재생됩니다. 상태를 Paused로 설정하면 포스 피드백 효과가 모터에 영향을 주는 것을 중지합니다. 그러나 Paused 상태의 효과를 Running으로 설정하면 포스 피드백 효과가 중단된 지점부터 효과 패턴을 적용합니다. 효과를 중지하면 효과가 끝나지만 나중에 다시 트리거할 수 있습니다. 예를 들어 사용자가 레이싱 게임에서 험로를 벗어나는 경우입니다. 마찬가지로, 효과를 일시 중지하는 것은 게임 플레이는 변함없지만 사용자가 UI를 탐색하려는 상황(예: 일시 중지 메뉴)에 유용합니다. 포스 피드백 효과의 상태는 IGameInputForceFeedbackEffect::SetState를 호출하여 설정합니다.

포스 피드백 효과 업데이트

포스 피드백 효과의 게인을 조정하거나, 새 GameInputForceFeedbackParams 구조체가 동일한 GameInputForceFeedbackEffectKind 열거형을 공유하는 경우 새 매개 변수 세트를 제공합니다.

게인

다음 코드와 같이 IGameInputForceFeedbackEffect::SetGain 함수로 게인을 조정하여 포스 피드백 효과의 강도를 변경합니다.
게인은 0과 1 사이의 값일 수 있습니다. 기본적으로 포스 피드백 효과의 게인은 1로 설정됩니다. 이 함수는 주로 효과의 강도를 완화하는 데 사용됩니다.

새 매개 변수 설정

다음 코드와 같이 IGameInputForceFeedbackEffect::SetParams 함수를 사용하여 포스 피드백 효과에 대한 새 매개 변수를 제공합니다.
이 함수를 사용하여 포스 피드백 효과의 매개 변수를 교체할 때는 매개 변수를 설정하는 포스 피드백 효과와 동일한 GameInputForceFeedbackEffectKind 열거형을 사용합니다. 새 매개 변수는 즉시 적용되며, 실행 중인 효과를 중지하지 않고 적용됩니다. duration 값이 변경되지 않으면 duration 타이머는 새로 고쳐지지 않습니다. 다른 duration 값이 제공되거나 효과가 중지된 후 다시 시작될 때만 새로 고쳐집니다. 실행 중인 효과가 중지되면 새 매개 변수로 다시 시작됩니다. 일부 게임은 GameInputForceFeedbackConstantGameInputForceFeedbackEffectKind 열거형을 가진 피드백 효과의 매개 변수를 설정해 매개 변수를 변경함으로써 다양한 피드백 패턴을 시뮬레이션할 수 있습니다.

GIP 및 HID 장치 간 기능 차이

콘솔에서는 모든 장치가 GIP 드라이버 모델을 사용합니다. PC에서는 장치가 GIP 또는 HID 드라이버 모델 중 하나를 사용할 수 있으며, 공급업체 드라이버를 설치하면 일반적으로 HID 모드로 변환됩니다(수동 제어용 물리 스위치가 없는 한). HID 장치의 포스 피드백 기능은 원래 설계된 DirectInput API에 의해 제한됩니다. GameInput은 가능한 경우 이러한 제한 사항을 우회하기 위해 최선을 다합니다. 그럼에도 일부 차이는 남아 있습니다. HID 장치는 현재 하드웨어에서 지원하는 추가 축과 관계없이 포스 피드백을 AngularX 축으로 제한합니다. 이 구성은 대부분의 레이싱 휠에 대해 좋은 지원을 제공합니다. HID 포스 피드백은 현재 19H2 이상의 Windows 버전에서 사용할 수 있으며, 향후 업데이트에서 19H1에서도 작동하도록 업데이트될 예정입니다.

참조 API 문서

함께 보기

IGameInputForceFeedbackEffect IGameInputDevice
마지막 수정일 2026년 8월 13일