Il n'y a aucun moyen standardisé.
Différents appareils ont différentes capacités et limitations de grondement.
La grande majorité des appareils ne prennent pas en charge le "retour de force" réel (par exemple: un volant qui, en frappant un trottoir / nid de poule, permettrait au programmeur de reculer sous un angle spécifique), mais grondent dans une direction non contrôlée / arbitraire.
Ainsi, la plupart des fonctionnalités Force Feedback mentionnées sur MSDN / DirectX et d'autres API ne se sont jamais vraiment matérialisées dans la pratique sur le marché des utilisateurs ou ont des implémentations aussi pauvres et / ou non portables des contrôles "intelligents" (enveloppe, répétition, etc.) que être si inutilisable que dans la pratique, les développeurs sont souvent obligés d'utiliser simplement les commandes ON / OFF directement avec leur propre implémentation d'effet.
Les appareils plus avancés qui permettent un retour de force asservi nécessitent des API personnalisées car les API d'entrée génériques ne prennent pas en charge les paramètres nécessaires (angles exacts, forces exactes, limites, etc.).
L'ajout de technologies émergentes telles que les gants de sensation VR dans le mélange rend ces API génériques encore plus manquantes.
La mise en œuvre la plus courante consiste en deux moteurs CC avec une charge déséquilibrée chacun, l'un étant plus lourd que l'autre et sans contrôle de vitesse précis.
Au minimum, vous avez un contrôle on / off sur eux et pouvez faire un contrôle de puissance PWM limité mais pas un contrôle de vitesse exact. Vous ne savez pas quelle sera la vitesse et les vibrations qui en résulteront. Différents contrôleurs ont des moteurs et des poids différents qui fonctionneront à différentes vitesses pour le même réglage.
Les moteurs doivent d'abord tourner et nécessitent une pleine puissance pendant un peu de temps, puis peuvent être PWM à un réglage inférieur. Le délai de rotation limite considérablement la réactivité.
Les contrôleurs sont souvent mis à jour une fois par trame, ce qui vous donne une fréquence de mise à jour d'environ 20 Hz à 100 Hz. Cela limite la résolution de votre contrôle PWM car vous ne voulez pas que les moteurs calent au réglage le plus bas. Et vous ne savez pas à quel point les moteurs du contrôleur de l'utilisateur final peuvent descendre avant le calage (arrêt), vous avez donc besoin d'une bonne marge de sécurité.
Certaines exigences du système limitent davantage ce que vous pouvez en faire.
Les appareils mobiles n'ont généralement qu'un seul moteur à vibration et le PWM peut ne pas être possible en raison de la faible inertie due à la taille du poids et de la lenteur de la mise à jour. Le système peut le filtrer davantage pour éviter les abus ou peut-être même des dommages (limites du transistor du pilote d'alimentation et pointes d'induction) ou tout simplement un sous-système GPIO très lent.
Sur mobile, vous pouvez être limité ou vouloir vous limiter à "vibrer pendant environ X * 50 millisecondes" sans PWM.
Certains appareils et contrôleurs plus récents ont un solénoïde piloté comme un haut-parleur par une onde audio à faible fréquence d'échantillonnage. Ceux-ci vous donnent plus de contrôle mais sont complètement différents des contrôleurs les plus courants.
En raison de toutes ces différences , vous voudrez peut - être abstraite du système de vibration à jouer un nombre limité de haut niveau macro-effets par nom dans une fusillade et oublier la mode: PlayVibration(player, "Got Loot");
, PlayVibration(player, "Heavy Fall");
, StopAllVibrationFor(player);
, ...
Ensuite, vous devrez créer des effets de vibration de bas niveau et un code de contrôle des vibrations adapté à chaque plate-forme individuellement .
Même pour un jeu de musique, il PlayVibration
est plus facile de gérer et de contrôler un seul coup pour chaque battement lors de la mise en pause du jeu et des problèmes de resynchronisation d'un générateur d'effets périodiques intelligent.
Bien que les appareils avec un véritable grondement entraîné par un solénoïde puissent être traités comme un appareil audio et utiliser des API audio en raison de problèmes de batterie, cela peut aller à l'encontre des réglementations du système si le solénoïde est constamment alimenté / actif . "Power Level 0" peut ne pas être identique à "Solenoid Off" donc même alors une attention particulière est nécessaire.