Skip to main content
Utilisez cette rubrique pour comprendre comment le retour de force sur GameInput peut gérer la sortie des périphériques. Grâce au retour de force, les périphériques d’entrée de jeu peuvent déplacer physiquement une ou plusieurs commandes d’entrée du périphérique afin de fournir un retour tactile à l’utilisateur. Le retour de force fonctionne avec les périphériques d’entrée qui simulent la conduite de véhicules, comme les volants et les équipements de simulation de vol. Ces périphériques contiennent un moteur de retour de force qui applique une force à la commande le long d’un axe. Sur un volant de course, il s’agit d’une force de rotation qui fait tourner le volant pour simuler un scénario du jeu. Utilisez le retour de force avec un manche de vol pour rendre les leviers difficiles à pousser ou à tirer à partir d’une position donnée. Pour plus d’informations sur les interfaces GameInput qui prennent en charge le retour de force, consultez IGameInputDevice et IGameInputForceFeedbackEffect.

Vérifier la présence d’un moteur de retour de force

Pour créer un effet de retour de force, vous avez besoin de l’interface IGameInputDevice qui représente le périphérique d’entrée auquel vous souhaitez appliquer l’effet. Après avoir obtenu l’interface IGameInputDevice, vérifiez le nombre de moteurs de retour de force du périphérique en examinant la structure GameInputDeviceInfo. Pour cela, appelez IGameInputDevice::GetDeviceInfo. Si le périphérique d’entrée comporte un moteur de retour de force, le membre ForceFeedbackMotorCount de GameInputDeviceInfo a une valeur supérieure ou égale à un.

Création d’un effet de retour de force

Si la structure GameInputDeviceInfo d’un périphérique indique qu’il possède un ou plusieurs moteurs de retour de force, créez un effet de retour de force pour le périphérique en appelant IGameInputDevice::CreateForceFeedbackEffect, comme illustré dans le code suivant.
Le paramètre d’index du moteur est l’index du moteur concerné par le retour de force. Cet index correspond au moteur approprié dans le tableau GameInputForceFeedbackMotorInfo de la structure GameInputDeviceInfo. Ce tableau contient des informations sur les moteurs de retour de force présents et sur leurs capacités. Pour le deuxième paramètre, construisez la structure GameInputForceFeedbackParams de l’effet de retour de force, qui décrit les caractéristiques de l’effet, comme illustré dans le code suivant.
Choisissez une valeur de l’énumération GameInputForceFeedbackEffectKind, puis initialisez la structure GameInputForceFeedbackParams correspondante. Par exemple, pour créer un effet de retour avec un comportement de ressort, GameInputForceFeedbackParams se compose de la valeur GameInputForceFeedbackSpring de GameInputForceFeedbackEffectKind et de la structure GameInputForceFeedbackConditionParams pour un ressort. Renseignez les paramètres correspondant à la valeur de l’énumération GameInputForceFeedbackEffectKind que vous avez choisie. Après avoir sélectionné l’effet du moteur de retour de force par son index et créé la structure GameInputForceFeedbackParams, appelez IGameInputDevice::CreateForceFeedbackEffect pour créer l’effet. Celui-ci est représenté par une interface IGameInputForceFeedbackEffect. La durée de vie de l’effet de retour de force est associée à l’interface IGameInputForceFeedbackEffect créée. Lorsque l’effet est créé, il est chargé sur le périphérique. Lorsque la dernière référence est libérée, l’effet de retour de force est arrêté et déchargé du moteur du périphérique.

Application et mise à jour des effets de retour de force

Lorsqu’un effet de retour de force est créé, il est chargé directement dans le moteur du périphérique. Un moteur de retour de force dispose d’une quantité de mémoire limitée. Cela limite le nombre d’effets de retour de force pouvant être chargés et lus simultanément. Si vous appelez IGameInputDevice::CreateForceFeedbackEffect après avoir atteint cette limite, la fonction renvoie une erreur. Après sa création, un effet de retour de force est chargé dans le moteur de retour de force à l’état arrêté. Une fois qu’il est chargé, utilisez l’interface IGameInputForceFeedbackEffect pour définir l’état de l’effet sur Running. L’effet est alors lu sur le moteur du périphérique.

