JCInventory, Grid based jigsaw Inventory for your projects

Well hopefully it wont be much longer.

Hey Shirk,
The system only includeds a inventory system and no weapon system- they are seperate systems within a game and i have kept them seperate to make the code cleaner to read and the price cheaper. I am working on a tutorial to implement the C++ survival game by tom looman and JCInventory together, this will have examples of how to use JcInventory with a weapon system. Just cleaning up some replication bugs. The C++ Survival game includes a pretty darn good weapon system, and you can import it totally for free yourself!

I am working as well on JcWeaponSystem, but development for the community takes time (Much longer then developing for myself) as i want to take the care to make sure things are clear reducing the amount of support needed. This will be released when it is ready on the forums.

Well, this should be extremly helpful, thanks.

Hi, I wanted to report that there is a consistent error in the current version (4.8) where appending the list of JCItemAttributes causes a number of files to fail compiling. It appears that this is for different reasons compared to the earlier Unreal Engine glitch in the 4.7 version when doing the same thing. At the moment, this function cannot be used in the system because of this error.

The Specific failing appears to be with JCSlotStruct which refuses to compile if changes are made.

I just bought this… I’m trying to integrate it into my own HUD/Character etc.
I can get it to pop open the inventory box. But can not for the life of me get the grid in the box. So the bottom part is empty. I have it spawning on begin play but it doesn’t seem to do anything. In the video it shows cols, rows and another thing thats 38. In the version I got I just have cols and rows… but they wont set for me in my project. They do seem to work in the example project though.

Anyone else have this issue?

EDIT: I resolved this one part grid not showing by setting a default pawn class but overall still broken and I’m not sure if it’s the proper way to do things. I never have a default pawn class setup, I always spawn players at spawn points based on their chosen char and team using player start tags. Not sure why the grid is dependent on default pawn class being set in game mode.

When I pick up items they disappear, but don’t get put into the grid. so not sure if this is related… but it might be.
Seems to alternate to working sometimes on server or on client or not at all. Never both. It’s definitely related to Default Pawn Class.

I dont need/want a default pawn class set, but its the only way to get the grid to show up for me right now and even when the grid is there, the items don’t add to it.
If someone has this working right now, can you try setting your default pawn class to none and spawn a character of class instead and see if it still works for you?

From the videos and the demo level, this looks amazing and seems customizable when in a working state. But its not so simple to integrate into an existing game unfortunately. Thanks in advance for any help, I’m getting a bit frustrated with how much time I’ve spent trying to integrate this :frowning:

Hey guys! Have been moving house over the last week, sorry to not get back to you all right away.
I am working on a big tutorial at the moment that is much larger then my normal videos, i hope to have it finished tomorrow.

@Seaker21, BP Structs can be really funny in unreal engine, I have found a fix for 4.8 while working on the new video,
After you update your attribute struct, don’t save anything but at attribute struct- then close unreal and re-open it. It will compile the blueprints properly and cause no issues. Tell me how you go with this!

@thankstipscom Tomorrow morning when I’m back at my workstation i will try and replicate this, then edit this post with my findings! It should work as i have that kind of interaction working with the C++ survival example. I will PM You after i have attempted to replicate this. Might just need to move some functions from Begin Play to OnPossess in order to allow the pawn to be spawned without a Controller/HUD, and then allow you to add it later.

Hope to have a new video for you guys in the next 24 hours!

Thanks, that quick fix worked (engine can be so randomly buggy at times, lol). :smiley:

Yeah, at me it works a bit different… whenever I add new Attributes, the Engine instantly crashes and on restart it hooked up everything correctly.
Also when I use the JC Library function “Get Attributes from ItemData” at some particular execution chain it will never return the correct Attributes while breaking the Struct manually always returns the correct Attributes. I love “randomness” at Games, but at Engines :rolleyes:

Hey there **thankstipscom **, I hope this helps!
I will be cleaning this solution up and will include it in the next build for JcInventory. But in the mean time this should get you over the line! Please Ask if you have any questions.

Awesome. Many thanks.
It worked without a hitch and it makes more sense now too why the bug was there to begin with.

I’ll start working on expanding and customizing it this coming week now that its working! I’ll post some feedback and give a review for it on the marketplace page when I know it a bit better.

Thanks again for the help man and for the turnaround time on this.

