Uli's Web Site
[ Zathras.de - Uli's Web Site ]
Other Sites: Stories
Abi 2000
Stargate: Resurgence
Lost? Site Map!
     home | blog | moose | programming | articles >> blog

 Blog Topics

15 Most Recent [RSS]

 Less work through Xcode and shell scripts
2011-12-16 @600
 iTunesCantComplain released
2011-10-28 @954
 Dennis Ritchie deceased
2011-10-13 @359
 Thank you, Steve.
2011-10-06 @374
 Cocoa Text System everywhere...
2011-03-27 @788
 Blog migration
2011-01-29 @520
 All you need to know about the Mac keyboard
2010-08-09 @488
 Review: Sherlock
2010-07-31 @978
 Playing with Objective C on Debian
2010-05-08 @456
 Fruit vs. Obst
2010-05-08 @439
 Mixed-language ambiguity
2010-04-15 @994
 Uli's 12:07 AM Law
2010-04-12 @881
 Uli's 1:24 AM Law
2010-04-12 @874
 Uli's 6:28 AM Law
2010-04-12 @869
 Uli's 3:57 PM Law
2010-04-12 @867


Text adventure tricks for UI design

There is a lot to be learned from people who create text adventures. A text adventure, or interactive fiction as it is sometimes called, is basically a way to tell a story inside the computer and allow the user to manipulate objects in this story and this way drive the actual unfolding of the plot.

Since computers are still not able to understand human thoughts (although the dictation software I'm using to write this proves that they are getting closer), text adventure designers have to employ a lot of clever little tricks to give the appearance of the program understanding what the user is writing. This includes faking your way through language.

People who know a lot about linguistics and natural language processing may be tempted to just give up and claim pretending to understand the user would never be possible. However, text adventure developers quickly became aware of the limited means that the user has to interact with their work. The only thing the user can do is type in text and read text replies generated by the program.

This in turn means that your world model does not have to accurately reflect the actual world. For example, you can take one real world object and split it up into several objects that perform the different functions the object has in the real world. Similarly, if you have a whole bunch of objects they can all be implemented as one single object in your code. Since the user only sees the text they output, they will not even notice that there are three people talking to them instead of one.

The same approach can be applied to other kinds of programming. For example, in user interface design, you can have a single view that displays data on several tabs. You could achieve this, by using a group box and a segmented view to fake a tab view, and changing a few flags on your custom view. As long as it looks and behaves identical to the user, almost everything goes.

This is a useful technique if you want to avoid modes: Instead of providing a mode switch, simply hide it behind a view switch. In addition to finding a good label for each view, you can help the user remember the limitations of the various modes by making the views more unique, for example by using different colors, different icons, or other easily differentiated characteristics. Sometimes, it may also help to move other technically unrelated controls into such a switcher.

For example, if you had a timeline, and you want to the user to be able to switch between arbitrary parts of tracks or just rearranging clips, you could just pretend that there were two different views, even though they might be implemented as the same thing under the hood. Your entire main Window's contents might be inside this tab view, and seemingly be switched out and in if you use the tab's segmented view, while all you may be doing under the hood is change the measurement units used.

Of course, if you decide to fake something, you'd better fake it good: It wouldn't do to select part of a track on which an error occurred, while everything is still switched to the clip view. That would destroy the whole illusion of them being two separate things.

Reader Comments: (RSS Feed)
No comments yet
Or E-Mail Uli privately.

Created: 2007-12-16 @830 Last change: 2008-06-16 @904 | Home | Admin | Edit
© Copyright 2003-2023 by M. Uli Kusterer, all rights reserved.