An Inventory System for All Seasons

The inventory system is infamously one of those ‘way more complicated than you think’ types of features, but there is no shortage of implementations. With a quick Google search you can find dozens of approaches online, either as purchasable solutions or as part of a YouTube tutorial series.

Even with all of this support material at your disposal I still strongly believe your inventory system is one of those features that you should be doing the high level design and implementation yourself as they tend to be such a core part of the game.

You can find a number of different inventory systems online, targeting a range of different genres.

For the Shooter Sandbox I knew I had to come up with my own approach specifically designed to support the kinds of games I wanted the Sandbox to help create. Although this has been easier said than done because ‘Shooter Game’ is one of the broadest definitions in game genre history, I think I’ve come up with an approach that checks all of the boxes.

Let’s break it down.

The Early Days

The Shooter Sandbox was born out of my Competitive Recoil project, and as such very closely followed the model laid down by games like Counter-Strike and Valorant. You had two slots for weapons, you could only hold one weapon in either slot at a time, and picking up, dropping and switching weapons was simple, efficient, and snappy.

It was a little more complicated than that, with slots for utility and such, but we’ll get to that in a moment.

I was really pleased with the Competitive Recoil Inventory but I was so focused on reproducing a specific type of experience that I became blind to its shortcomings as a template for others. The most significant of these was its inflexibility. What if you wanted to make something that wasn’t literally just Valorant with Unreal Mannequins?

This was never more apparent than when I started my own game project using the Shooter Sandbox as its base. My new project, Fires Farther Afield, is more of a soulslike than a competitive shooter, and the Competitive Recoil system almost immediately proved insufficient.

The Halo-Strike™ Inventory

I like to wear my inspiration on my sleeve, and that’s never been more obvious than with the working title for the Sandbox’s new inventory system; Halo-Strike.

My goals for this redesign were simple. The current Sandbox’s inventory system would need to be expanded to be able to reproduce a far larger range of different inventory systems including (but not limited to) the styles found in Counter-Strike and Halo 3.

Confessions

I chose Halo 3 because it’s the best Halo game.

I started the design process for this new system by breaking down the inventory-relevant verbs available to players in these types of games. What can you do, where are these systems similar, and where are they incompatible?

Halo and Counter-Strike are both games that mean a lot to me, but their approaches to an inventory system differ significantly in their specifics.

To achieve this I had to find a common language through which I could refer to similar mechanics and sub-systems. Here are some of the terms I’m using to describe some common features I’ve identified in the inventories I’m trying to reproduce.

ItemAny object that can be ‘picked up’. Items have permanency in the world as their ownership is passed from world to player, remaining the same object when picked up, carried, and dropped. Items can store values/have behaviors of their own.
SlotA space within the Inventory System that can store an Item of a specific type. Sometimes Items will require multiple compatible Slots in order to be picked up.
SetA predefined collection of Slots that can be made active/inactive, allowing use of the Items stored within.
ResourceAn object that when picked up no longer exists in the world but is instead stored as a value on the player character/state.

Breakdowns

This might all sound a bit dry and theoretical so let’s try applying these terms to some already existing games and see how they hold up.

Disclaimer

I am making a whole bunch of assumptions about these games and how their inventory systems are implemented. I am likely to be wrong in the specifics, but I don’t mind as long as I’m accurate in describing the outcome. This is an iterative process, and I’m ready to be proven wrong!

I’m ignoring a few major components of these systems, such as the user interface and ammunition collection/management. These are both important enough to deserve their own full breakdowns in future Sandbox updates.

Counter-Strike 2

In a game of Counter-Strike the player can have up to 9 Inventory Sets. This includes primary, secondary, knife, up to 4 types of grenade, a bomb/defuse kit, and healing Item. That might sound like more than you’d expect on first glance, so let’s break it down.

NameSets/Slots
Primary1 Set with 1 Slot for primary weapons only
Secondary1 Set with 1 Slot* for secondary weapons only
Knife1 Set with 1 Slot for your knife (which can’t normally be dropped)
Grenades4 Sets with 1 Slot each, one for each grenade type (Flashbangs get 2 slots in Competitive play)
Bomb/Defuse Kit1 Set with 1 Slot for the bomb/defuse kit only
Medi-Shot1 Set with 1 Slot for a single-use heal item (limited to specific game modes)

* Those familiar with CS might be wondering about the Dual Berettas. Keep in mind that even though in-universe the Dualies represent two weapons firing independently, the game treats them as a single Item. Unlike Halo you can’t fire them independently or throw just one of them away.

Halo 3

The inventory layout in the Halo series is arguably simpler, but provides a far greater range of potential weapon combinations and loadouts. The main reason for this is that despite having only two Inventory Sets with which to carry weapons you can mix and match almost any combination of small arm.

Primary weapons are usually denoted in the Halo series by requiring two Item Slots. This allows for smaller, single-Slot weapons to be dual wielded.