Hey man, I saw in previous posts you asking about Suggestions for documentation:

's my suggestions after just looking into this briefly. I state briefly, because I think this system so far in the demo is an amazing starting point for so many things. So good on you for making and sharing this at a wicked price. I’m sure I’ll learn more as I look into it and figure things out… but I think your goal is to make it so that people can support themselves as much as possible and as quickly. I think this is the best approach too.

So… do text based docs first. Videos later. I just sat down to start looking into this and properly integrate it. (maybe 25 mins ago). I’m trying to work with the containers and backpacks. I watched your 8 minute video. The options after creating the BP are slightly different. There’s no item tags anymore. Might be easier for you to maintain updates on text docs then it is to do new videos every time. Outdated videos **work **if the text that goes with it is up to date. You’re also more inclined to sit down and write about what you already know, then to have to prep a project and script to record a video.

The reason I say that is because i created the backpack bp the way you said to. I added it to my test map. I can pick it up and it disappears from the map, but the icon doesn’t display. I even just tried using the same Icon your briefcase uses and still doesn’t display, but an empty grey space does display, which is unclickable, undraggable etc… its stuck. I added your demo briefcase to the map. I can pick this one up as well , but when I click on it I hear the ding noise… but no second window appears. Also if I pick mine up first than yours, yours just overwrites mine. Same applies if I drag yours over mine in the inventory window. However if I drag yours partially over mine, yours just disappears forever lol. Anyway thats my suggestion for now, because I don’t know where to look to track this down. I’ll spend some time on it now, I compared mine to yours in terms of the backpack_BP to make sure they’re identical. I added your demo container as well and went up to it and hit the hot key… nothing happened. I don’t have the hand icon tick setup but I do have all the hud functions integrated into mine. From stepping through your demo and my game, yours runs the events in the hud, mine doesnt. Don’t know where to look next… will take time to go thru it all since the system is big and complex (in a good way for use… bad for troubleshooting learning… heh)

http://thankstips.com/uploads/ue4/jcinventory/backpack.png

Part of my day job is writing up technical documentation for cloud security software. I find the best way to introduce someone to a complicated system is a semi-point form, step by step guide from start to working. They don’t need to necessarily understand the entire process first time, nor each step. You’re detailing the functions separately as you’re doing is good for deeper knowledge. But getting it working first is key. Then customization and understanding the core comes next.

Unless I’m missing it (and thats totally possible) I don’t see a doc like that on your site yet, I think videos are fantastic and totally appreciate the time you’ve put into trying to build up self-serve support for your product, but a core how-to I think would be great to get new buyers running with it and “off your back” in terms of support. As well as positive “easy to get running” feedback. It’s somewhat difficult to seek through the videos to recheck things. Luckily you keep yours short.

I’d suggest these headers filled in with steps 1 - x. (don’t have to detail how to move functions from one BP to another or tedious BP basics like that, the buyer should know that. Just state which ones and to where…or what new nodes specifically to create if need be obviously)
a few screenshots would help along the way but maybe you could create a fresh project with a character. Migrate your JCInv system to it. And integrate it step by step with the new character… as the buyer would. thinking as if you had a 4month old project already underway :wink:

  1. Integrate the Core System (basically point form of your video for using your own character)
  2. Equipping on drag and drop
  3. Setting up Backpacks
  4. Setting up Containers
  5. Making new items work with this system add new item from scratch example
  6. Randomize items in containers/“dead bodies” etc

Once the buyer goes through all of those things. They basically would have seen all the parts of the system they need to customize and integrate it. It’s not your responsibility to customize the system for everyone’s game at all. Nor should you be asked to help with any weapons or item systems once they’re equipped (as I’ve seen people ask). But it is to give them an understanding of where to find things and how to use them. For example, I don’t think it’s your task to train people on how to equip a weapon to a socket, thats not only easy, theres a million docs online on how. But when I drag an item to the hand in the inventory window… .I’d like to know where in the code that occurs so I can link it to my “equip function” I already have. If I press 1, it equips an M16 rifle providing they’ve picked it up somewhere and the bool for having it is set to true. (before having your system in place). I want to tie this to dragging and dropping the rifle onto the hand as well. however first, I need to figure out how to pick up my rifle item using your system so it appears… or its not your task to teach someone how to set up reloading and ammo control systems… I already have that setup. But when they drag ammo onto their gun OR they have ammo in a quick slot and hit that button, I want that to trigger my reload function avec animation etc…and so on.

