top of page
Screenshot 2023-11-01 134352.png

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

Tech designer

8 weeks

Feature developement

1 developer

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

Game research

Before starting the project I researched the inventory, the machines, and how they're connected to gameplay in Satisfactory, which informed me how to create the functionality of the project and what to cut.

Engine research

As I started prototyping I also started researching the engine and the possible ways to solve different issues and how to set up the functionality of the project.

How-to

When I finished i wrote a how-to document to share the feature and have the user easily set up it up in a new project. This explains how to create new items, recipes, change the scale and more to show how to expand upon the feature as well.

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