[Submitted]Generic Crafting System

[FONT=Arial Black]Generic Crafting System :

It is a system that gives you some handy tools for handling your item crafting needs in your games&projects. It is not designed to give you any “plug&play” functionality, its purpose is providing you with functions that you can use to easily create any kind of crafting style your projects require : )

Important Update 1: I am already working on an update that will make the system a bit easier to use, since it tends to get a bit messy to find and tweak the properties of a certain craftable when you have too many items. To remedy this, you will be able to assign nicknames to all your craftable items, then enter the nickname of the item and it will give you its index so that you’ll navigate right away to that item to change it. This way you will also be able to get the nickname of an item for display purposes. - Done! I’ve just sent the updated files to Epic. The update also includes a widget that lets you use the list style crafting you see in the video right away, so the system does have some plug&play functionality right now.
Important Update 2: I’m now creating a set of tutorials in the form of videos to properly explain how to make the best use out of the system. - Ok so for some reason, despite trying everything to solve it I can not record my screen anymore (mobile GPU’s and their drivers…) so I’ve given up hope on creating a video tutorial and started creating a written documentation/tutorial for the system. You can find it here:

**DOCUMENTATION/TUTORIAL : ** It’s still a WIP and it’ll probably take me a couple of days to completely finish writing it, but I thought I may as well share it as it is being written as well.

Video :

In the video I’ve created two kinds of crafting styles using this system to give you an idea on how it can be used.

How To Use :

1-Drop one instance of BP_CraftMain in your main persistent levels.

2-Use that as a “control hub” for all your crafting purposes. Create your classes, add your craftable items and add the items that will be considered as ingredients in the creation of your craftable items.

3-Don’t forget to give a name to that “crafting profile” and save it (there’s a bool button for it)! You’ll need to load from that savefile if you mess up your items&classes etc., and you’ll also need that if you have more than one levels; when you drop the BP_CraftMain in another levels just enter the name of that savefile there and load from it.

4-In any Blueprint, when you want crafting functionality, call the “Crafting - Get/Update Main Breakdown” function.

5-After this point, feel free to call any other “Crafting -” functions depending on your purposes.


[FONT=Arial Black]Various Notes :

1-(updated)-this is partially wrong now; with the first update the system does have some plug and play functionality and you can actually use the list style crafting right away.YOU WILL NOT HAVE A WORKING SYSTEM RIGHT AWAY, SUCH AS THE ONES IN THE VIDEO! I don’t want to mislead anyone; this system will give you solid tools with which you can build almost any kind of crafting system, but the things in the video are just for demonstration purposes and they are not designed to be implemented to your projects themselves!

2-You have to call the “Crafting - Get/Update Main Breakdown” function whenever anything that has to do with crafting changes. Examples are when you have learned an item, when your inventory has changed, when your craft level has changed etc. Think of this function as your main “crafting getter”, just call it and assign the output structure to a variable whenever anything that has to do with crafting changes. The two examples I’ve shown in the video (also present in the demonstration level) shows how I do crafting and how I use that function myself.

3-You can change the trend with which the player gains levels in a certain crafting class by changing its effective curve. You can make it linear, make it so that it is very hard to reach a certain level but it is easy after etc. Make sure the curve is always between 0 and 1 ! 1 corresponds to the max achievable level you have assigned to that class.

4-By default, the craft level gain is tied to the current level of the player in that class and the level requirement of the item that is being crafted. However, you can assign experience gain multipliers to your craftables as well; for example, you can make “common” and “epic” versions of the same item, and assign a high multiplier to the epic one so that when the player crafts it, although its level requirement is the same, it will give much more levels.

5-If you don’t want to have levels in your crafting endeavours, just don’t ever touch them. The values are clamped so that by default they don’t effect anything.

6-**If your craft system has recipes or other forms of item learning, remember to save the learned items! **When you are saving your game, just get the BP_CraftMain and save the “Learned Assets” variable, and when you are loading the game get the BP again and set that variable from your savefile.

Here’s another implementation of the system. I’ve created the following crafting system using only GCS as its underlaying framework.