Sorry for the long post. I know writing a doc like that would probably take you a full day… hopefully its worth your time once. I think it would help you in the long run.

Bye for now!

Hey there Thankstipscom, really good constructive feedback. Documentation is a on going process, but i’m certainly not happy with it as of now, there is still much to be done! I’m going to take your words on board 100% and make a text tutorial for setting up JcInventory on a pawn, after that i will study how it goes. I have avoided too much text documentation as the i feel blueprint is a visual scripting language and the video suits it better, but i am willing to try all things to help the community.

I have finished implementing **JcInventory **into the Survival game C++ example, i just need to make a nice video explaining how to do it. From there i will go back and do another pass on the basics, as i agree with the above. This will be the last tutorial of this kind for awhile. It will cover most of the above in a fashion.

I also wanted to take the time now to help you with the backpack system (even though that’s not the core point of your post, im sure it will help!), ***TAGS ***have been moved into attributes inside item data. It functions the same way as the video other then that. I release how frustrating these little things are when the documentation is out of date! The reason for this way that attributes contain all persistent data for the item, so it made sense to move ***Tags ***within it.

As for hotkeys to equip the rifle, have a look at the code in the** Quick Bar Slot **widget, as it does exactly that! It uses a function called Find Items in Inventory that also returns the index of the location in the players inventory. Quick tip, Try to avoid using Find Items in Inventory By Class on tick as it could get expensive.

I will keep working on documentation, because at the end of the day, its good for users because you get immediate clear information, and its good for me because i can move on to making improvements! But until then if anyone has any questions about the above functions or any headaches do feel free to post on this forum or PM if that’s more comfortable for you.

On a related side note
The Survival game video will be published on Wednesday.

Thanks for reply.

I wasn’t so clear on the back pack issue. I got pulled away and could only get back to it now. I figured the tags were in the attribute section just by looking at it initially. I assumed that was where to edit it so I’d actually already did that earlier and it didn’t help. Thats the reason I opened the demo back pack and started comparing. In the demo one, there is no tag entered in the attributes tags either. I’m not sure why they’re behaving differently. The demo one doesn’t work properly with my character on its own either. Meaning it doesn’t run the hud event to open a new inventory window that represents the content. But at least the demo one equips properly. Gonna play with it a bit now. If you think of what might be it… shoot me a quick msg. If I figure it out now ill update this post.

http://thankstips.com/uploads/ue4/jcinventory/backpack2.png

As for the docs, I agree the videos are awesome. I personally am a very visual person in general. I hate manuals that have massive table of contents etc… I like guides though. The more complicated the system, the simpler the guide should be. Start to finish, basic working system that touches on all its functions. I prefer step by step(text) guides with some screenshots to videos or any other documentation. Mostly because I can work at my own pace and go back and search or check for things im not sure of. It’s easier to update and at the end of the day it’s a backbone for all support issues for reference. Kind of a “check in the meantime”. One guide that goes through those main points would be helpful. If you wanted videos for each section, you could follow your own guide and record as you do it :wink:

But of course whatever you think is the most appealing to the community, you should do, I just dont want to bug you for things lol. Let you get to improving or creating new things.

kk… Onto to try and sort this backpack thing now.

EDIT: Seems the “item name” is required. I entered a random name and it now equips and plays nice with the other inventory items. That took like two mins to figure out. Just gotta figure out why its not opening when trying to use it.

EDIT 2: So this took me a bit longer to figure out (hour ish) but I finally got it. I stepped through the example. Needed BAG in the item tag (as mentioned in the video). But you ALSO must have the item name. Took me a bit of time to figure out where to put break points. The main issue that confused me so long was that even on the example there is no tag for the briefcase. So unless the tag gets set on begin play or something, I’m not sure how it works there, but when stepping thru the bag tag check ends up true even though the tag isn’t set. I was trying to mimic what worked but… hmmmm anyway… kinda messed myself up because I didn’t have the itemname but I did have the tag right initially. When that didn’t work, I removed the tag to make it look like the demo example, and added a name(like the demo example)… lol and went the long way around figuring out that I needed to put BAG back into the tag while itemname is set.

