Tidak ada cara standar.
Perangkat yang berbeda memiliki kemampuan dan keterbatasan gemuruh yang berbeda.
Sebagian besar perangkat tidak mendukung "umpan balik kekuatan" yang sebenarnya (misalnya: roda kemudi yang ketika menekan trotoar / lubang akan memungkinkan programmer untuk mendorong kembali ke sudut tertentu) tetapi hanya bergemuruh di beberapa arah yang tidak terkendali / sewenang-wenang.
Jadi sebagian besar fitur Force Feedback yang disebutkan di MSDN / DirectX dan API lainnya tidak pernah benar-benar terwujud dalam praktik di pasar pengguna atau memiliki fitur yang buruk dan / atau tidak portabel. implementasi dari kontrol "pintar" (amplop, ulangi, dll) sebagai menjadi sangat tidak dapat digunakan sehingga dalam praktiknya pengembang sering dipaksa untuk hanya menggunakan kontrol ON / OFF secara langsung dengan implementasi efek mereka sendiri.
Perangkat yang lebih maju yang memungkinkan umpan balik kekuatan yang dikendalikan servo membutuhkan API khusus karena API input umum tidak mendukung parameter yang diperlukan (sudut yang tepat, gaya yang tepat, batas, dll.).
Menambahkan teknologi yang muncul seperti VR sarung tangan perasaan ke dalam campuran membuat API generik itu bahkan lebih kurang.
Implementasi yang paling umum adalah dengan dua motor DC dengan masing-masing beban yang tidak seimbang, satu berbobot lebih berat dari yang lain dan tanpa kontrol kecepatan yang tepat.
Minimal Anda memiliki kontrol on / off atas mereka dan dapat melakukan beberapa kontrol daya PWM terbatas tetapi tidak kontrol kecepatan yang tepat. Anda tidak tahu berapa kecepatan dan getaran yang dihasilkan sebenarnya. Pengontrol yang berbeda memiliki motor dan bobot yang berbeda yang akan berjalan pada kecepatan yang berbeda untuk pengaturan yang sama.
Motor harus berputar pertama dan membutuhkan daya penuh untuk sedikit waktu kemudian dapat PWM ke pengaturan yang lebih rendah. Penundaan spin up sangat membatasi daya tanggap.
Kontroler sering diperbarui sekali per frame yang memberi Anda frekuensi pembaruan sekitar 20Hz hingga 100Hz. Ini membatasi resolusi kontrol PWM Anda karena Anda tidak ingin motor berhenti pada pengaturan terendah. Dan Anda tidak tahu seberapa rendah motor pengontrol pengguna akhir dapat pergi sebelum berhenti (berhenti) sehingga Anda membutuhkan margin keamanan yang baik.
Beberapa persyaratan sistem membatasi apa yang dapat Anda lakukan dengannya.
Perangkat seluler biasanya hanya memiliki 1 motor getaran dan PWM mungkin tidak dapat dilakukan karena inersia rendah dari ukuran bobot dan laju pembaruan yang lambat. Sistem dapat memfilternya lebih lanjut untuk mencegah penyalahgunaan atau bahkan kerusakan (batas transistor driver daya dan lonjakan induksi) atau hanya subsistem GPIO yang sangat lambat.
Di ponsel, Anda mungkin terbatas atau ingin membatasi diri untuk "bergetar sekitar X * 50 milidetik" tanpa PWM.
Beberapa perangkat dan pengontrol yang lebih baru memiliki solenoid yang digerakkan seperti speaker oleh gelombang audio sampel tingkat rendah. Ini memberi Anda lebih banyak kontrol tetapi sama sekali berbeda dari pengendali yang lebih umum.
Karena semua perbedaan ini Anda mungkin ingin abstrak sistem getaran untuk memainkan sejumlah tingkat tinggi makro-efek dengan nama dalam tembak-dan-lupa mode: PlayVibration(player, "Got Loot");
, PlayVibration(player, "Heavy Fall");
, StopAllVibrationFor(player);
, ...
Maka Anda harus membuat efek getaran level rendah dan kode kontrol getaran yang disesuaikan untuk setiap platform secara individual .
Bahkan untuk gim musik yang memanggil satu-shot PlayVibration
untuk setiap ketukan lebih mudah untuk dikelola dan dikontrol ketika mempertimbangkan menghentikan permainan dan masalah sinkronisasi ulang generator efek periodik calon cerdas.
Sementara perangkat dengan gemuruh yang didorong solenoid yang sebenarnya dapat diperlakukan seperti perangkat audio dan menggunakan API audio karena masalah baterai, hal ini dapat bertentangan dengan peraturan sistem jika solenoid terus-menerus diaktifkan / aktif . "Level Daya 0" mungkin tidak sama dengan "Solenoid Off" sehingga dibutuhkan perawatan khusus.