Inventory Management in Video Games

Crafting and inventory systems provide a good time-sink to have players pick up items, spend a bunch of time figuring out what to do with all that junk, and then craft some of it into even more junk they also have to deal with. The UI is often clunky and needlessly repetitive, making it more of a chore than it needs to be.

Most game inventories are one of two kinds, depending on how carry-weight works. Some games assign each item a weight and add up the cumulative weight of the inventory, and above some value the player is encumbered or overburdened. Other games simply have a finite number of item slots and stack limits on how many of the same kind of item can be in one slot, and once filled, the player cannot pick up more items.

The carry-weight game is somewhat more realistic, but it also tends to be more tedious to manage than slot-based games. For example, a common problem is storing items. How it currently works:

  1. Open a container and select the item to store.
  2. If the number of that item is below some threshold, you can only transfer one at a time. (A side problem of this system is they don’t explicitly say the UI works this way. You just find out through use.)
  3. If the number of that item is higher, you’re given a clunky way to select how many to transfer. (Either a scrollbar or up and down arrows to increment/decrement to select an arbitrary number.)

There are several improvements possible:

  1. Provide a grid of all choices. This is easier than getting to the right number by incrementing or decrementing or a slider.
  2. Allow the player to specify a retain value: the number of the item to not store. In systems that use carry-weight rather than slot-space, the user doesn’t want to carry 1000 units of even light items because that adds up. Let them specify how many to keep once and they don’t have to bother choosing.
  3. Temporarily create an escrow column to list the items changing places. This makes it easier to undo mistakes because the items haven’t vanished into the long list of items in a container.
On the left, a pair of arrows above and below a number shows a normal selector. On the right, rows of ten shows an improved alternative.
Example of picking the specific number of items by displaying full rows of values.

Another issue with carry-weight tends to arise in sorting. They either sort by stack-weight or individual item weight. In the stack-weight case, the problem arises when you start transferring from the stack and its collective weight drops enough to reposition it in the list. Suddenly you’ve lost that item and have to go find where it was. That would be fixed by ensuring, even for a low stack-count, that you can transfer exactly the number you want. The retain value would do that.

But sorting by the weight of the individual item is worse. You could be carrying a billion pocket lints and yet the sort does not put it at top, so you have a much harder task of figuring out what’s weighing you down.

One of the things games could consider doing is providing configuration files for these kinds of things. It would be fairly trivial to implement and players could easily write their configs offline and reuse them across playthroughs, share them, etc.

Inventory management isn’t supposed to be a chore, and making it more universal and do more work for the player is something that developers should think about.