Crafting System

This crafting system was created for my capstone project for my degree in Applied Computing. The aim was to demonstrate a novel approach to crafting items through the use of modular 3D meshes and procedural texture generation. It shows how these elements can be used to let players design customized 3D models for in-game items while also making this process accessible to people who do not have a background in design or 3D graphics. The system also allows game designers to define “recipes” or requirements for a type of item, which are then enforced when a player goes to build that item. This includes everything from what types of materials can be used and how big an item can be to the types of functionality that the item needs to have. Although developing a full, universal framework/plug-in for building crafting systems goes beyond the scope of this project, the work done here strives to lay the foundation for such a framework or at least give insights into what the proper way to construct it would be.

CraftingSystem_Screenshot1.jpg

Try It Out

Sometimes the best way to understand something is to experience it. Click the button below to try out a simple demo of the crafting system.

Key Features

In order to make each item truly unique, this crafting system makes use of procedural textures. The system integrates the Substance API to generate variations of a texture and apply them at runtime. The texture that is generated is based on the crafting materials that the player chooses. For instance, using iron will give the item a variation of a metallic texture, whereas using oak will give it a variation of a wood texture.

Item designs can be highly complex, and the arrangement of parts will still update correctly as new parts are added to the construction workspace. The system also makes it easy to have complex mappings between an initial layout and the parts that are used to build that design. The third image below shows how an original design layout with a cube-shaped central part adapts and updates all of the other pieces when a hexagonal part is used as the central piece.

In the most basic terms, players use the crafting system through this core workflow: crafting resources are obtained and used to construct item parts, which are then combined to create items.

When creating the parts for an item, players can either create a new design of their own or use an existing design.

Once they have the design that they want to use, players can then select the crafting materials that they want to make the part out of. The materials that they choose have a direct impact on the texture/appearance of the part.

Next, players combine the necessary parts for an item by adding them to the item design’s layout using the appropriate crafting apparatus. Once all the parts are added, players can add a name and description, then finish crafting the item.

After crafting is complete, players can pickup the finished item and add it to their inventory. Equipable items can then be added to their corresponding equipment slots, which will cause the item to attach to the character model.

 

How It Is Used

Acknowledgements

In order to focus on the features of the crafting system itself, I used the Camera Controller and Third Person Motion Controller by Ootii to handle the camera and character movement. These are both available for purchase on the Unity Asset Store and can be found at the following links:
Camera Controller & Third Person Motion Controller

I also used some 2D assets for the UI elements:

This includes the Ravenmore's Icon Pack 2.0 made by Krysztof whose portfolio can be seen here:
http://dycha.net/resources/

Additionally, I used the inventory UI assets linked to by Kryzarel in his videos and found here:
Inventory UI Assets

The current implementation of the inventory and item UI is partially based on the Inventory System built by Kryzarel in his video series found here:
Inventory System #1-19

I generalized the ideas in these tutorials so that they applied to a greater variety of situations and expanded on the concepts to better fit the needs of my system.

Next
Next

VR Escape Room