Не існує стандартизованого способу.
Різні пристрої мають різні можливості та обмеження гучності.
Переважна більшість пристроїв не підтримують фактичну «зворотну силу» (наприклад: рульове колесо, яке при натисканні на бордюр / вибоїну дозволить програмісту відсунутись під певний кут), а просто гуркотить у деякому неконтрольованому / довільному напрямку.
Тож більшість функцій форсивного зворотного зв’язку, згаданих у MSDN / DirectX та інших API, ніколи насправді не реалізовувались на практиці на споживчому ринку або не мають таких поганих та / або не портативних реалізацій "розумних" елементів керування (конверт, повтор тощо), як бути настільки непридатним, що на практиці розробники часто змушені просто використовувати елементи ввімкнення / вимкнення безпосередньо з власною реалізацією ефектів.
Більш досконалі пристрої, які дозволяють зворотним зв'язком під керуванням силою, потребують користувальницьких API, оскільки загальні API введення не підтримують необхідні параметри (точні кути, точні сили, обмеження тощо).
Додавання нових технологій, таких як VR-рукавички для почуття почуттів, у суміш роблять цих загальних API ще більше.
Найпоширеніша реалізація - це два двигуни постійного струму з неврівноваженим навантаженням, кожен з яких важить важче за інший і не має точного регулювання швидкості.
Як мінімум, ви маєте ввімкнення / вимкнення контролю над ними і можете робити обмежений контроль потужності ШІМ, але не точний контроль швидкості. Ви не знаєте, якою буде насправді швидкість та отримана вібрація. Різні контролери мають різні двигуни та ваги, які будуть працювати з різною швидкістю для однієї і тієї ж настройки.
Двигуни повинні крутитися спочатку і потребують повної потужності на деякий час, тоді вони можуть бути ШІМ на нижчому рівні. Затримка віджиму значно обмежує чуйність.
Контролери часто оновлюються один раз за кадр, що дає приблизно 20 Гц до 100 Гц частоти оновлення. Це обмежує роздільну здатність Вашого керування ШІМ, оскільки Ви не хочете, щоб мотори зупинялися на найнижчих налаштуваннях. І ви не знаєте, наскільки низькі мотори контролера кінцевого користувача можуть перейти до зупинки (зупинки), тому вам потрібен хороший запас безпеки.
Деякі системні вимоги додатково обмежують те, що ви можете зробити з ними.
Мобільні пристрої зазвичай мають лише 1 вібраційний двигун, а ШІМ може бути неможливим через низьку інерційність від величини ваги та повільної швидкості оновлення. Система може додатково відфільтрувати його, щоб уникнути зловживань або, можливо, навіть пошкоджень (обмеження транзистора живлення та індукційні шипи) або просто дуже повільної підсистеми GPIO.
На мобільному телефоні ви можете обмежитися або хочете обмежити себе "вібрувати приблизно X * 50 мілісекунд" без ШІМ.
Деякі новіші пристрої та контролери мають соленоїд, як динамік, керований звуковою хвилею з низькою швидкістю вибірки. Вони дають вам більше контролю, але абсолютно відрізняються від звичайних контролерів.
З - за всі ці відмінності , які ви можете захотіти абстрагувати вібраційну систему , щоб грати обмежена кількість високорівневих макро-ефекти на ім'я в перестрілці і забути моди: PlayVibration(player, "Got Loot");
, PlayVibration(player, "Heavy Fall");
, StopAllVibrationFor(player);
, ...
Тоді вам доведеться створити віброефекти низького рівня та код контролю вібрації, адаптований до кожної платформи окремо .
Навіть у музичній грі, яка викликає один удар PlayVibration
на кожен такт, простіше керувати та контролювати, коли враховується призупинення гри та проблеми повторної синхронізації потенційного генератора періодичних ефектів.
Хоча пристрої з фактичним звуком, керованим соленоїдом, можуть розглядатися як аудіопристрій та використовувати аудіо API через батарею, це може порушити правила системи, якщо соленоїд постійно працює / працює . "Рівень потужності 0" може бути не такий, як "Соленоїд вимкнено", тому навіть тоді потрібен особливий догляд.