This application can read, modify and write Save games for Satisfactory
The latest compiled version can be obtained in the "Releases" section of this repository or at https://cable.ayra.ch/satisfactory/editor.php
This readme document only gives a brief overview of the features.
The context help ([F1]
) contains more detail about the feature you are using.
Main menu items have a tooltip that shows when you hover over it with the mouse.
GENERAL WARNING
Please make a backup of your save files.
The editor will warn you before overwriting but you should still backup your saves in case your good idea turned out to be horrible.
Saves are in %LOCALAPPDATA%\FactoryGame\Saved\SaveGames
When overwriting, a .sav.gz
file is created if none does exist already.
[CTRL]
+[L]
in the main window or use the File menu[CTRL]
+[M]
in the main window or use the File menuMost menu items and labels, as well as some buttons contain tool tip texts. They appear when you hover your cursor over them.
Otherwise the usage is generally straight forward:
If you get stuck at any point, press [F1]
to bring up the help window.
This editor is not meant to edit individual item properties (no micro managing of items). This does not mean you will never be able to edit individual item propertied, but it's not the main focus. An editor from a different developer exists that allows these kind of edits.
It's meant to make bulk changes to the save file and change predefined features.
A few prominent features are outlined below
The main window will display a map with item positions overlaid on it.
The map can be refreshed by pressing F5
at any time in the main window.
Whenever you do this, a copy of the image is saved next to the save file itself.
Some dialogs have an M
button next to the item list.
This button allows you to render your current selection on the main window map.
This allows you to change the session name and accumulated play time.
This shows a list of all entries in the save file and how many of them there are. You can render individual item groups or multiple of them to the main map.
This allows you to duplicate entries. Be aware that not all entries behave properly when duplicated, especially those that are supposed to only exist once.
You can optionally set an offset for duplicated items. The offset is always applied to the previously offset item when creating multiple copies at once, essentially making a row of copies on the map.
In most cases you want to apply an offset, the entries will clip otherwise and cause lag.
The deleter allows you to get rid of entries quickly. Two versions exist:
The exporter allows you to export individual entries or groups of entries to the clipboard to import them later into a different save file.
The export happens in XML format. You can paste the contents into any text editor and edit to your liking.
Importing is done from the clipboard. The importer has two options.
One option allows you to delete all existing entries of the same type you import. This can be helpful when importing entries that are supposed to only exist once, or when you want to overwrite your factory with the one you import.
The other option allows you to fix internal names.
Utility functions have no effect on your inventory, essentially allowing you to duplicate items.
If you have the game installed (any version works, weekend test, early release, experimental), you can extract all audio files from the game files themselves. This will only extract "RIFF WAVE" formatted audio. You will get:
The files have no names, so they are just numbered, starting with 0001
.
The extracted files are put in the "Audio" directory inside the editor directory.
It's created automatically once you use the Audio Extractor feature.
These functions are not yet coded in (see TODO list at bottom for more stuff):
These features are contained in the editor but not related to editing
The editor shows a menu option if an update is available. You don't have to click it if you don't want to. In that case the update is installed on the next launch.
Regardless of where you are, pressing [F1]
brings up the help window with help for the current context.
The window is not modal, meaning you can continue to work while it's being shown.
Pressing [F1]
in a different window will update the help window with relevant help text.
You can access the full version history from the Help menu
If the application is about to crash, it allows you to send an error report.
The error report includes:
lastlog.txt
Your username is stripped from environment variables.
Variables containing password
,pwd
or login
will be completely excluded from the list.
If you don't feel comfortable sending this information, you can just close the window. Information is only sent when you press the "Send" button.
This chapter contains things you might want to know about the save file
Entries have two names. One name is the one that identifies the entry. This will exist as many times as there are entries of that type.
The other name is a kind of "internal name" that is dynamically generated and has to be unique for each object. The internal name is used when entries reference other entries.
The importer has an option to ensure they are unique, and the duplicator will automatically generate new names for cloned entries.
In most cases the internal name will not bother you, but when you try to import entries, they could be changed.
The coordinates X=0,Y=0,Z=0
are the center of the map, not the top left corner as would be intuitive.
A single unit is 1cm. This means the 8x2 foundation has a bounding box of X=800,y=800,Z=200
keep this in mind when applying offsets in the duplicator or when manually edditing exported entries.
Try to not make things clip other objects because it can cause lag.
The file format is not too difficult to read. Numbers are little endian and most values are prefixed. String handling is somewhat special because strings are length prefixed and null terminated. Normally you only do one of those things. The editor removes the null terminator on load and ads it back when writing.
The file has to be in a certain order. The string list has to be last for example.
The editor generally keeps everything in order.