top of page

Modularity
I created the system to be easily expandable to fit other types of crafting using competitor analysis and building with a modular mindset. New machines, new items and new recipes have all been made easy to add and expand if needed.
Machines
The machine was created around the recipes allowing the user to choose which Satisfactory machine it should replicate. Recipes are assigned to a machine type based on the number of required inputs and allows for the creation of alternative recipes.
Inventory
I created the inventory to be easily changeable in terms of size, position and visual design. The items are created in a Data table with all required information, such as image, stack size, name and more.
This project was focused on researching and recreating a feature in an existing game, and making it easy-to-use and modular to allow others to add it to any project or possibly sell it on Unreal Marketplace
About Satisfactory Inventory & Crafting
Research
-
Researched the game loop and machines in Satisfactory
-
Conducted competitor analysis on factory games regarding machines and gameplay loops
-
Conducted engine research to find the best frameworks for creating the feature.
Implementation
-
Created the inventory system with drag and drop objects, and made it easily expandable
-
Created the machines with automatic recipe sorting for different input requirements and machine types
-
Created custom Editor Utility Widget tools for easier creation of items and recipes.
Testing
-
Tested the feature with game developers with varying experience with the genre
-
Iterated based on feedback from tests, focused on ease-of-use and modularity
Role responsibilities
About
Inventory system
The inventory system is inspired by the player inventory from Satisfactory, with the items being the images, names, and stack sizes from the game. I wanted to include as much as possible of the functionality from the original game, while also making it easy to change for designers, so I worked on keeping the feature modular and easy to adjust if it was implemented into a new project.
Implemented features include:
-
Open/close inventory
-
Drag and drop
-
Dropping items
-
Picking up items
-
Combining stacks
-
Swapping locations
-
Overflow from combining stacks
-
Increase/decrease inventory size
-
Increase/decrease inventory slots
Inventor functionality
Machine system
The machine I created is a combination of the different machine types from Satisfactory, combined for ease of use, but can easily be split into different machines if needed. The machine automatically gets recipes from the recipe data table and places them in the correct machine and object type, making adding new items easy. The recipes also automatically get the images and names from a separate item data table.
Implemented features include:
-
Separate machine inventory, with the same features as the one above
-
Automatic recipe buttons with images from the Item data table
-
Recipe sorting between the machine types
-
Item creation consuming components
-
Changeable speed for item creation
-
Multiple crafting components for one item
-
Automatic machine emptying when recipes are changed
Machine functionality
Machine modularity
Modularity
The focus of the project was to recreate the inventory and machine crafting from Satisfactory and make it modular and easy-to-use, for future use of the feature in other projects. I created the inventory systems and machines to be expandable and easy to change out images, names, machine types, and more.
The machine's recipes are placed in UI widgets that can expand to any size, to avoid restricting the number of recipes or items the designer wants to include.
This also applies to object types such as Standard parts or Space Elevator parts, to allow designers to include as many different types of components or recipes as they want.
I created the object types and machine types to easily be added to the machines, allowing designers to add the new options in an Enum list and automatically appear in the machines.
Project Overview
Workflow tools
Adding new items to the game, requires filling in the data table with: Key, Display Name, Image, Mesh, and Max stack. If any of these are missing, the item won't be shown in the recipes in the machines.
To speed this up for designers created an Editor Utility Widget that allows the designer to create the items with checks for whether they are valid. If there is missing information such as the picture or mesh it will set placeholder images to avoid creating invalid items.
I created the tool with ease of use in mind and added a Clear button in case multiple items are created at the same time, to avoid accidentally putting in the wrong information.
Item creation
Item creation tool
When adding new recipes for the machines, some information isn't required depending on the number of required components. This can confuse when creating recipes directly in the data table.
I created a second Editor Utility Widget that filters out the unnecessary information that the designer doesn't need with the recipe in question and dynamically expands when new options are needed.
The required inputs variable only shows the text boxes for the required information while hiding the unused ones, as well as the Alternative Recipe, which hides the secondary display name if not needed.
Recipe creation
Recipe creation tool
Documentation
Take-aways
-
Researching the engine and different solutions before starting to prototype helped me find solutions to a lot of the potential problems before I hit them.
-
Planning out the exact features of the project I'm planning will help me avoid feature creep and oversights later in the project.
-
Deciding what features to cut or to leave out can help with scope issues, but also changes the experience of the feature.
-
Isolating a single feature with lots of connected features and gameplay can be difficult and where you cut can change the outcome of the project
bottom of page