États d’un effet de retour de force

Un effet de retour de force passe par plusieurs états pour correspondre à l’état actuel du jeu. Il est important de mettre à jour et de suivre l’état d’un effet en fonction de votre jeu afin de conserver le comportement attendu. Les états du retour de force peuvent être définis selon GameInputFeedbackEffectState, comme illustré dans le code suivant.
Une fois l’effet de retour de force créé, il passe à l’état Stopped. Si un effet de retour nouveau ou arrêté est défini sur l’état Running, il est lu depuis le début de l’effet. Définir l’état sur Paused fait que l’effet de retour de force cesse d’agir sur le moteur. En revanche, définir un effet à l’état Paused sur Running fait que l’effet de retour de force reprend le motif de l’effet là où il s’était arrêté. L’arrêt d’un effet met fin à celui-ci, mais vous pouvez déclencher à nouveau l’effet ultérieurement. Par exemple, lorsqu’un utilisateur quitte un terrain accidenté dans un jeu de course. De même, la mise en pause d’un effet est utile dans les situations où le gameplay reste inchangé mais où l’utilisateur souhaite naviguer dans l’interface utilisateur, comme un menu de pause. Définissez l’état d’un effet de retour de force en appelant IGameInputForceFeedbackEffect::SetState.

Mise à jour d’un effet de retour de force

Ajustez le gain d’un effet de retour de force ou fournissez un nouvel ensemble de paramètres si la nouvelle structure GameInputForceFeedbackParams partage la même valeur de l’énumération GameInputForceFeedbackEffectKind.

Gain

Modifiez l’intensité d’un effet de retour de force en ajustant son gain à l’aide de la fonction IGameInputForceFeedbackEffect::SetGain, comme illustré dans le code suivant.
Le gain peut être une valeur comprise entre 0 et 1. Par défaut, le gain d’un effet de retour de force est défini sur 1. Cette fonction sert principalement à atténuer l’intensité d’un effet.

Définition de nouveaux paramètres

Fournissez de nouveaux paramètres pour un effet de retour de force à l’aide de la fonction IGameInputForceFeedbackEffect::SetParams, comme illustré dans le code suivant.
Lorsque vous utilisez cette fonction pour remplacer les paramètres d’un effet de retour de force, utilisez la même valeur de l’énumération GameInputForceFeedbackEffectKind que celle de l’effet de retour de force dont vous définissez les paramètres. Les nouveaux paramètres prennent effet immédiatement et sont appliqués sans arrêter l’effet en cours. Notez que le minuteur de durée n’est pas réinitialisé si la valeur de durée ne change pas. Il n’est réinitialisé que si une valeur de durée différente est fournie, ou si l’effet est arrêté puis redémarré. Si l’effet en cours est arrêté, il est redémarré avec les nouveaux paramètres. Certains jeux peuvent modifier les paramètres pour simuler différents motifs de retour en définissant les paramètres d’un effet de retour dont la valeur de l’énumération GameInputForceFeedbackEffectKind est GameInputForceFeedbackConstant.

Différences de capacités entre les périphériques GIP et HID

Sur console, tous les périphériques utilisent le modèle de pilote GIP. Sur PC, les périphériques peuvent utiliser le modèle de pilote GIP ou HID ; l’installation de pilotes de fabricants les fait généralement passer en mode HID (sauf s’il existe un commutateur physique pour un contrôle manuel). Les capacités de retour de force des périphériques HID sont limitées par l’API DirectInput pour laquelle ils ont été conçus à l’origine. GameInput fait tout son possible pour contourner ces limitations lorsque c’est possible. Néanmoins, certaines différences subsistent. Les périphériques HID limitent actuellement le retour de force à l’axe AngularX, quels que soient les axes supplémentaires pris en charge par le matériel. Cette configuration offre une bonne prise en charge pour la grande majorité des volants de course. Le retour de force HID est actuellement disponible dans les versions 19H2 et ultérieures de Windows et sera mis à jour pour fonctionner dans la version 19H1 dans une prochaine mise à jour.

Documentation de référence de l’API

Voir aussi

IGameInputForceFeedbackEffect IGameInputDevice
Last modified on October 6, 2026