Inventory System - Any interest?

Hey everyone, I have made decent progress on a complex inventory system (slot based) where you can stack items, split stacks, equip weapons and armor, drop items, Item info hover widgets (dynamic to the item, can compare to currently equipped too), combine stacks of the same item, define item quality(rare, legendary, common, etc), drag and drop to reorder, detect level requirement, etc. Pretty much how you would expect it to behave for a RPG style game. You can easily create new items via a data table so no need to script new items. The Data table talks to my system and does all the work. Some scripting will be needed for any custom actions when an item is used but several default actions can be provided, such as heal the player when a health potion is used.

Would like to still add a couple of feature but mostly it’s done.

I made it because I none of the exiting options or tutorials I could find suited my needs. Don’t want to sound like I am talking down about anything, just didn’t suit my needs.

I am writing this to see if other people are happy with what is available or if there would be an interest in a my system appearing on the Unreal Marketplace?

I wanted it to be easy and intuitive but at the same time complex and robust.

If there is interest I can post images and video of it in action and can polish it to sale quality. I also integrated it into loot chests but that might need some more work before it’s ready for sale.

Is your system robust? That is: extensible, configurable, and exhaustively-tested?

Is it multi-player ready?

Can it be dropped into any project and work out-of-the box?

These are things that I would be looking for in an inventory system from the marketplace.

I haven’t built it for multiplayer right now but it could be a potential feature if it is popular. I built it to be low maintenance and robust so I can just create items and let it do the rest. I guess if there is some interest I can ask for some testers. But it’s not completely ready yet. I would need to add a couple of more features before i felt it was ready for sale.

Example of low maintenance and robustness. The Item quality is separate logic, so if you create a ‘Rare’ sword and an “Uncommon” sword you can use the same sword Icon and the logic will apply a green slot or blue slot for the quality. This applies for any item added to the inventory including a ‘none’ in case you want a plane item.

adding support for multiplayer is super easy, should take an hour or two tops to add it to the project

Question: Why did you decide to make items via a datatable rather than just creating a child of a “MasterItem”?

I wanted to centralize the item creation. It makes it easy for anyone to create or modify items in one place. You can have someone who knows nothing about game dev create items but to create children actors adds an extra complexity. With the data table I or anyone else can quickly punch in a bunch of item properties then let the system do all the work and rapidly. You can still place a base item in the world then just tell it which row name it is in the data table and it’s all taken care of. It will refresh as that item. You can overwrite properties if you want. Anyway, long story short I just thought it was easier and more manageable this way. I also found it easier this way to look up items on a data table when dealing with loot chests. i know many of all of it also also achievable just from children assets but I wanted to have a master list that was easy to use. Also you can export it to CSV if needed.

Here is a more detailed list of current features if anyone is interested:

  • Create items (use behaviors/action need to be scripted but are attached to the items and can be shared so 2 items can care the same action or a child of another action)
  • Drop items
  • Stack items (or define an item as not stackable
  • Split stacks (stacking in intelligent and will add to existing stacks until the max then split the rest to a new stack.
  • Define the size of the inventory dynamically.
  • Define the quality of the item (this is Dynamic, the icon will auto change color based on quality)
  • Move items
  • Equip items
  • Define type of item, eg Quest Item, Equipment, Consumable, crafting item, etc.
  • Create Equip slots for your gear.
  • Procedural generate weapons and armor based on your level and stats (WIP)
  • Rapidly create items on a Data Table
  • Items can have a description or flavor text.
  • Create loot chests (random contents based on certain defined attributes which can be level specific OR specific items from the Data Table if you choose)
  • Each Item can have it’s own world mesh, equip mesh, particle, spawn sound, loot sound, drop sound.
  • Items can have a level associated with them.
  • Items highlight when mouse over.
  • Mouse over items in world or in Inventory brings up a ItemInfo widget which is context sensitive and display only the info needed for that item. Eg. if you are not a requited level it will tell you but if you are the it will not any anything about level requirements.
  • Mouse over info also compares to the gear currently equipped and tells you the stat differences.
  • Pick up and drop notifiers, eg. a message appears on your screen saying “Picked up a Rusty Old Sword”. This can be fed info for any part of you game. So if you pick up a quest you can feed into the same notify system “Started quest ‘A Blacksmith’s Secret’”.

I feel like I may have forgotten to list some features and i will be adding more as this is still a WIP but pretty far in development. It is a pretty complex and intricate system but can keep updating this thread with new additions or anything I have forgotten. I will have to make a video soon to demonstrate the fluidity of how it works and the ease of use.

That’s pretty interesting. I could see how it could be useful though I also know that some people find spreadsheets to a headache from so much data in one place. I guess either method works really but I can easily appreciate the approach you are taking. You have quite a list of things you are adding, and it’s pretty interesting. I will have to follow this to see where it goes. Inventory systems are pretty interesting considering how different each one can be

The more I develop it the more it makes sense to think about releasing it as an RPG package. The Quest system I am working on integrates with the Item system and it might be a bit disjointed without the two. The planned Dialogue system would also be integrated. Any thoughts on a full RPG kit instead of just an Item/Inventory Kit?

Datatables are FAR more stable in terms of keeping your data in-tact. I use to store data for my stuff in child blueprints, but data was reset and corrupted far too often.

I would be interested in it. There are dialogue, inventory, and quest kit’s out there, but an all in one kit I think would be useful.

Honestly,t he best way to gauge interest is to put up some screens and ideally a video, then we can see it in action :slight_smile:

I totally agree. I want to post some pics and video once I complete some more features and give it some polish. I’ll see if it picks up some more then.

Something I’ve learnt in developing my own system (which includes, among many other things, an inventory system) is that if oyu post stuff early, you will get a lot of input on what people need/want out of it :slight_smile: That’s great if you can manage it, and I’d recommend doing it tbh. But at the same time if you are making it primarily for your own use and/or don’t have a lot of time to alter your course, hold off until closer to final version I guess :stuck_out_tongue:

Yes I am making it for my own needs. I looked at the other systems out there and they didn’t really suit my needs. I thought if I make my own systems then some other people might also find it useful. If there are some extra features people want I might be able to add them but that’s after my own game is working. I think I’d rather show a more final product then see how it goes.

Yeah. Hold off then :stuck_out_tongue: I took the same approach… made a system for rapid prototyping of my own ideas… decided that otehrs might find it useful… spent the last month or so working in additional features that my beta testers requested haha XD