No hay forma estandarizada.
Los diferentes dispositivos tienen diferentes capacidades y limitaciones.
La gran mayoría de los dispositivos no son compatibles con la "retroalimentación de fuerza" real (por ejemplo: un volante que al golpear una acera / bache permitiría que el programador retroceda a un ángulo específico), sino que simplemente retumba en una dirección incontrolada / arbitraria.
Entonces, la mayoría de las características de Force Feedback mencionadas en MSDN / DirectX y otras API nunca se han materializado en la práctica en el mercado de usuarios o tienen implementaciones tan pobres y / o no portátiles de los controles "inteligentes" (envolvente, repetición, etc.) como ser tan inutilizable que, en la práctica, los desarrolladores a menudo se ven obligados a usar los controles ON / OFF directamente con su propia implementación de efectos.
Los dispositivos más avanzados que permiten la retroalimentación de fuerza controlada por servo necesitan API personalizadas, ya que las API de entrada genéricas no admiten los parámetros necesarios (ángulos exactos, fuerzas exactas, límites, etc.).
Agregar tecnologías emergentes como guantes de realidad virtual a la mezcla hace que esas API genéricas sean aún más insuficientes.
La implementación más común es con dos motores de CC con una carga desequilibrada cada uno, uno pesado más pesado que el otro y sin control de velocidad preciso.
Como mínimo, tiene control de encendido / apagado sobre ellos y puede hacer un control de potencia PWM limitado pero no un control de velocidad exacto. No sabes cuál será la velocidad y la vibración resultante. Diferentes controladores tienen diferentes motores y pesos que funcionarán a diferentes velocidades para la misma configuración.
Los motores tienen que girar primero y requieren potencia completa durante un tiempo, luego pueden ser PWM a una configuración más baja. El retraso de giro limita en gran medida la capacidad de respuesta.
Los controladores a menudo se actualizan una vez por cuadro, lo que le brinda una frecuencia de actualización de aproximadamente 20Hz a 100Hz. Esto limita la resolución de su control PWM ya que no desea que los motores se detengan en la configuración más baja. Y no sabe qué tan bajos pueden ir los motores del controlador de usuario final antes de detenerse (parar), por lo que necesita un buen margen de seguridad.
Algunos requisitos del sistema limitan aún más lo que puede hacer con ellos.
Los dispositivos móviles generalmente solo tienen 1 motor de vibración y PWM puede no ser posible debido a la baja inercia del tamaño del peso y la velocidad de actualización lenta. El sistema puede filtrarlo aún más para evitar abusos o incluso daños (límites del transistor del controlador de potencia y picos de inducción) o simplemente un subsistema GPIO realmente lento.
En el móvil, puede estar limitado o limitarse a "vibrar durante aproximadamente X * 50 milisegundos" sin PWM.
Algunos dispositivos y controladores más nuevos tienen un solenoide accionado como un altavoz por una onda de audio de baja frecuencia de muestreo. Estos le dan más control, pero son completamente diferentes de los controladores más comunes.
Debido a todas estas diferencias es posible que desee abstracta del sistema de vibración para jugar un número limitado de alto nivel macro-efectos por su nombre en un tiroteo y olvidar la moda: PlayVibration(player, "Got Loot");
, PlayVibration(player, "Heavy Fall");
, StopAllVibrationFor(player);
, ...
Luego tendrá que crear efectos de vibración de bajo nivel y un código de control de vibración adaptado a cada plataforma individualmente .
Incluso para un juego de música que requiere un solo golpe PlayVibration
para cada latido es más fácil de administrar y controlar cuando se tiene en cuenta la pausa del juego y los problemas de volver a sincronizar un generador de efectos periódicos que podría ser inteligente.
Si bien los dispositivos con un ruido real accionado por un solenoide pueden tratarse como un dispositivo de audio y usar API de audio debido a problemas con la batería, esto puede entrar en conflicto con las regulaciones del sistema si el solenoide está constantemente encendido / activo . El "Nivel de potencia 0" puede no ser el mismo que el "Solenoide desactivado", por lo que incluso entonces se necesita un cuidado especial.