표준화 된 방법이 없습니다.
장치마다 다른 럼블 기능과 제한이 있습니다.
대부분의 장치는 실제 "힘 피드백"을 지원하지 않습니다 (예 : 커브 / 포트홀에 부딪 칠 때 프로그래머가 특정 각도로 뒤로 밀릴 수 있도록하는 스티어링 휠). 그러나 제어되지 않은 / 임의의 방향으로 울립니다.
따라서 MSDN / DirectX 및 기타 API에 언급 된 대부분의 Force Feedback 기능은 실제로 사용자 시장에서 실제로 실현되지 않았거나 "스마트"컨트롤 (봉투, 반복 등)의 구현이 불량하거나 이식 불가능한 방식으로 구현 되지 않았습니다. 실제로는 개발자가 종종 자신의 효과 구현과 함께 직접 ON / OFF 컨트롤을 사용하도록 강요 할 수 없습니다 .
서보 제어력 피드백을 허용하는 고급 장치에는 일반 입력 API가 필요한 매개 변수 (정확한 각도, 정확한 힘, 한계 등)를 지원하지 않기 때문에 맞춤형 API가 필요합니다.
VR 느낌 장갑과 같은 새로운 기술을 혼합하여 추가하면 이러한 일반 API가 훨씬 부족합니다.
가장 일반적인 구현은 각각 불균형 부하를 갖는 두 개의 DC 모터를 사용하는 것입니다. 하나는 다른 것보다 무겁고 정확한 속도 제어는 없습니다.
최소한 당신은 그들에 대한 켜기 / 끄기 제어를하고 제한된 PWM을 수행 할 수 전력 제어 있지만 정확한 속도 제어 없습니다. 속도와 결과 진동이 실제로 무엇인지 알 수 없습니다. 컨트롤러마다 모터와 무게가 다르므로 동일한 설정에서 다른 속도로 작동합니다.
모터는 먼저 회전해야하며 약간의 시간 동안 최대 전력을 소비해야하며, PWM을 낮게 설정하면됩니다. 스핀 업 지연은 응답 성을 크게 제한합니다.
컨트롤러는 종종 프레임 당 한 번씩 업데이트되어 대략 20Hz ~ 100Hz의 업데이트 주파수를 제공합니다. 이는 모터가 최저 설정에서 정지되는 것을 원하지 않기 때문에 PWM 제어의 해상도를 제한합니다. 그리고 최종 사용자 컨트롤러의 모터가 정지하기 전에 얼마나 낮은 지 알 수 없으므로 안전 마진이 필요합니다.
일부 시스템 요구 사항에 따라 수행 할 수있는 작업이 더 제한됩니다.
모바일 장치에는 일반적으로 진동 모터가 1 개만 있으며 무게의 크기에서 관성이 낮고 업데이트 속도가 느려 PWM이 불가능할 수 있습니다. 시스템은 남용 또는 손상 (파워 드라이버 트랜지스터 제한 및 유도 스파이크) 또는 GPIO 하위 시스템의 속도를 늦추기 위해 추가로 필터링 할 수 있습니다.
모바일에서는 PWM이 없으면 "거의 X * 50 밀리 초 동안 진동"하도록 제한하거나 자신을 제한하려고 할 수 있습니다.
일부 최신 장치 및 컨트롤러에는 낮은 샘플링 속도의 오디오 웨이브로 스피커처럼 구동되는 솔레노이드가 있습니다. 이것들은 더 많은 제어권을 제공하지만 더 일반적인 컨트롤러와는 완전히 다릅니다.
때문에 추상적 인 진동 시스템에 당신이 할 수있는 모든 이러한 차이의 촬영 앤 잊지 방식으로 이름 높은 수준의 매크로 효과의 제한된 수를 재생하려면 PlayVibration(player, "Got Loot");
, PlayVibration(player, "Heavy Fall");
, StopAllVibrationFor(player);
, ...
그런 다음 각 플랫폼에 개별적으로 적용되는 저수준 진동 효과 및 진동 제어 코드를 작성해야합니다 .
게임 PlayVibration
을 일시 정지 할 때 와 스마트 한주기 효과 생성기를 다시 동기화하는 문제를 고려할 때 모든 비트에 대해 원샷 을 호출하는 음악 게임의 경우보다 쉽게 관리하고 제어 할 수 있습니다.
실제 솔레노이드 구동 럼블이있는 장치는 오디오 장치처럼 취급 할 수 있지만 배터리 문제로 인해 오디오 API를 사용할 수 있지만 솔레노이드의 전원이 지속적으로 켜져 있거나 활성화 된 경우 시스템 규정에 위배 될 수 있습니다 . "Power Level 0"은 "Solenoid Off"와 같지 않을 수 있으므로 특별한주의가 필요합니다.