I spent all morning finalizing the Zombifier applet for the client, and am waiting on one final bit of direction before that's totally done. In the meantime I've been refining the basics of HeroMachine 3.
I became frustrated with the whole concept of the hierarchy. I couldn't figure out how to retain all of the various features being requested -- slots in multiple groups AND the ability to layer each item independent of which slot it was in AND making it easy to draw the items in the first place AND having a mechanism to place the items in their default position. I spent a lot of time just staring blankly at the screen, or out the window, or at the bookshelves, just letting it all sort of percolate.
I find myself in that position fairly often in the early stages of planning something like this. I'll pull out a legal pad and hand-write out some various scenarios, sketching how a menu might look or actually writing the questions down that are in my head. It helps me to be able to articulate what exactly is bothering me. I'll also have a couple of different programs open that help me organize my thinking -- in this case, Excel, TextEdit, and Flash were all helpful.
At this point, I think I am basically going to have a setup very much like the recent Minis, only with a lot more options and a new organizational layer thrown in. There are 40 different slots (Torso, Insignia, Neckwear, Right Shoulder, Right Bicep, Right Forearm, Right Hand, Left Shoulder, Left Bicep, Left Forearm, Left Hand, Back, Hips, Belt, Rear, Right Thigh, Right Knee, Right Shin, Right Foot, Left Thigh, Left Knee, Left Shin, Left Foot, RightItem, LeftItem, FreestandingItem, Foreground, Middleground, Background, Companion, Label, Head, Headwear, Eyes, Nose, Lips. Ears, Hair, Beard, Mustache).
Here's a sample of what the new "Slots" tab in that bottom right area might look like:
On the left would be the scroll box containing all 40 slots. Clicking on one would populate the menu on the right with all the sets of items available for that slot. For instance, if you were to choose "Headwear" from the slot menu, the "Sets" menu might show "Eyemasks", "Full Face Masks", "Glasses", "Modern Casual Headgear", "Fantasy Headgear", "Modern Military Headgear", etc. You'd be able to load all six (or however many there are) sets if you wanted; the menu would show you which were loaded/active and which weren't.
I think I've figured out a way to do all that AND retain the hierarchy concept, on the code end, anyway. In terms of where in the interface that will live, I think it'll have to be part of the new "Transformation" tab, which will be the new home of scaling, moving, and rotating. Because Flash only lets you drag one thing at a time, I'm going to have to remove the ability to click and hold on an item and drag it where you want. Instead I'm going to have to treat it like I do the rotating and scaling, where you're manipulating items via a separate control instead of by directly clicking on it. So on this new tab area will have to be a list of all the groups the current item is part of. For instance, if a "Left Hand" is the current item, in the Transformations tab you'd see toggle buttons for "Just the item", "Left Lower Arm", "Left Arm", "Upper Body", "Whole Body", and "Everything". If you were to change to, say, the Insignia, the list of toggle buttons would also change to show "Just the item", "Torso", "Upper Body", "Whole Body", and "Everything". And so on.
Currently I am a bit vague on exactly how that's going to actually work, although the underlying framework it would be built on I think I have figured out. I think.
All of this detail stuff is mind-numbing, and it seems like every time you think through one aspect, three problems arise that also have to be wrestled to the ground. But before I race off and start laying down code or drawing objects, I want to be sure I've thought through what exactly the user is going to be doing in order to make whatever I'm working on take effect.
Holler if you see any problems with any of this, and as always everything's subject to change without notice once I actually start building it.