anyway… Good stuff. I like how the system is set up so far.

Hey there thankstipscom, Item name is one of the values checked to see if a item is valid so it is always 100% needed!
Secondly, check out the Injected attributes of the bags in the demo level, any overrides to attributes that you wish to make should be placed there. In this case, we are overriding the BAGname tag, so we need to recreate a new attribute in the replace/inject attributes struct in the details panel of the backpack, or in the containeritems struct inside a container (if it is inside a container already).

At begin play the injected attributes will override the itemdata attributes. The item data attributes should never really be modified directly in the details panel. So you need the item data, then to create a separate backpack you need to add 'BAGUnique Name ’ in the Replace attributes section. Its somewhat cumbersome at the moment im afraid, i will be looking to optimize it, but this workflow does function!

Product review

So I purchased this a few weeks ago because I sat down and thought to myself, I could spend the next couple weeks building an inventory system or I could take a risk and purchase one and hope it does what I want. First I took a day to try a tutorial out. It was a very loooong one and while a good effort, not very efficient. So I searched around and ended up buying this one. I’ve spent a lot of time on learning it. More than I initially wanted to for an inventory system but after seeing the features, I kept wanted to make additions to my own game to make it better so learning this was essential to do that and I’m very glad I did. So far in total I’d say I’ve spent a solid 1-2 days of actual work time integrating it into my game. After seeing how complex the system is under the hood, I’m happy I bought it rather than go the distance on my own. There are things included I never thought of that are necessary. But aside from that, the structure of the system makes a very good attempt being as automated as possible.

To save a lot of reading time: I’ll make it more point form of what I think people would be looking for:

  • Drag and drop personal inventory menu
  • Drag out of menu to drop on the ground in the level
  • The pickup function already works
  • Easy to understand the item class. Very easy to start making your own pickup-able items
  • Straight forward item attributes to customize and apply stats, looks and variations to items
  • UI menu on the items themselves, so USE, DROP functions are available. you can make each item or class do the logic you want by simply adding the use item function to it. You can make your own functions in UMG.
  • Quick slots are already integrated and easily expandable
  • Containers. Not even part of personal inventory, but containers are built in so you can use them as Loot chests, dead bodies, boxes, fridges, drawers, whatever… set it up as a container populate it with items randomly or purposefully and thers a loot box just like that.
  • Backpacks. Pick up a back pack and you now have a separate inventory window to store more stuff. The backpack takes up space in the personal inventory but gives more by default, etc…easy to setup once you know the system a bit and easy to customize

Thats whats included and works with the included FPS character out of the box, integrating all of this into your own character works…almost out of the box. There’s “rough-ins” for other things like

  • attaching static meshes to sockets upon equip (very basic sample code is included for this)
  • inventory weight systems
  • powerups and attributes application affected by inventory items etc…
  • Crafting (mixing multiple items together). This is pretty much included from what I can tell already, I haven’t played with it yet but it seems pretty straight forward to use. comes with a sample that works for adding a silencer to a gun. Might not be the best example since the addition looked permanent, but can see how it would work for crafting items and bombs etc.

The truths:

  • if you’re just starting your game and want an inventory system… get this NOW not later. Building around what you get is easy. Integrating this into a large existing project. Not as easy.
  • No inventory system that you buy will plug into your game in 5 mins or less. Especially one that has as much as this does. So expect to spend a few days learning how it functions, so you can start integrating or rewriting your functions to work with it. It’s got expansion and automation in mind, so you can add items and attributes whenever and they just fit in without having to modify the system.
  • It won’t attach the meshes when you equip an item in the inventory slot. It’s not supposed to. When you switch out the item in the slot, you can have that trigger an event that you can make do whatever you want, like adding a mesh, removing a mesh. You will need to know how to do this yourself (and you should already)
  • It’s not an ammo, gun or weapon system as some seem to expect. It houses, switches, modifies and uses inventory very well, thats what it does
  • The videos that exist are great and short and easy to follow. Some are slightly outdated, but the creator is responsive in the forums and friendly and helpful. There isn’t much in the way of documentation though and this is a big fault for me since the videos show certain things in a specific way sometimes. I wanted a deeper understanding of the system so I could customize it. A lot of my time with it has been trial and error to learn how it works. Which was beneficial, but could have been eased with more written docs in my opinion. This is being worked on according to the creator though, so we’ll see if more docs appear. Though I may not really need them much anymore. lol
  • Lastly, a minor but pet peeve of mine is the branding. It’s JC’s product and thats cool, but every function and variable under the hood of the system is branded “JCThis” “JCThat”. While it doesn’t make much difference in the end, I like keeping my code organized and labelled in my own way. I’d have preferred something more generic like “INVThis” “INVThat”. So at least it doesn’t look like product placement everywhere. Again it’s minor.

