Shawn Hargreaves Blog
My girlfriend (not a gamer) is addicted to Word Soup.
I (also not much of a gamer) am enjoying browsing through the many Community Games, admiring their tremendous variety, creativity, and (at least in some cases :-) polish.
But here's the thing: too many of these games don't respond when I press buttons on my controller!
Or rather, they do respond, but not to the particular button I was pressing. Sometimes I press A to begin, but the game was expecting Start. Or I try to navigate menus using the left thumbstick, but the game is listening to the d-pad.
I think the problem is that developers are looking at each screen in their game and thinking "what button should I use to control this?" That question only gives the right answer if the player has the same brain wiring and expectations as the developer. A better approach is to ask yourself "for every possible button the player might try to press, what would they expect it to do?"
In particular there are three rules it rarely makes sense to break:
Expanding that a little further for keyboard and mouse:
The fewer clicks the better. Allways.
Go back/return allways left, forward/continue right (because we read books that way). That can change with culture(japanese-books).
If you use icons a)try to find an archetype and b)allway give a textual hint. because a can change with culture or the icon is just to bad.
Green is good, red is bad. Also cultural.
Try to make your GUI for intelligent and not so intelligent people. Or give them a switch to change from standart to advanced. Nothing is more frustrating than a GUI that holds a person back to be more efficient.
Try to design the GUI in a way that a user does not have to change his hand from mice to keyboard all the time.
Allways give the user the possibility to change the keyboard-,button-layout. Not everyone plays like you do.
And something that is bugging me personally:
If i load a game and hit ESC once, i wanna be right in the main menu. I dont wanna see any crappy logos or intro movies. If i wanna see them, i have the 'credits' and the 'play intro' buttons in the main menu.
Fade in the music at startup!!! That way i have enough time to turn down the volume.
After I collect my input, I pre-process it to determine some special flags. For example, I'll have a couple bools: confirmOption (true if A or Start), cancelOption (true if B or Back), directionUp, etc, etc.
Depending on my game state, I'll use the flags rather than the actual collected input; it's nothing special, but it helps manage what you want your input to do vs what you want each button to do.