Includes

Bars

2009-07-17

Volume-based Inventory GUI with Full Motion

I previously posted about an alternative to grid-based and slot-based inventory systems called "volume-based inventory" where instead of an object occupying a visual "honeycomb" in the GUI, it would take up real physical space on your person (pockets, backpack, etc). It was an effort to make an inventory system which made more real-world sense, but I also want to try using it to make a more immersive gaming experience.

Alone in the Dark (2008) also tried to re-invent the inventory screen for a more immersive experience. What they did was have your character open their jacket to access items and have you select items from a first-person perspective. They wanted certain items in your inventory to be instantly-accessible during combat. However, it proved to be just a re-skinning of a traditional slot-based inventory screen.

I think I've come up with something better for what they were trying to do. However, it requires Full Motion.

RECALL:
  • The most recent Full Motion system at time of writing is able to track the locations of your hands and head in 3D space and makes educated guesses about the rest of your body.
  • It involves a controller (one in each hand) that features (among other things) one-to-one motion tracking, rumble, and (at least) two buttons. These two buttons are bound to in-game functions called "grab" and "interact".

NOTE:
  • Some objects (such as a giant red panic button) don't have to be grabbed in order to be interacted with.

The most convenient way to make items instantly accessible during combat is to dedicate a button to each item. Since we don't have that luxury on a gaming console, we need some other way to have instant access.

With a Full Motion system, we can make the character mimic the player's body movement. For example, if the player puts their hands on their hips, the character would do the same in real time. We can use this to instantly access any virtual object physically attached to the character's body, such as a pistol in a pistol holster.

Here's how you would instantly access that pistol. You would move your hand to where the holster would be if it were real. Since you can't actually feel the holster there, the game would inform you via rumble that the character is touching the holster. This is an example of a "haptic interface".

Once your hand touches the holster, an icon would appear on screen:
The purpose of this icon is to tell the player what they would grab if they were to click the "grab" button. In this case, it's saying that the player can grab the pistol. To grab the pistol, you simply click the "grab" button while your hand is next to the holster. To put it back in the holster, you do exactly the same thing: move your hand to the holster, and click the "grab" button.

NOTE:
  • Holsters, pockets, backpacks, etc. are all types of "containers".

Instead of a holster, let's say the pistol is in a jacket pocket along with several other objects, such as a key and a lighter. Since we have more than one object in the pocket, the most needed item needs to be set as the default, that way you can grab it instantly without having to "feel around" for it.

DESIGN STUFF:
  • Containers remember what their default object is even when you take that object out. This allows you to put the object back in the container and have it remain as the default object. 
  • The default object of a container is always set manually unless the old default object is dropped or placed in another container. In which case, a different object is made the default (how this is decided is configurable). 
  • If no default object is set, the container icon would display a different object each time you reached for the container.

Okay, so you can access a default object instantly, but what about everything else? In order to access a specific item, most games would have you open a large, flow-breaking inventory screen. In truth, we do need such an inventory screen for the sake of item management (and I'll show what that would look like later), but in combat we'll probably need full access to any given individual container on the fly.
  • Hold "grab" for a second while touching a container = Open container
  • Hold "grab" for a second while not touching anything = Drop held object
DESIGN STUFF:
  • The reason we don't use the "interact" button for "open container" is because you want to be able to interact with the object currently in your hand even when that hand happens to be close to a container.

"Open container" would display a small window off to one side of the screen showing the different objects in the container:
The interface in this mock-up is as simple as it gets. There are no slots or grid squares. All that matters is that there's stuff in a container, and they take up space.

The default object is at the top, and everything else is on the bottom. The numbers in the lower right are the combined volume of the objects and the capacity of the container.

NOTE:
  • Normally, you can't put stuff in a container if the container is full.

Here are the functions of the container window:
  • Click "grab" on an object = Take object
  • Click "grab" while holding an object and pointing at the container = Store object
  • Click "grab" and drag an object from bottom to top = Set default object
  • Click "grab" and drag an object from top to bottom = Clear default object
  • Click "grab" and drag an object out of the container = Drop object
  • Put your hand down = Close container

DESIGN STUFF:
  • If you implement the "overflow exception" in a volume-based inventory system you may want to force the overflowing object to always be the default object. 
  • To keep the player from accidentally dropping things, "drop object" would need to only trigger when the object is dragged significantly outside the container. 
  • After triggering the command for "open container", you may want to wait for the player to point at the screen before you show the contents of the container. You could indicate to the player that they should point at the screen by strobing the container icon.

The full "inventory screen" would work the same way, but show all containers at once.
In this mock-up, the figure at the top represents the character's avatar. Pointing at any of the container windows would highlight the location of the container on the avatar's body. Pointing at what the avatar is wearing would show pop-up windows regarding the item being pointed at. To equip don an article, simply drag the article from its container to the avatar. To doff an article, drag it from the avatar to a container.

NOTE:
  • Your hands act like containers, they're just not shown on the inventory window. 
  • Be aware that some items if they can't fit in a container have to be carried with both hands.

You can put any number of items in any container while on this screen, regardless of object size. This makes it much easier to manage your inventory. However, if there's too much stuff in a container (indicated by a pale red background inside the container), you won't be able to exit the inventory screen. The "FIT" button (grayed out here) if clicked attempts to rearrange the objects in your inventory so that everything fits. If it can't, it's covered with a big red 'X'.

DESIGN STUFF:
  • The "FIT" button tries to not move default objects unless absolutely necessary (ex. the default object is simply too big for the container).

On top of all this, you could also have several containers that only accept one of a certain kind of object (like how a pistol holster can only hold a pistol). This would allow you even more instant-access objects.

AFTERTHOUGHTS:
  • Telling the player how much space has been taken up in a container is relatively useless. Instead of that display showing "1025 / 1500", it should say "475 free of 1500".
  • While in the inventory screen, like items stack.
  • While in the inventory screen, tilting your hand 90° could switch the pointer between "pickup one" mode and "pickup all" mode.
  • If you "grab" an item from a container while that container's window (or the main inventory window) is not up, it will not finalize the grab until you remove your hand. Until you do, clicking "grab" will cycle through the items in the container by recency.

1 comment:

  1. Hm. This is an interesting idea. I like the idea of a Full Motion game, if one were to be made, this kind of inventory system would be a must. It would make for a good, fast-paced action game. Instead of pausing to pull out a gun from an inventory screen, it would be more realistic in that you could get shot yourself before you even pull out the gun. Either way, I'd love to try this. Great job.

    ReplyDelete