Dynamic Pie Menus

The pie menus in The Sims are context sensitive, and hide inappropriate items, but the context depends on the state of the object and the selected user, so there are many different contexts which change dynamically over time.

So part of the game is figuring out how to manipulate the objects and people into the right state to enable the menu items you want.

Since The Sims game design requires that the menu items do change over time, that trumps the rule of thumb that pie menus should be used for static menus. User interface design involves weighing conflicting rules and making trade-offs according to the application and user requirements, so it's ok to break a few rules for good reasons.

An inactive TV set just has a "Turn On" menu item. When you activate it, the "Turn On" item disappears and is replaced by a bunch of items like "Turn Off", "Watch TV", "Change Channel," etc.

If you click on another Sim character, you get a menu of interpersonal interactions that the currently selected Sim can perform with the other Sim you clicked on. Those can change according to their relationships and moods.

The Dumbold Voting Machine is a free downloadable Sims object that lets your Sims vote using pie menus. The voting machine can be in different states: turned off, turned on and booted, and election started and voting. The items on the pie menu change according to the state. It also has other state variables like Printer Enable, Network Enable, Debug Mode, Voter Roll, and the Votes themselves, which you can change by monkeying around with the voting machine.

The items can vary according to the selected character: Each Sim can only vote once (unless some monkey reset the voter roll or left it in debug mode). After a Sim votes, when you click on the voting machine again, instead of getting a pie menu of candidate names, you just get an item that thanks you for voting, and reminds you can only vote once.

Pie menus are easier to use when they have eight or fewer items. But the game design requires that more than eight items be displayed some times.

So pie menus must be able to handle situations with more than eight items, and still be easy to use. The pie menus in The Sims cope with that situation in two ways: overflow items and paging. If you have more than eight items, the overflow items are put above and below the pie menu, so you can select them by pointing at them, but they're not selected as part of the pie. You have to actually move the cursor inside of the label to select the overflow items, while the pie items can be selected anywhere in their wedge shaped slices that extend to the edge of the screen.

If there are even more items than will fit in the top and bottom overflow areas, then it puts the extra items on another page that you can browse by hitting the tab key.

It's obvious how to use the overflow items, but the paging is quite obscure, with no visual indication that it's possible. It is documented in the manual and in faq's, but not many people know about it or use it, because it's rarely necessary.

The paging feature is badly designed and was put in as a last resort, more like an easter egg that can hide the last few items in overpopulated menus. But most menus don't have enough items to require paging (because that's a bad design in its own right), so it's rare that paging is ever necessary. Objects tend to put the most important menu items first, and paging was really only useful during game development when many extra debugging items were enabled.

My old ActiveX pie menus support a paging feature, but I didn't like it because it was too weird. After making those illustrations, I changed it so it doesn't display all the pages at once, just the next and the previous pages, but I still wasn't happy with it. A much simpler paging interface is to have a next and previous scroller in an inner ring around the pie menu center, like an inner two-item pie menu (or four, with "home" and "end"). Clicking in the paging ring scrolls through the items, but doesn't pop down the menu.

Menus that will be changed dynamically, i.e. a kill ring menu, should always have the "current item" at the top. That way, you always know where it is, and can choose it without even having to look.