標準化された方法はありません。
異なるデバイスには異なるランブル機能と制限があります。
大部分のデバイスは、実際の「フォースフィードバック」をサポートしていません(例:縁石/穴にぶつかったときにプログラマーが特定の角度に押し戻すことができるハンドル)。
だから、ほとんどのフォースフィードバックのは、MSDN / DirectXと他のAPIに言及したフィーチャ本当にユーザー市場に実際にマテリアライズしないか、そのような貧しいおよび/または持っていたことがない非ポータブルとして「スマート」のコントロール(封筒、繰り返し、など)の実装を使用できないため、実際には、開発者は独自のエフェクトの実装でON / OFFコントロールを直接使用することを余儀なくされることがよくあります。
汎用の入力APIは必要なパラメーター(正確な角度、正確な力、制限など)をサポートしていないため、サーボ制御の力フィードバックを可能にするより高度なデバイスにはカスタムAPIが必要です。
VRフィーリンググローブなどの新しいテクノロジーをミックスに追加すると、これらの汎用APIはさらに不足します。
最も一般的な実装は、それぞれが不均衡な負荷を持つ2つのDCモーターを使用するもので、一方は他方よりも重く、正確な速度制御はありません。
少なくともそれらをオン/オフ制御し、いくつかの制限されたPWMを実行できます電力制御をが、正確な速度制御はできません。あなたは実際に速度と結果として生じる振動が何であるかを知りません。異なるコントローラには、同じ設定に対して異なる速度で実行される異なるモーターと重量があります。
モーターは最初にスピンアップする必要があり、少しの間フルパワーを必要とします。その後、PWMを低く設定することができます。スピンアップ遅延により、応答性が大幅に制限されます。
コントローラーは多くの場合、フレームごとに1回更新され、おおよそ20Hz〜100Hzの更新頻度が得られます。これにより、モーターを最低設定で停止させたくないため、PWM制御の分解能が制限されます。そして、エンスト(停止)する前にエンドユーザーコントローラーのモーターがどれだけ低くなるか分からないため、十分な安全マージンが必要です。
一部のシステム要件では、それらを使用して実行できることをさらに制限しています。
通常、モバイルデバイスには振動モーターが1つしかなく、重量の大きさによる慣性が小さく更新速度が遅いため、PWMが使用できない場合があります。システムはそれをさらにフィルタリングして、悪用または損傷(パワードライバートランジスタの制限と誘導スパイク)を防ぐか、または非常に遅いGPIOサブシステムにすらします。
モバイルでは、PWMなしで「およそX * 50ミリ秒間振動する」ように制限されているか、制限したい場合があります。
一部の新しいデバイスとコントローラーには、低サンプルレートのオーディオ波によってスピーカーのように駆動されるソレノイドがあります。これらはより多くの制御を提供しますが、より一般的なコントローラーとは完全に異なります。
あなたはシュートと-忘れ形式で名前によって高レベルのマクロ効果の限られた数を再生するには、抽象振動系にしたいことがあり、すべてのこれらの違いのため:PlayVibration(player, "Got Loot");
、PlayVibration(player, "Heavy Fall");
、 StopAllVibrationFor(player);
、...
次に、各プラットフォームに個別に適応した低レベルの振動効果と振動制御コードを作成する必要があります。
音楽ゲームの場合でも、ゲームの一時停止やスマートになる予定の周期的エフェクトジェネレーターの再同期の問題をPlayVibration
考慮すると、ビートごとにワンショットを呼び出す方が管理と制御が簡単です。
実際のソレノイド駆動のランブルを備えたデバイスは、オーディオデバイスのように扱うことができ、バッテリーの懸念によりオーディオAPIを使用できますが、ソレノイドの電源が常にオン/アクティブの場合、システムの規制に違反する可能性があります。「電力レベル0」は「ソレノイドオフ」と同じでない場合があるため、その場合でも特別な注意が必要です。