Conclusion:

I haven’t tried the other available systems, but I’ve checked out the features. This one seems to have the **most **features that fit the context of the system. Not just but a bit but by far. An integrated chat system in my opinion doesn’t fit for example. But crafting, backpacks, looting containers, attributes, using items out of the window…on top of storing inventory. Thats a complete system. I wouldn’t expect any system that is done in a clever manner to take 5 mins to install. The system isn’t difficult to integrate into your system, but it just takes patience and understanding. Put the time in to integrating this into your game and you won’t be sorry. For the price, the value is beyond a good deal. I can’t stress enough the amount of features this has included in it just waiting to be used and customized your own way. For sure the best system out there for inventory management, for any type of game. The ease of expansion alone makes it phenomenal.

I integrated this into a TPS in a matter of days and expanded on quite a bit without any major issues. The possibilities for expansion are pretty much endless on it.

Jack has been around to help out when needed as well.

found a bug just wanted to report:

if you have any other umg widgets showing on the players screen and you drop an item onto it… it just disappears totally. It doesn’t register the drop so in the code the character still has the item, but the mesh disappears after the drop.

f4d3b362ead8b8a05d5a59427e4664effec300e5.jpeg

hey **thankstipscom **, thank you so much for the detailed review.
I think its really honest and fair, reading it really made my day!

There are a few work arounds for this widget collision issue,
i think the issue is that your widget is higher in the **ZOrder **then JcInventory.
JcInventory is designed to go at the very front of a view port, when **JcUserInterface **Widget is not showing is has no collision so it wont cause any problems.
**JcUserInterface **widgets entire canvas (that fills the entire view port) has collision when the inventory is active so thats how JcInventory detects items OnDrop()

I personally find widget collision to be confusing sometimes because its 2D and very layered.
i like to imagine it like this; when an item is dropped or clicked, imagine a ray trace firing into a stack of paper, and one of those pieces of paper is **JcUserInterface **JcInventory.

The easiest way to test this theory would be to expand the ‘Add to view port’ nodes in your Hud that spawn the widgets and change there Z orders accordingly. Also, make sure you turn collision off widgets that don’t 100% need it.

Edit: Another work around if you need the Widget over JcInventory (Not recommended) would be to add a OnDrop override to your new Widget, then have it cast the payload to a JcDragAndDropPayload and call the function that returns the payload to its origin.
OR! You could have override OnDrop and then have it return false, thus your ‘raytrace’ through the paper will continue to the next widget it hits.

There is a Twitch support video going to be done by Epic soon, i suggest anyone interested in making there own UMG widgets watches it! More !

Thanks for the quick reply once again!
I do already understand the Zorders. I wish I didn’t because I spent a bunch of time trying to make it so my hud items stop interferring wtih the inv system! but with no luck. I’ve tried making the inv system priority over everything. and all other widgets the furthest back, but the backpacks always appear under my minimap and I cant grab them easily etc… I had gave up on it initially and figured I’d come back to it but forgot, so it’s not a zorder thing.

however: I had no idea there was “collision” on widgets at all. I guess because I never used mouse cursor in game before. It’s not actually called collision in the widgets, its under Visibility, hit test invisible is the setting that makes it appear as art and not interact-able.

That resolved the issue. Learn something new every day… Thanks!

Survival C++ Game

New videos, as promised, the C++ survival series by Tom Looman found . Its not quite finished as these videos take a long time to make.

Click for the link!

Third person pawn example coming for UE 4.9 (or sooner?)

Just a example pawn i have included. It just shows off a different approach to handling picking up items. All the JcInventory commands are the same, but it uses different ways of ray tracing for items that are more appropriate for third person and maybe they can inspire your creative decisions in your own game or maybe it can be a good starting template!

also in the video is dynamic re-sizing, i realized i have never included a recording of that feature so it is.