Some Final User Interface Tips

As parting advice, there are a few random, but important, tips I can give you on user interface work.

All rectangular interfaces are boring.

Localization can make a mess of your UI.

UI code is easy to write, but making a good UI is a black art.

If your interface code doesn't use polygonal hit testing or bitmap collision, you are destined to have legions of square buttons and other controls populating your interface. That's not only a dull and uncreative look, but your artists will probably strangle you before you ever finish your game. Artists need the freedom to grow organic shapes in the interface, and will resist all those vertical and horizontal lines.

Localization is a huge subject, but a significant part of that subject is interface design. You may hear things like, "make all your buttons 50% wider for German text," as the end all, be all for localization. While that statement is certainly true, there's a lot more to it than that. It's difficult to achieve an excellent interface using nothing but icons, instead of clear text labels. We attempted that on one of the casino games we developed, and we were completely stymied with the problem of choosing an international icon for features like blackjack insurance and placing a repeat bet on a roulette table. The fact is that international symbols are used and recognized for men and women's bathrooms and locating baggage claim, but they are only recognized because they are advertised much more aggressively than the unique features you use in your games. If you use icons, more power to you, but you'd better provide some tooltips to go along with them.

A truly international application has to conform with much more than left to right, top to bottom blocks of text. Asian and Middle Eastern languages don't always follow western European "sensibility." All you can really count on is being able to print text to a definable rectangle. If you have to print lots of text, consider using a well-known format like HTML and be done with it.

When you design your user interface, know your audience. Older players are more comfortable with menus and labeled buttons. Younger players enjoy the experience of exploring a graphical environment with their mouse and clicking where they see highlights. This is extremely problematic if you are a youngish programmer writing games for little kids or your parents. They simply don't think the same way you do, and nothing you do in your interface code will change that. Mimic proven solutions if you can, but always get a random sample of your target audience by taking your interface design for a test drive.

There's nothing more humbling when you stand behind someone playing your game and silently watch them struggle with the simplest task. You want to scream at the top of your lungs, "Simpleton! How do you find enough neurons to respirate?" In a calmer moment, perhaps you'll realize that the one with missing neurons looks back at you from mirrors.