And here’s another one where I’ve used GCS to create a construction system for placing structures in my game. In this certain implementation, I’ve used each class as a certain structure; then I’ve used the crafting widget to call the crafting event that passes the class name (which is the child widget of the button that is a text, I just get the text from it) as its input, which is then plugged to the “class” input of the Get/Update Main Breakdown function.

Thanks for your attention everyone ! Feel free to shoot your ideas&feedbacks&love&hate : )

Interesting!

Hey everyone, it hasn’t even been a week since it was released but I just wanted to say that I’ve already released an update to the system that includes a widget (the one you see in the video that I refer to as “list based style crafting”) for you to use right away. I’ve also added “item names” to the craftables, and a button to get the index of the desired item from its name. Therefore the system right now does have some ready to use side to it, and it’s a bit easier to navigate through all the craftables when you have too many of them.

I’ve sent the updated files to Epic, I’ll post here again as soon as it is updated on the Marketplace so those of you who have it can get the update : )

Cheers!

The tutorial set will be ready in a couple of days at max, but if you have any questions before that feel free to email me.

Are you going to release anything that shows how you used your logic to make the placeable structures setup? I’m having troubles thinking of a way to blueprint that myself and bought your package out of curiosity to your methods.

Hey Nsomnia, I updated the system some days ago and was waiting for Epic to actually issue the update. I was not releasing the tutorial video on purpose since it was done for the updated version. I just received word from them today that it was updated, so the tutorial will be out either today (if i can make it in time) or tomorrow at the latest. You can always mail me if you are wondering anything specific as well : )

Hi, picked this up today, how can I tell if I have your latest update?!

One bit of initial feedback regarding migrating the system to a project; it’s looking like it’s going to be hard to get a clean migration of just the core system without bringing all the example content along for the ride. It would be great if it could be organised so the demo level with it’s characters, meshes etc was separated into it’s own directory so it could be omitted from the migration. Ideally we should be able to select a core directory and migrate that on it’s own.

Looks like a powerful system to build on, blueprints are all nicely laid out and commented … fun stuff!

Cheers!

You are entirely correct about that; it wasn’t the case in my initial submission but the folder structure rules of the Marketplace forced my hand into making it like how it is right now. The problem is, you’re required to have everything (including the stuff you don’t want to migrate) under one main folder so that it would be used with the “add to project” button in the launcher.
It still wouldn’t solve the fact that you get all the unnecessary stuff when you use the “add to project button” (nothing to be done about that); but I guess one thing I can do is make it so that the main folder contains two main folders, one you do want to migrate and one you don’t - and see if Epic is ok with updating my content like that. In fact, I’ll do that as soon as I’m done with the tutorial-thanks for reminding it to me! : )

About the update, in the Vault section of your launcher, the button under anything you get from the Marketplace would say “update” instead of “add to project” if your current version is outdated.

I’m glad you’re liking it so far, it should be slightly easier to use with the update and the tutorial : )

Take care!

Hi, thanks for looking into that, having a main folder containing two subfolders System & Examples would work well. I think it’s something that all the blueprint assets that I’ve bought would benefit from, I’m not just picking on yours! I’ll suggest it in the Marketplace improvements thread.

Looking forward to the tutorial, I have a much better understanding of how it all fits together now but I’m sure I’m missing a lot still :slight_smile:

Cheers!

Hello, just wanted to say a quick thanks for the written docs you’ve started on, they’ve been useful already. Having written documentation is great, video tutorials are good but hard to do for something as powerful and flexible as this system, a doc means you can skip around easily and add your own notes etc.

PS Got the system working with the inventory, only took an evening, a lot of that was mucking around with UMG :slight_smile:

Cheers!

Any hope of an upgrade to use with 4.9?

The update to 4.9 is already there however I’m not sending the files to Epic yet since I’m also trying to finish another update to have that included. If I still haven’t managed to finish up on that piece of update, I’ll send the 4.9 files to Epic tonight and postpone the other update : )
It’s quite a basic update actually aimed towards making the widgets look prettier and slightly easier to implement; however I’m being haunted by the ever-so-feared transient object error (probably due to migrating the updated widget from another project and moving the files) which tends to happen when your BPs are heavy on the library functions. Anyway, if it’s still not fixed tonight I’ll give up trying to have it in the 4.9 update and just submit the 4.9 update!