Mod Structure
Mods can be developed locally by adding a folder to %home%/Documents/my games/Stationeers/mods/ with files for the mod.
Layout
About/
About.xml # This file is required for the game to recognize this as a mod
Preview.png # Image shown in the in-game workshop menu
thumb.png # Thumbnail image in steam workshop (must be <1MB)
GameData/
*.xml # game data xml files (recipes, traders, start conditions, etc.)
Language/
*.xml # localization xml files
About.xml format
Builtin
The game supports a small set of builtin fields:
<?xml version="1.0" encoding="utf-8"?>
<ModMetadata>
<!-- Title in workshop and display name in-game -->
<Name>My Mod</Name>
<!-- Author and Version are for in-game display only -->
<Author>Me</Author>
<Version>1.2.3</Version>
<!-- Description is shown in the workshop and in-game -->
<Description>
[h1]My Mod[/h1]
</Description>
<!-- Steam workshop ID. Will be automatically added to xml file after upload -->
<WorkshopHandle>12345678</WorkshopHandle>
<!-- Custom tags for workshop. The Mod tag will automatically be added -->
<Tags>
<Tag>Special</Tag>
</Tags>
</ModMetadata>
Description field so it is formatted properly for the workshop.
StationeersLaunchPad
When using StationeersLaunchPad, an additional set of fields is supported:
<?xml version="1.0" encoding="utf-8"?>
<ModMetadata>
<Name>My Mod</Name>
<ModID>my.mod</ModID> <!-- unique id to identify mod for dependencies -->
<Author>Me</Author>
<Version>1.2.3</Version>
<!-- Steam tags will automatically be converted to display proper formatting in game -->
<Description>
[h1]My Mod[/h1]
</Description>
<!-- Text for the Change Notes tab on the workshop. Should be replaced completely for each version -->
<ChangeLog>
[h3]Version 1.2.3[/h3]
[list]
[*]Fixed something
[*]Added something else
[/list]
</ChangeLog>
<WorkshopHandle>12345678</WorkshopHandle>
<Tags><Tag>Special</Tag></Tags>
<!-- List dependencies of this mod. Can be referenced by ModID or WorkshopHandle -->
<DependsOn ModID="other.mod" />
<DependsOn WorkshopHandle="87654321" />
<!-- Ordering constraints are enforced if a matched mod is installed, but does not make them a dependency -->
<!-- Ensure this mod is loaded before other mods -->
<OrderBefore ModID="later.mod" />
<!-- Ensure this mod is loaded after other mods -->
<OrderAfter ModID="earlier.mod" />
</ModMetadata>
Deprecated StationeersMods
There is also a set of deprecated fields that are still supported by StationersLaunchPad. The newer format is encouraged for readability.
<?xml version="1.0" encoding="utf-8"?>
<ModMetadata>
<Name>My Mod</Name>
<Author>Me</Author>
<Version>1.2.3</Version>
<Description>
[h1]My Mod[/h1]
</Description>
<!-- Separate description displayed in-game on workshop menu using TextMeshPro formatting tags -->
<!-- If not present, Description field will be parsed and converted from steam to TMP format -->
<InGameDescription>
<![CDATA[
<size="30">My Mod</color>
</size>
]]>
</InGameDescription>
<ChangeLog>
[h3]Version 1.2.3[/h3]
</ChangeLog>
<WorkshopHandle>12345678</WorkshopHandle>
<Tags><Tag>Special</Tag></Tags>
<!-- Dependencies of this mod -->
<Dependencies>
<Mod>
<!-- workshop handle of dependency -->
<Id>87654321</Id>
</Mod>
</Dependencies>
<!-- Mods to load *After* this mod -->
<!-- Equivalent to OrderBefore -->
<LoadAfter>
<Mod><Id>76543218</Id></Mod>
</LoadAfter>
<!-- Mods to load *Before* this mod -->
<!-- Equivalent to OrderAfter -->
<LoadBefore>
<Mod><Id>65432187</Id></Mod>
</LoadBefore>
</ModMetadata>