Export dialog - SillyBits/satisfactory-savegame-tool-ng GitHub Wiki

Export dialog

A neat little feature this tool allows for is the ability to export savegames into text files. Besides exporting as a whole (e.g. to learn the structure behind savegames, like I did), one can also do partially filtered exports on specific aspects. This dialog can be reached though the 'File' menu, and only avail when a savegame was loaded.

Ok, so lets head right in.

Unfiltered 'export as a whole'

When opening up, you'll be presented the following:

Note that the 'Save' button at the bottom is disabled, thats due to an empty resp. invalid export path. You can either type the path yourself, or use the 'Browse' button to open up the typical 'Save as' dialog (which uses the 'Export path' as configured in the Options dialog).

After selecting a valid save location, the 'Save' button will be disabled and your good to go on your 'export as a whole':

Please note that such exports should be done by using the .export extension or selecting Raw text (*.export) with the export type dropdown. More types suitable with 'export as a whole' will be added in future, like JSON or XML. If you want to use an extension different from the ones currently known (.export and .csv), you the explicitely select the type of export using the dropdown, or the 'Save' button won't enable.


Filtered exports

Another option possible with the export dialog: doing a partial export using some filter condition(s). Following a short example on how to accomplish such.

Note: Even if its possible to export raw text, you're better off with selecting CSV export if you're planning on doing further analysis on the data exported.

After selecting a suitable export destination, hit the 'Add' button to insert your first condition:

A filter is made up of four definitions:

  • A logic operator which allows for combining multiple filter.
  • A scope on where to look for information.
  • A comparison operation, like is.
  • The actual comparison value.

The logical operator allows for choosing between And and Or:

As described in the hint, those operators do follow a specific pattern. (TBD)

Next up, the scope used. Those scopes may sound weird at first, so I'll try to explain the meanings:

  • ClassName: Expresses a specific type within the save, like
    • a 'Constructor' (/Game/FactoryGame/Buildable/Factory/ConstructorMk1/Build_ConstructorMk1.Build_ConstructorMk1_C), or
    • a 'Conveyor belt' (/Game/FactoryGame/Buildable/Factory/ConveyorBeltMk4/Build_ConveyorBeltMk4.Build_ConveyorBeltMk4_C). This might sound familiar if you've browsed your savegame using the 'Classes' tree.
  • PathName: Denotes some specific instance, like - as with ClassName above - might be
    • a 'Constructor' numbered as #0, Persistent_Level:PersistentLevel.Build_ConstructorMk1_C_0, or
    • a 'Conveyor belt' numbered as #550, Persistent_Level:PersistentLevel.Build_ConveyorBeltMk4_C_550 This information is used within the 'Paths' tree.
  • LevelName: Can be safely ignored for now :angel:
  • Field name: A save is just a tree made out of nodes and leafs, with leafs having specific names to - simply spoken - let Satisfactory address this information. So this scope allows for filtering on specific leafs, for example,
    • mCompassText contains the label you've added to a beacon, or
    • mPrimaryColor is the RGB color code you've assigned using the color gun. Best source of information for those names is with the 'Classes' tree as visualisation will show those, or by studying an 'export as a whole' file.
  • Field value: The actual value stored.

The comparison operator should be self-explaining:

Our final first filter will look like this:

After adding two more filters, we'll end up with something like this:

Simply spoken: This will instruct to pick all fields named Name and checking its value being either mPrimaryColor or mSecondaryColor. Hitting the 'Save' button will end up in a CSV file like this:


Note that information presented is somewhat temporary as future version might add new export types or introduce a completely different UI (especially with the filters).