Saturday, March 2, 2013

Inventory & Crafting in Thunder Moon

When designing the item system for Thunder Moon, some of the goals included having support for crafting, nested items, upgradable items, item slots and various other features common to RPGs, with an interaction model suited to the console. Often times, console games with inventory systems of any complexity feel like they are designed with a mouse in mind and the controller is used like a virtual mouse stick with little if any effort made to optimize the experience for the console. I wanted to avoid that here, so I took some time to make a system that I think is well suited for the game controller. I originally created the system about 4 months ago based on UI tech that has been evolving since Atomic Sound (BBG's first released product), and with a few minor tweaks here and there it has been working pretty well. Lately, with the feedback from the Alpha testers (thanks!) I've been tuning up the inventory and crafting panels, doing my best to wrap them up and make them easier to use. Thunder Moon's design sits somewhere between a shooter and a light item-based RPG, and the item system is one of the things that leans towards the RPG side of things.

Here is the main inventory screen, with a number of items in there. Not all the icons are final. There are two panels - the bottom shows the main inventory, and the top shows details for the currently selected item. The currently selected item is an upgradable pistol, which has had two powerups inserted into its sockets. You can see a few other weapons, a stack of deployable turrets and a few deployable vehicles. There are also some repair kits, and a variety of blocks that can be placed in the world. Some of the items (they happen to be powerups) have a horizontal bar which indicates the item wear.

The icon system itself was an interesting bit of code because the icons aren't just a static texture sheet with all the icons, the system dynamically generates the texture sheet using individual icons that are streamed in as needed. This means the game has no practical limit to the number of icons the game can use, and the icons don't have to be low resolution either.

There are four types of item slots in Thunder Moon: Held, Worn, Aux, and Generic. Items can be tagged to work in specific equipped slots, such as weapons in the held slot, jetpacks in the worn slot, and grenades in the aux slot. Items in these slots are hooked into the UI and will respond to the appropriate button presses when they are equipped. The most powerful feature that items in the equipped slots have is that each one of them can have its own unique 3d model attached to the character, along with any number of unique animations and sound effects that are applied to the item, the character, or both. For instance, the pistol firing will animate the pistol itself while playing a synchronized body recoil animation on the character. These resources and the icons are streamed in as needed, which allows us to make any number of items going forward without any serious impact to memory (which is a major concern on the XBox 360). I haven't had a chance to utilize this system much yet, but it's there, it works, and I am excited to hook up new backpacks, hats, gizmos and fun weaponry into the game the next chance I get.

The inventory system allows you to drill down into items when they can contain other items, such as socketed items that can take powerups. Right now, sockets & powerups are all this is being used for but it could also support generic containers like backpacks if there was a design need for it.

Feedback suggested that the item system was not explained well enough, which in retrospect is pretty easy to see why. There's a lot there! In recognition of the fact that not all players are able to read my mind to figure this out, I added some help which can be shown while in the inventory that I think gives a pretty good explanation of how it works. I prefer context sensitive help that appears when & where you need it, and I'm pretty happy with how this turned out. While it might seem like a lot of text there, I think it covers most of what players need to know. What isn't spelled out is pretty easy to pick up, I think.

Crafting is a pretty important part of this game. There are currently somewhere around a hundred item blueprints. Blueprints can have any number of inputs and outputs, and there can be any number of plans that make a given item. Designing a UI for this that I felt worked well on the XBox was a bit of a challenge as you can imagine but I think it turned out pretty well. Icons are color coded based on usability, and there is a filter to allow you to limit the view to the items you can make right now which helps keep it a bit simpler.

The crafting panel also has a detailed help display.

Designing and organizing all the blueprints organized was something I knew right away had to be handled carefully because there is just too much data there to "wing it". On the pipeline side, the blueprints are configured using a tool I created that works with an SQL database and the content pipeline prepares all the data and icons for the game itself. It's a fairly plain but functional tool that nobody else will probably ever need to use, but here's a screenshot in case it might be interesting to some of you to see behind the scenes a bit:

That's all for now, thanks for reading!