Katakanlah saya memiliki game yang menggunakan kontrol WASD pada tata letak QWERTY. Mencoba menggunakan kontrol ini pada, katakanlah, tata letak Dvorak tidak ideal (setara dengan <A:H
pada QWERTY). Jelas, saya ingin menggunakan kunci fisik yang sama seperti yang akan digunakan QWERTY ( ,aoe
pada DVORAK).
Saya telah menemukan beberapa solusi yang mungkin:
- Paksa pengguna untuk menggunakan QWERTY
- jelas tidak ideal, terutama bagi pengguna internasional
- Ubah pintasan berdasarkan tata letak keyboard (WASD ->, aoe)
- memaksa saya untuk membuat peta tata letak untuk setiap tata letak yang didukung (automatable)
- termudah bagi pengguna jika ada lebih banyak cara pintas dari sekadar WASD
- Paksa pengguna untuk menentukan pintasan sendiri
- Lebih fleksibel
- Mengganggu jika ada banyak cara pintas
- Dapat digunakan bersamaan dengan opsi kedua
- Gunakan kode kunci perangkat keras
- konsisten di seluruh keyboard?
Bagaimana hal semacam ini biasanya ditangani?
Anda harus selalu memberi pemain kemampuan untuk mengubah tugas utama mereka. Begitulah "biasanya ditangani": biarkan pemain mengubahnya. Beberapa pemain akan mengatur keyboard mereka ke QWERTY ketika mereka bermain game karena itulah yang diharapkan sebagian besar game. Beberapa akan membiarkan mereka diatur ke keyboard mereka saat ini dan bergantung pada kemampuan untuk mengubah tombol.
sumber
Dalam hal ini Anda tidak dapat mendengarkan kode pindai (seperti misalnya ketika mengembangkan permainan flash) Anda dapat membuat pengikatan kunci yang berfungsi untuk tata letak sebanyak mungkin. Sebagian besar tata letak keyboard sangat mirip, hanya dengan beberapa pengecualian.
Layout keyboard yang mengikuti ISO 9995 (sebagian besar) disusun seperti ini:
Pada dasarnya kunci hitam aman digunakan.
sumber
Sebagian besar game beranggaran besar (yang memiliki distributor internasional) akan bekerja di luar kotak, menggunakan ZQSD alih-alih WASD untuk layout azerty. Gim yang layak juga akan memperkenalkan tata letak di tingkat pertama, yang lain akan membiarkan pemain menemukannya melalui layar penyesuaian. Strategi implementasi dapat dideteksi dengan meminta OS untuk mengganti tata letak. Entah permainan menggunakan scancodes (posisi) secara internal, dan memetakannya keycode (simbol) saat menampilkan dialog konfigurasi dan konfirmasi; atau menggunakan kode kunci secara internal, dan mendeteksi tata letak saat startup atau pada peluncuran pertama.
Strategi pertama (scancodes internal) lebih kuat, tetapi memang membutuhkan sedikit perhatian untuk mencegah abstraksi bocor. Ingatlah untuk memetakan ulang scancode menjadi kode kunci saat menyajikan kunci kepada pengguna (dalam tutorial, prompt, dan dialog kustomisasi). Anda masih perlu melihat kode kunci saat mengambil input teks (misalnya, membiarkan pemain mengetik nama mereka). Jika Anda perlu menangani lebih banyak teks dari itu, lihat menggunakan dukungan input teks platform, yang berada di luar lingkup mesin game (menangani kunci mati, capslock, copy-paste, metode input lanjutan ...).
Ketika porting game yang tidak pernah menggunakan scancode (yang tidak demikian halnya dengan mesin yang layak, karena scancode juga lebih dekat dengan perangkat keras dan lebih cepat), strategi lain mungkin lebih praktis. Anda dapat memetakan scancodes keycode menggunakan fungsi SDL2 SDL_GetKeyFromScancode dan SDL_GetScancodeFromKey , atau setara platform khusus. Jika Anda juga menggunakan loop acara SDL2, fungsi-fungsi itu akan tetap akurat di seluruh sakelar tata letak. Hindari fungsi seperti GetKeyboardLayout () pada Windows; tidak ada jaminan bahwa Anda akan dapat menemukan tata letak dalam daftar yang diketahui.
sumber