Description
This is a Proof of Concept for an Inventory System written in C++ (using Visual Studio) and developed in Unreal Engine 4. The system allows for picking up items, stacking items, item categories (such as equipment, consumable, or quest items), swapping items in the inventory, combining stacks, splitting stacks, dropping items on the ground and more!
I am still working on this project and still have features to add such as a window that pops up when an item is being dropped which will allow the user to specify a quantity to drop.
Tools Used
Unreal Engine 4, Visual Studio, Photoshop, Illustrator
Highlighted Skills
Intermediate to Advanced C++ Programming, Unreal Engine 4 Mastery, Prototyping, Problem-Solving
Links
This was the document created during the planning phase. It includes details such as an overview of the concept, a feature list, my plan for creation, my development process, and more!

This link will take you to the project's online repository where you can see the source code.
Project Reflection
I had quite a bit of fun creating this artifact. Before I began planning, I examined the inventory systems of many different games (the player’s experience with the system, not the underlying code). I explored the different ways that items were added and utilized and was eventually able to piece together what I considered to be the best (or most appropriate) features to incorporate into my inventory system. Once the basic functionality was in place, I was able to evaluate the current state of my inventory system with each iteration and determine what should be added/removed/modified. One such modification was to give the player visual feedback when they obtain an item.
While creating this inventory system, I explored what other inventory systems had going on under the hood. With knowledge of industry standards and common practices, I was able to design my own inventory system that functioned as I wanted it to. In developing this system, I bettered my understanding of UE4 documentation and engine exploitation as well as my ability to solve issues by reviewing documentation.
Before deciding to tackle an inventory system in UE4, I knew I was going in without all the knowledge required to create it. I had never developed an inventory system, so I had to overcome the unknown. This, however, did not stop me. I had a loose understanding of what needed to be done, but I didn’t know specifics such as which engine functions to use in certain situations. I remedied this by watching/reading tutorials for inventory systems that have been created in the past and reading through UE4 documentation to learn what was possible. One particular challenge that I overcame was utilizing UE4’s drag & drop functionality to enable dragging items around within the inventory widget.
Feedback was a very important part of the development of this system and I have been sharing it with my peers and receiving constructive feedback since its planning stages. When developing the original proof of concept document, I shared my document with my peers on forums and received feedback regarding, for example, ideas for features that should or should not be included in my proof of concept prototype. This way, I was able to incorporate feedback before even beginning to develop my prototype. Throughout the development of my prototype, I shared my progress with a group of aspiring game developers on a Discord server to receive further feedback and critique.
I improved this artifact by reworking the C++ function responsible for adding items to the inventory so that it knows the total number of items added, even through recursive calls to the function. I further improved my inventory system by providing the player with visual feedback when they obtain an item. This is a feature I’ve seen in nearly every inventory system. I created a small widget that notifies the player when they obtain an item. The widget fades/slides in, displays the item’s name and image as well as how many were obtained, then fades/slides out. If multiple items are obtained in quick succession, their notifications are added to a queue and are displayed one after another.
I am still working on this project in my spare time to further polish and add to its versatility in a role-playing game.

You may also like

Back to Top