NameSets/Slots
Weapon A1 Set with 2 Slots
Weapon B1 Set with 2 Slots
Equipment1 Set with 1 Slot for equipment only
Grenades4 Resources, 1 per grenade type (once collected, grenade pickups are destroyed)

Branching Out

I hope this has all made sense so far, because I’m going to have a go at applying this model to a few games that drift from the archetype into which the Shooter Sandbox has traditionally fit.

These titles are closer to the kind of game I want Fires Farther Afield to be, so I have extra incentive to make sure the pattern can still be applied.

Armored Core VI

FromSoftware’s mecha-based shooter provides players with a raft of customization options and a wild array of different weapons, but Armored Core VI’s inventory system is deceptively simple.

NameSets/Slots
Left Arm1* Set with 1 Slot for left arm units only
Right Arm1* Set with 1 Slot for right arm units only
Left Shoulder1 Set with 1 Slot for left shoulder units only
Right Shoulder1 Set with 1 Slot for right shoulder units only
Core Expansion1 Set with 1 Slot for Expansions (which may be actively or passively activated)

* There are Shoulder Units that allow the player to carry multiple arm units, effectively sacrificing a shoulder unit for an additional arm Set that can be rotated in and out.

ULTRAKILL

Ultrakill is an intense and very fast-paced cross between Quake and Devil May Cry, currently in early access on Steam. It has a much more traditional ‘boomer shooter’ approach where weapons are collected as the player progresses through the game and they can be switched out at any time.

NameSets/Slots
Revolver1 Set with 1 Slot* for Revolvers only
Shotgun1 Set with 1 Slot* for Shotguns only
Nailgun1 Set with 1 Slot* for Nailguns only
Railcannon1 Set with 1 Slot* for Rail Cannons only
Rocket Launcher1 Set with 1 Slot* for Rocket Launchers only
Arm1 Set with 1 Slot for arm upgrades

* This would be the simplest approach to creating an inventory system if not for the duel-wield powerup, which gives the player character an additional weapon for each Inventory Set. This effect stacks and can get absolutely ridiculous. This kind of feature would require on-demand creation/destruction of new Inventory Sets, or a giant pool of them from which to draw.

I had to enable cheats to get this screenshot. I suck at Ultrakill.

Elden Ring

I was hesitant to include Elden Ring in this list of examples, but I think breaking down something of its scale and ambition will prove a useful exercise. Despite it not being anywhere close to a shooter it still has an extensively battle-tested inventory system that’s been iterated upon since at least the original Demon’s Souls.

To keep scope in check I’m going to limit myself to just the Equipment screen.

Put these foolish ambitions to rest

Technically speaking all of Elden Ring’s items, from the weapons to collectible flowers, should be considered Resources under my earlier definition. When anything in the game is collected by the player it is actually destroyed, and an array of that type of object is incremented on the player state.

This doesn’t really change anything about the outcome but it’s an interesting thing to note for Fires Farther Afield.

NameSets/Slots
Left Hand Armament 1-33 Sets with 1 Slot each for weapons only
Right Hand Armament 1-33 Sets with 1 Slot each for weapons only
Arrows 1-22 Sets with 1 Slot each for arrows only (cannot be manually selected/activated)
Bolts 1-22 Sets with 1 Slot each for bolts only (cannot be manually selected/activated)
Talisman 1-33 Sets with 1 Slot each for Talismans (cannot be manually selected/activated)
Quick Item 1-1010 Sets with 1 Slot each for tools
This one didn’t really fit the mold, but it kind of works.

The way forward

I am (reasonably) confident that my new Shooter Sandbox Inventory plugin can reproduce every single one of these examples.

I’m currently wrapping up development of version 1.0 of this system, although if you’re a Patron of mine you can download it right now as it’s already implemented and available as part of Shooter Sandbox 0.1.4. The demo, documentation, and other supporting material may take a little while longer to pull together.

I have a lot of plans for the Inventory System, and dual wielding is at the top of that list. The system is currently set up for it, but there isn’t yet any content or functionality for firing multiple weapons.

I am a technical artist from Adelaide, Australia. I created techarthub to share my knowledge and love for this industry. I hope you feel it too!

More from the Shooter Sandbox

Often the most interesting mechanics prove the most controversial.

13

Putting the 'Shoot' back into the Shooter Sandbox, one projectile at a time.

12

The dreaded (re)implementation of the Inventory System into the Sandbox.

11

2 thoughts on “An Inventory System for All Seasons”

  1. Good day! I know this is kinda off topic but I was
    wondering if you knew where I could locate a captcha plugin for my
    comment form? I’m using the same blog platform as yours
    and I’m having difficulty finding one? Thanks a lot!

    1. Hello! I am using Google’s reCAPTCHA v3 and a plugin called Elementor. It’s a pretty extensive and resource-hungry page builder so I’m not sure it’d be the solution you’re looking for, sorry!

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to Top