Skip to main content
このトピックでは、GameInput 上のフォースフィードバックがデバイス出力をどのように管理できるかについて説明します。フォースフィードバックを使用すると、ゲーム入力デバイスは、デバイスの 1 つまたは複数の入力コントロールを物理的に動かしてユーザーに触覚フィードバックを提供できます。フォースフィードバックは、ドライビングホイールやフライトシミュレーションリグなど、車両の操作をシミュレートする入力デバイスで機能します。これらのデバイスには、コントローラーに軸方向の力を加えるフォースフィードバックモーターが含まれています。レーシングホイールでは、ゲーム内のシナリオをシミュレートするためにホイールを回転させる回転力になります。フライトスティックでフォースフィードバックを使用すると、特定の位置からレバーを押したり引いたりしにくくすることができます。 フォースフィードバックをサポートする GameInput インターフェイスの詳細については、IGameInputDevice および IGameInputForceFeedbackEffect を参照してください。

フォースフィードバックモーターの確認

フォースフィードバック効果を作成するには、効果を適用したい入力デバイスを表す IGameInputDevice インターフェイスが必要です。IGameInputDevice インターフェイスを取得した後、GameInputDeviceInfo 構造体を調べて、デバイス上のフォースフィードバックモーターの数を確認します。これは IGameInputDevice::GetDeviceInfo を呼び出すことで実行できます。入力デバイスにフォースフィードバックモーターがある場合、GameInputDeviceInfo のメンバー ForceFeedbackMotorCount の値は 1 以上になります。

フォースフィードバック効果の作成

デバイスの GameInputDeviceInfo 構造体がフォースフィードバックモーターを 1 つ以上持つことを示している場合、次のコードに示すように IGameInputDevice::CreateForceFeedbackEffect を呼び出してデバイス用のフォースフィードバック効果を作成します。
motor index パラメーターは、フォースフィードバックの影響を受けるモーターのインデックスです。このインデックスは、GameInputDeviceInfo 構造体の GameInputForceFeedbackMotorInfo 配列内の該当するモーターに対応します。この配列には、存在するフォースフィードバックモーターとその機能に関する情報が含まれています。 2 番目のパラメーターには、次のコードに示すように、効果の特性を記述するフォースフィードバック効果のための GameInputForceFeedbackParams 構造体を構築します。
GameInputForceFeedbackEffectKind 列挙型を選択し、対応する GameInputForceFeedbackParams 構造体を初期化します。 たとえば、スプリング動作のフィードバック効果を作成するには、GameInputForceFeedbackParamsGameInputForceFeedbackEffectKind の値 GameInputForceFeedbackSpring と、スプリング用の 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 フォースフィードバックは現在、Windows の 19H2 以降のバージョンで利用可能で、今後のアップデートで 19H1 でも動作するように更新される予定です。

リファレンス API ドキュメント

関連項目

IGameInputForceFeedbackEffect IGameInputDevice
最終更新日 2026年8月13日