Ship file
Exportable ship configuration file (*.shipz) is a FAT-deflate zip-like archive that is basically used to transfer ship blueprints between players outside of the Steam Workshop. However you can use it to process your ship with some external programs as well.
Contents
Archive structure
Currently (0.1.55d) the ship file archive contains such a list of text files:
- authorId - plain text file contains a steamID of the ship creator account. Ends with a line feed symbol.
- authorName - plain text file in theory, should contain the creator's name, but for now it contains just two new line symbols.
- device - JSON file describes the current state of all on-board devices and their configuration, access group lists and other stuff.
- displayName - plain text file contains a ship name. You can use game color codes to make it colorful, but beware - game loading screens and search filters do not get along with these too much. File ends with a line feed symbol.
- hash - plain text file contains a 64-byte md5-like hash of something. File ends with a line feed symbol.
- IRversion - plain text file contains current game version (aka "0.1.55d") when the save was taken. Ends with a line feed symbol.
- name - plain text file currently contains just two line feed symbols.
- publishedfileid - plain text file contains steamID of the Workshop item the ship file represents. For saves that have been never uploaded to the Steam Workshop it's "0". Two saves with the same "publishedfileid" will upload their content as a same workshop item, so if you want to upload several versions of the same ship to the Workshop, just export it, change "publishedfileid" to 0, import and upload as a new workshop item! File ends with a line feed symbol.
- ship - XML file contains a list of ship rooms, list of exterior props (type + position + color) and the history of the interior changes (so called "instructions"). However if you want to use it in order to cancel several changes of the ship interior, beware not to mess with the device file which should be edited as well.
- shipVersion - plain text file contains an integer number that increments each time ship is uploaded to the Workshop, so that game knows if the ship on your PC is older than the one you have online. File ends with a line feed symbol.
Ship XML
The document tree root element is CShip. It wraps two sections: Exterior and Interior.
Exterior props
Exterior section contains two flags: UseEditorModels>true and CreateDevices>true. Other two subsections are Props and UserPlacedProps (in case if there are no exterior props the're like "<Props />"). Exact difference between these two is not yet clear. These contain the same set of CExteriorProp entities. Each CExteriorProp represents a separate exterior prop. For example, ext_SolarPanel_01:
<CExteriorProp> <PropTypeString>ext_SolarPanel_01</PropTypeString> <Position><X>-68</X><Y>-18</Y><Z>10</Z></Position> <PaletteIndex>0</PaletteIndex> <Transform> <M14>0</M14> <M24>0</M24> <M34>0</M34> <M44>1</M44> <LocalX><X>1</X><Y>0</Y><Z>0</Z></LocalX> <LocalY><X>0</X><Y>-0</Y><Z>-1</Z></LocalY> <LocalZ><X>0</X><Y>1</Y><Z>-0</Z></LocalZ> <Translation><X>-67</X><Y>-17</Y><Z>11</Z></Translation> </Transform> </CExteriorProp>
PropTypeString defines the type of the exterior prop, PaletteIndex - used color scheme (seems like you can repaint all the ship with at once using "search and replace" function), Position - its coordinates and Transform - its position (direction). Complete assignment of each Transform subfield is not yet clear.
Non-decorative exterior props list
- ext_UltraHull
- ext_SensorArraySmall_01
- ext_LongRangeSensorArray_01
- ext_ManeuveringThruster_01
- ext_ManeuveringThruster_02
- ext_ManeuveringThruster_03
- ext_ManeuveringThruster_04
- ext_UltraHull
- ext_SolarPanel_01
- ext_SolarPanel_02
- ext_242_Class2_IonEngine_01
- ext_232_Class1_IonEngine_01
- ext_311_Class3_IonEngine_01
- ext_MountedTurret_01
Interior props
Interior props section has a PropManager header with same UseEditorModels and CreateDevices as in exterior section, but also has CurrentActivePalette field which corresponds to the selected color scheme you had while saving the ship in your editor.
<PropManager> <UseEditorModels>true</UseEditorModels> <CurrentActivePalette>15</CurrentActivePalette> <CreateDevices>true</CreateDevices> </PropManager>
Second subsection is a RoomManager/Rooms which contains a list of ship rooms. Each room is marked as item:
<item> <key> <int>0</int> </key> <value> <CShipRoom> <Name>Control hub</Name> <roomId>0</roomId> </CShipRoom> </value> </item>
Here int and roomId contain the room id (the same exact number) and Name defines the room's name.
Third subsection is SavedInstructions which contains a list of so called ShipInterior_Instruction and is, basically, the history of all your interior edits. Feels like when game loads the ship file it simulates all the actions chain to "recreate" the ship. A list of known instructions:
- ShipInterior_Instruction_ClaimTile - when you build interior room block in a build mode;
<ShipInterior_Instruction xsi:type="ShipInterior_Instruction_ClaimTile"> <position> <X>-108</X> <Y>-12</Y> <Z>8</Z> </position> <roomID>6</roomID> </ShipInterior_Instruction>
- ShipInterior_Instruction_UnclaimTile - when you remove such block;
<ShipInterior_Instruction xsi:type="ShipInterior_Instruction_UnclaimTile"> <position> <X>-8</X> <Y>0</Y> <Z>0</Z> </position> </ShipInterior_Instruction>
- ShipInterior_Instruction_AddProp - when you add an interior prop in interior editor;
<ShipInterior_Instruction xsi:type="ShipInterior_Instruction_AddProp"> <position> <X>-26.6469269</X> <Y>-7.43800735</Y> <Z>8</Z> </position> <tileType>MissileLauncher_Left_01</tileType> <rotation>2</rotation> </ShipInterior_Instruction>
- ShipInterior_Instruction_RemovePropByID - when you remove it;
<ShipInterior_Instruction xsi:type="ShipInterior_Instruction_RemovePropByID"> <propId>83</propId> </ShipInterior_Instruction>
- ShipInterior_Instruction_ChangeActivePalette - changes the selected interior editor prop color scheme;
<ShipInterior_Instruction xsi:type="ShipInterior_Instruction_ChangeActivePalette"> <activeColor>8</activeColor> </ShipInterior_Instruction>
- ShipInterior_Instruction_RepaintProp - paints a prop with the active color scheme, prop ID required;
<ShipInterior_Instruction xsi:type="ShipInterior_Instruction_RepaintPropTypeInRoom"> <propID>1274</propID> <singleFloor>false</singleFloor> </ShipInterior_Instruction>
- ShipInterior_Instruction_RepaintPropTypeInRoom - the same but as if you clicked on it with Shift;
<ShipInterior_Instruction xsi:type="ShipInterior_Instruction_RepaintPropTypeInRoom"> <propID>1274</propID> <singleFloor>false</singleFloor> </ShipInterior_Instruction>
- ShipInterior_Instruction_ChangeRoomName - renaming the room by its ID;
<ShipInterior_Instruction xsi:type="ShipInterior_Instruction_ChangeRoomName"> <roomId>8</roomId> <name>Turrets</name> </ShipInterior_Instruction>