January 12th, 2009
Here at Wolfire, we're a small team but we want Overgrowth to have lots and lots of content. So, it's really important for us to have powerful tools to speed up asset creation. One of the main things I've been working on is the map editor.
We want to make our editors as easy to use as possible. It's pretty obvious, but it's humans that are going to be using these and that's important. It means we should design our tools around the things humans are good at and bad at. Here are some of the human-centered ideas that have been motivating our design.
Limiting Information Load
I've been trying out a lot of game editors and modeling tools. One common issue I've come across is many of these tools have bloated interfaces and control schemes that are difficult to learn. Often times there are dozens of tools to select between, and users have to navigate through long menu lists to find what they want. Blender is a good example. It's does a lot of things really well, but it's UI is daunting.
I find it easy to get lost when given so many options and so many readouts all at once. Other people are probably similar: a lot of studies have shown that humans can only actively process about four distinct items at once. Luckily, by some miracle of the human brain, there's a lot of leeway in terms of how much information these four items can contain. We can chunk little items together to make bigger items, and then process the whole hierarchy with relative ease. If you want to try this out, write down a 10 digit number and try to remember it for awhile without looking at it. Now imagine it as a phone number. Is that easier? Phone numbers (U.S. numbers at least) contain two or three clusters of three or four numbers -- all manageable quantities.
For Overgrowth, we're applying this chunking principle to the organization of controls. For example, the basic transformation tool gathers together three distinct sub-tools: translation, rotation, and scaling. The particular sub-tool that gets chosen depends on where you click on the object you want to manipulate. Thus, when you're deciding where to click, you only have to think about three categories of manipulation, and earlier, when deciding which root tool to use, you again only had a few choices. As another chunk, there's a set of three basic keyboard modifers. 'Shift' locks transformation to a line, 'control' activates snaps, and 'alt' clones the object as it is moved. These modifiers function in more or less the same generic way no matter which tool you are using, and I think this makes it easier to cognitively distinguish them from the choice of tool. Anyway, the idea is to have modular and hierarchical controls, thereby avoiding infomation overload as much as possible.
Reducing Dimensional Difficulties
One of the prevailing problems we have to deal with is figuring out how to control three dimensions when computer input devices only provide two degrees of control (you move the mouse on a flat, 2D surface). Similarly, computers only tend to provide output in two spatial dimensions (monitors display 2D images with no inherent means for depth perception). These factors make it hard to deal with free, fully 3D manipulation on a computer. And it's not just bad i/o devices: we humans just generally get confused when we're given more than one or two dimensions to think about. This problem often comes up in zero gravity games, in which you can move about in all three dimensions. For example, play Descent for awhile and try not to get disoriented.
For Overgrowth, we want all the tools to have cognitively manageable degrees of control. So, translation is always locked to a line or a plane. Scaling is determined by only one or two dimensional input. Even 'free' rotation is actually parameterized by just two variables (since it's just movement along the surface of a sphere). The idea is you never need to manipulate more than one or two dimensions at once.
Because of their complexity, a lot of game editors end up requiring serious tutorial investment in order to learn. We want Overgrowth's editors to be more immediately accessible. One way we're doing this is by trying to make controls that do exactly what a player expects they should do. We're going to need a lot more playtesting to work this all out, but we have some initial ideas. We've separated all mouse control into two basic categories: left-click for generic control, and right-click for more specific, contextual control. Ideally, a player with no experience will naturally stumble upon the generic controls, and simply start dragging objects around the screen with no confusion. I've made an effort to lock all mouse movement to one to one correspondence with game object movement, so there are no tricky gadgets to get the hang of; (except in a few special cases) the object should just follow the intuitive physical movements of the mouse. Of course, we can't count on all players stumbling into such understanding, so we'll be adding some hints when the editor is first used. But as much as possible these will be graphical and unobtrusive; we don't want a lengthy, textual tutorial turning users away.
Another way we are making the map editor accessible is by keeping it fully in-game. In fact, right now the map editor is just some meta data and controls running on top of the regular gameplay engine. This means that any player who becomes familiar with the game will be immediately familiar with the basic look and feel of the editor. This differs from, for example, Valve's Hammer Editor, which runs in a very distinct environment from the games it edits. However, lots of other games do have in-game editors. One that really inspired us is the Little Big Planet editor. While the controls are tricky, the environment is very familiar to anyone who has been playing the game, and the editor becomes correspondingly accessible and even fun. You can play music, change clothes, and turn on and off physics all while in the editor; best of all, you can do this with multiple friends at once. This is the spirit we want for the Overgrowth editors. They should be fun in and of themselves.
As cool as it is, LBP is not the only thing inspiring us. Far Cry 2 has a really nifty paintbrush tool that sprays vegetation on the landscape, and Aquaria showcases some nice mechanics for compositing 2D environments, just by cleverly layering lots of sprites. If you have another favorite editor, please let us know about it in the comments!
I'm always looking for new input on the editors. So far, I've been able to work closely with our artist, Aubrey, to make tools that are actually useful to him -- we share an apartment, so it's really easy to coordinate. But Aubrey's not the only one who's going to be using the tools. We're also making them for modders! If you have any suggestions or specific feature requests, I'd love to hear them. Comments here, forum posts, irc chats... all are good.
Last of all, here's a quick visual tutorial of the basic object controls, based off the great graphic by Silverfish in the forums!
Basic object manipulation. Yellow refers to translation, green to rotation, and blue to scaling. Boxed areas are the hotspots for sub-tool manipulation when using the 'omni' tool. Arrows show right-click movement sets. All control types and hotspots exist on all faces, they are just separated here for clarity.