[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 : )