# Keyboard shortcuts in RTS game

Imagine you have a multiplayer RTS game (e.g. Dune, Age of Empires, Settlers, Warcraft). There are certain commands available from keyboard to command the troops (Stop, Attack, Move) and some more general commands like Pause or Exit. The game is localized into many languages (18+).

I can see two possible ways of using keyboard shortcuts:

A. Use first English letter of said commands ("S", "A", "M", "P", etc.) for every locale.

B. Use first letter of the word on that locale (e.g. Russian shortcuts will be "С", "А", "Д", "П". German will be "H", "A", "S", etc..)

Which of these (or suggest your own) approaches is better when choosing the shortcuts for multiple locales?

P.S. Of course the shortcuts might be customizable by player, but some sane defaults are still needed.

• All the answers thus far assume a QWERTY layout. This is not the case for many keyboard layouts. Making a distinction between the physical keys and the glyph it happens to correspond to is probably a good idea. The french with their AZERTY and the germans with their QWERTZ will be happy, not to mention the DVORAKians and COLEMAKians. – Lars Viklund Mar 6 '12 at 12:17

I'd say it's a good idea to set the hotkeys around the WASD area. At first it might be more intuitive to associate the command to its first letter, but it becomes a pain after you realize you have to push A and P 120 times a minute while handling mouse commands.

With the hotkeys set from Q to R, A to F and Z to V, we have a series of advantages:

• You never get lost since you always know where the letter F is;
• They are close to each other in a way you never waste time moving your hand across the keyboard (this is specially important in highly competitive games like Starcraft 2), making it confortable at the same time;
• It also keeps your hand close to the numbers, which you'll use all the time to select groups of units.

It's better to ignore the language and stick with hotkeys that become an advantage to the player who gets used to it, instead of the opposite.

• In addition, it is nice for the player to be able to rebind said keys for added comfort. – petervaz Dec 28 '12 at 15:51

If you set your interface up right, the association should be muscle memory, not the letter.

I always like the keystrokes in Diablo II where each bar was just a row of keys, you didn't have to think about what the developer called something, just where you put it on your HUD.

Perhaps the same approach could work in an RTS?

• in warcraft 3 there is a small application to perform exactly this: map the button grid in the lower right part of the screen to an equivalent grid on the keyboard. – Simon Bergot Mar 6 '12 at 14:21

I'd never expect shortcuts to be in my language. Pretty much everyone who plays games knows English, it became a standard, and it's always a good idea to keep up to the standard. So stick with English.

• This is actually confusing and leads to poor memorization, although localizing shortcuts is confusing too: you'll expect people talking about your shortcuts in the web. In StarCraft shortcuts were localized and it kinda ruined any attempt of communicating shortcuts to other players. – kaoD Mar 6 '12 at 11:14
• How is having something universal confusing? Also, I doubt that it leads to poor memorization. You know the starting letters of words in your language better than in English (most of the time), so it's logical that you enchance your memory by trying harder to remember something. – jcora Mar 6 '12 at 12:25

In Natural Selection hotkeys were assigned to positions. If the command panel was something like:

 _____
|_|_|_|
|_|_|_|
|_|_|_|


Shortcuts would be:

 _____
|Q|W|E|
|A|S|D|
|Z|X|C|


You could also configure your own shortcuts, but the default was great because you just had to remember positions, not complex combinations of hotkeys. Also, it allowed me to make faster actions since my hand didn't have to travel all around the keyboard: it was just sitting at the left-side of the keyboard and barely moving.

I'd prefer one scheme over all locales, to make cross-language communication easier. Also it saves you a bit of work and eliminates a potential source of bugs.

Most important, for whatever scheme you settle for, is displaying the shortcut in the GUI, so players can quickly check the shortcut for any button they can press. So when you have a button for Move, Attack, etc., always label the button as "Attack (A)", "Move (M)", etc. Your players can then learn the shortcuts much quicker than if you hide them in the rebinding options or even the manual.

Well firstly, I'd say, "don't!" Professional Starcraft2 players regularly switch up their bindings until they're happy with the result. So while "building zerg drones" in the default mapping is 4+s+d it may be totally different on someone else's profile. I think Starcraft 2 even goes so far as to allow users to upload their settings to "the cloud" so that whenever they log in at a tournament everything is setup correctly.

So...what I would suggest is this:

1) Create enums for each command "create worker, built building, etc."

2) in a text file have mappings for keyboard values (w,a,s,d) to certain commands (attack, move, etc.)

3) ???

4) Profit

This way users can setup the mappings how they wish, and later on, you can go back and make a "shortcut editor" in your program that will edit this text file. In general, user input settings should never be hard coded.

A is more general and once you have set shortcuts you are sure if they overlap each other or not, witch can happen when you automatically translate orders.

Of course you have to let users to change them. Think about creating some patterns which trusted translators can change.