Dalam GUI, haruskah input ditangani ketika tombol ditekan atau dilepaskan?

12

Dalam sistem menu untuk permainan kami (memilih level, opsi, dll.), Pemain menekan tombol a pada gamepad untuk menuju ke layar berikutnya. Saya memberi kode pada sistem menu untuk menunggu sampai tombol dilepaskan sebelum mengambil tindakan apa pun (yaitu, menampilkan layar berikutnya). Beberapa umpan balik playtest terbaru menyarankan agar kita melakukannya dengan cara yang berlawanan: ambil tindakan segera setelah tombol ditekan. Saya ingin tahu, apa cara standar ini ditangani, dan apakah itu membuat perbedaan?

Venesectrix
sumber

Jawaban:

32

Dalam permainan yang dikendalikan oleh gamepad, di mana input kontrol secara langsung mengubah fokus GUI dari satu tombol GUI ke yang lain, tombol-tombol GUI itu harus diaktifkan ketika tombol pengontrol ditekan .

Dalam permainan yang dikendalikan oleh mouse (atau jika gamepad digunakan untuk memindahkan kursor mouse virtual di sekitar layar), tombol di layar harus diaktifkan ketika tombol mouse / controller dilepaskan di atas tombol yang sama di mana ia berada ditekan . (Jika pers terjadi pada satu tombol GUI, dan mouse kemudian dipindahkan, dan dilepaskan melalui tombol GUI yang berbeda, tombol GUI tidak diaktifkan)

Alasan untuk ini adalah bahwa keterampilan kontrol mouse manusia sangat bervariasi, dan seringkali orang mengalami sedikit kesulitan menentukan posisi kursor tepat di tempat yang mereka inginkan, atau bahkan mengatakan dengan tepat tombol GUI mana yang sedang mereka arahkan saat ini. Teorinya adalah bahwa orang dapat menekan dan menahan tombol mouse untuk membuat tombol GUI disorot, dan jika tombol GUI itu bukan yang ingin mereka gunakan, mereka dapat memindahkan kursor menjauh darinya sebelum melepaskan tombol mouse secara berurutan untuk menghindari menekannya.

Tetapi jika game Anda dikendalikan oleh gamepad, maka Anda benar-benar ingin mengambil tindakan ketika tombol gamepad ditekan, bukan saat itu dilepaskan.

Edit, lima tahun kemudian:

Sejak jawaban ini diposting, standar baru telah mulai muncul untuk menangani kursor gaya mouse yang dikendalikan oleh gamepad.

Dalam jawaban di atas, saya menyarankan agar ini diterapkan agar bekerja persis seperti kursor yang sebenarnya dikendalikan oleh tikus; sorot pada mouse-down, aktifkan pada mouse-up jika kursor masih di atas elemen GUI yang sama.

Tapi sekarang, kursor yang dikendalikan gamepad biasanya mengaktifkan aksi GUI setelah tombol gamepad ditekan untuk jangka waktu tertentu(biasanya sekitar satu detik). Jika Anda akan mengikuti sistem ini, Anda harus memiliki indikator di layar yang menunjukkan berapa lama sampai aktivasi akan terjadi (seringkali ini adalah lingkaran kecil di sekitar kursor itu sendiri, yang terisi ketika Anda semakin dekat dengan mengaktifkan tombol tombol hovered-over), dan Anda masih perlu menyorot elemen yang akan diaktifkan, selama tombol itu ditekan (dan mungkin merupakan ide yang baik untuk melakukannya kapan saja mouse berada di atas elemen, bahkan jika tombol tidak ditahan). Saat tombol ditahan, kursor seharusnya tidak dapat dipindahkan, untuk menghindari aktivasi elemen GUI yang tidak disengaja jika kursor berdesak pada saat terakhir.

Manfaat dari sistem ini adalah memungkinkan pengguna yang kursor gaya tetikusnya berada di tempat yang salah untuk menghindari pengaktifan elemen tersebut dengan hanya melepas tombol lebih awal; gaya mouse "menjauh dari itu sebelum Anda melepaskan" kurang alami untuk dilakukan pada gamepad daripada dengan mouse, dan pendekatan ini memungkinkan pengguna gamepad untuk membatalkan klik yang tidak diinginkan jauh lebih mudah.

Kami bahkan mulai melihat beberapa game bereksperimen dengan model interaksi kursor ini bahkan ketika kursornya digerakkan oleh mouse asli. No Man's Sky melakukan ini, sebagai salah satu contoh. Akan menarik untuk melihat apakah pendekatan ini untuk menangani interaksi kursor mouse akan menjadi semakin umum dan diharapkan pada tahun-tahun mendatang.

Trevor Powell
sumber
10
+1. Tindakan harus diambil saat melepaskan mouse, bukan mouse-down. Namun, agar ini efektif, elemen GUI itu sendiri mengubah keadaan visual pada peristiwa mouse-down.
Kylotan
+1 untuk kembali memperbarui pertanyaan 5 tahun agar tetap relevan.
lozzajp
Setiap kali seseorang membenarkan atau mengomentari salah satu jawaban lama saya, saya membacanya kembali untuk memastikan bahwa itu masih terbaru. :)
Trevor Powell
1

Saya akan mengambil tindakan segera setelah tombol ditekan.

Contoh terbaik di mana tindakan terjadi setelah kunci dirilis adalah di Starcraft: Broodwar. Ketika saya akan menekan tombol dengan sangat cepat, saya sering menekan tombol berikutnya sebelum sepenuhnya melepaskan yang sebelumnya yang menyebabkan beberapa perintah diabaikan. (1A Klik, 2A Klik, 3A Klik - 2 akan diabaikan)

Ini diubah di Warcraft III dan hasilnya permainan terasa jauh lebih responsif terhadap saya dan saya tidak pernah mengalami masalah 'sticky control group' dari Broodwar.

RoboKozo
sumber