Saya ingin tahu tentang membuat dan menerapkan pola getaran untuk pengontrol konsol (untuk pengontrol PS4, jika ada bedanya).
Ada parameter delay dan kecepatan motor kan? Tetapi juga kita dapat memudar dari motor kiri ke kanan, atau membuat mereka bekerja bersama ....
Apakah ada cara standar untuk membuat pola-pola itu?
Sebagai contoh saya berpikir tentang membuat mereka dengan stereo wav audio dalam editor audio dan membaca file wav dalam kode saya untuk mengubahnya menjadi penundaan dan kecepatan.
Bagaimana ini dilakukan di industri game?
playstation4
force-feedback
jujur
sumber
sumber
Jawaban:
Kontroler dualshock PS4 memiliki nilai 1 byte untuk paket gemuruh kiri dan kanan, jadi ini pada dasarnya berfungsi seperti musik 8 bit.
Sebagian besar berada di belakang NDA, jadi sangat sulit untuk mendapatkan informasi tentang ini (bahkan informasi di atas sulit didapat, saya hanya mengetahuinya dari SDK pihak ketiga untuk node.js). Ini adalah informasi yang saya kumpulkan bersama:
Prosesnya secara harfiah seperti membuat musik stereo 1 byte (dan seharusnya dibuat oleh artis musik). Ini melibatkan menghubungkan pengontrol PS4 ke komputer dan menggunakan program untuk membuat pola gemuruh. Mereka membuat satu berdasarkan menebak, kemudian menjalankannya, kemudian men-tweak dan ulangi langkah-langkah ini sampai polanya terasa baik.
Beberapa keributan dihasilkan secara terprogram (seperti ketika mobil keluar dari jalan), tetapi ini biasanya berupa fungsi sederhana (seperti sinus) atau nilai konstan yang serupa dengan cara ponsel melakukannya. Bahkan efek yang paling kompleks terdiri dari mengalikan pola gemuruh yang dinormalisasi dengan kekuatan yang Anda inginkan.
SDK PS4 juga dilengkapi dengan beberapa pola yang telah ditentukan. Beberapa contoh adalah: pola gigi gergaji (terus meningkat, kemudian berubah dari 255 menjadi 0), gelombang sinus dan segitiga (meningkat menjadi 255 linear, kemudian kembali turun ke 0 linear).
Saya tidak dapat menemukan rincian tentang pengontrol lain (terutama HD Switch yang bergemuruh, bahkan patennya tidak menjelaskan cara kerjanya). Tapi mereka mungkin menggunakan pendekatan yang sama dengan paket gemuruh yang lebih tepat.
Sumber:
sumber
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.
sumber
Dari André LaMothe dalam Trik Guru Pemrograman Game Windows:
Sementara teks itu agak tua, pencarian cepat melalui MSDN untuk umpan balik paksa menunjukkan konsep yang disebutkan tidak banyak berubah; inilah ringkasan topik yang dibahas dalam Konsep Dasar Umpan Balik :
Dalam hal PS4, satu-satunya hal yang saya temukan adalah beberapa dokumentasi Unreal Engine 4 , yang menyatakan:
Seperti yang ditunjukkan oleh Stephane Hockenhull, setiap platform berbeda. Dan seperti yang disarankan dalam obrolan GDSE , mungkin detail untuk umpan balik kekuatan PS4 dibatasi NDA.
sumber