Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selecting good, non-conflicting keybindings for a game

Tags:

input

keyboard

PC keyboards weren't designed for gaming, compromises were made to bring the price down, so some problems occur. Most importantly, when you hold down certain keycombos, some keys don't react to pressing.

My game has two users at the same PC control two characters in realtime (i.e. not turn based). An instance of the problem: player 1 holds Up and Left to go in that diagonal direction. Player 2 is then unable to go to the right (with "D"). Beyond being merely annoying, it can give an unfair advantage to a player who opts to use the bug as a cheat. Not fun :(

The basic commands are: shooting, walking left and right, and jumping. Shooting is done with LeftControl and RightControl, which don't conflict with anything, so let's consider only the movement keys.

On my laptop, most obvious keybinding combinations fail:

  • WAD and arrow keys fails with Up+Left+S and Up+Left+D
  • IJL and arrow keys fails with Down+Right+J (though Down is technically unused, a player often holds it down anyway)
  • arrow keys and numpad keys fail with Down+Left+NumpadLeft
  • all-letter combos like WAD and IJL tend to work, but I don't like leaving the arrowkeys unused, and crowding the users' hands together.

Is there a website that list statistics of common supported keycombos on various keyboards, to help me make my decision for defaults? (they're configurable, but defaults matter.) I seem to recall a relevant site called keyboardssuck.com, but I can't find it now.

How have you dealt with this problem? Just ignored it?

Does the problem depend on the OS, the API, the mobo? On anything else? I think it only depends on the keyboard model, but gotta ask.

edit: Now I know what this is called: "rollover"

like image 456
Stefan Monov Avatar asked Oct 30 '09 16:10

Stefan Monov


1 Answers

The best bet is probably to let the user choose his own keybindings.

like image 100
Tom Avatar answered Dec 08 '22 17:12

Tom