imported>76561198054818918 (Added up through CargoTraffic) |
imported>76561198054818918 (Completed up to DysonSphere) |
||
Line 7: | Line 7: | ||
{ | { | ||
"VFSAVE" | "VFSAVE" | ||
int64 fileStreamLength | |||
int32 saveFileFormatNumber = 4 | |||
int32 majorGameVersion | |||
int32 minorGameVersion | |||
int32 releaseGameVersion | |||
int64 gameTick | |||
int64 nowTicks | |||
int32 sizeOfPngFile | |||
uint8 screenShotPngFile[sizeOfPngFile] | |||
GameData | GameData | ||
} | } | ||
Line 21: | Line 21: | ||
GameData | GameData | ||
{ | { | ||
int32 version = 2 | |||
string gameName | string gameName | ||
GameDesc gameDesc | GameDesc gameDesc | ||
int64 gameTick | |||
GamePrefsData preferences (version >= 1) | GamePrefsData preferences (version >= 1) | ||
GameHistoryData | GameHistoryData | ||
uint8 bool hidePlayerModel (version >= 2) | |||
uint8 bool disableController (version >= 2) | |||
GameStatData statistics | GameStatData statistics | ||
int32 planetId | |||
Player mainPlayer | Player mainPlayer | ||
int32 factoryCount | |||
GalacticTransport | GalacticTransport | ||
PlanetFactory[factoryCount] | PlanetFactory[factoryCount] | ||
int32 galaxyStarCount: Must equal GameDesc::starCount or the game will crash. | |||
int32 numDysonSpheres | |||
[numDysonSpheres] { | [numDysonSpheres] { | ||
int32 dysonSphereDataIsAvailableFlag: Must be 0 or 1 or the game will crash. | |||
DysonSphere (dysonSphereDataIsAvailableFlag == 1) | DysonSphere (dysonSphereDataIsAvailableFlag == 1) | ||
} | } | ||
Line 45: | Line 45: | ||
GameDesc | GameDesc | ||
{ | { | ||
int32 version = 2 | |||
int32 galaxyAlgo | |||
int32 galaxySeed | |||
int32 starCount | |||
int32 playerProto | |||
float resourceMultiplier (version >= 2) | float resourceMultiplier (version >= 2) | ||
int32 numThemeIds (version >= 1) | |||
int32 themeIds[numThemeIds] (version >= 1) | |||
} | } | ||
GamePrefsData | GamePrefsData | ||
{ | { | ||
int32 version = 2 | |||
double cameraUPosX | double cameraUPosX | ||
double cameraUPosY | double cameraUPosY | ||
Line 65: | Line 65: | ||
float cameraURotZ | float cameraURotZ | ||
float cameraURotW | float cameraURotW | ||
int32 reformCursorSize (version >= 1) | |||
int32 numReplicatorMultipliers (version >= 1) | |||
replicatorMultipliers[numReplicatorMultipliers] (version >= 1) { | replicatorMultipliers[numReplicatorMultipliers] (version >= 1) { | ||
int32 key | |||
int32 value | |||
} | } | ||
float bool detailPower | float bool detailPower | ||
Line 76: | Line 76: | ||
float bool detailSign | float bool detailSign | ||
float bool detailIcon | float bool detailIcon | ||
int32 numTutorialShowing (version >= 2) | |||
int32 tutorialShowing[numTutorialShowing] (version >= 2) | |||
} | } | ||
GameHistoryData | GameHistoryData | ||
{ | { | ||
int32 version = 2 | |||
int32 numRecipeUnlocked | |||
int32 recipeUnlocked[numRecipeUnlocked] | |||
int32 numTutorialUnlocked (version >= 2) | |||
int32 tutorialUnlocked[numTutorialUnlocked] (version >= 2) | |||
int32 numFeatureKeys | |||
int32 featureKeys[numFeatureKeys] | |||
int32 numTechState | |||
[numTechState] { | [numTechState] { | ||
int32 techProtoIndex | |||
uint8 bool TechState_unlocked | |||
int32 TechState_curLevel | |||
int32 TechState_maxLevel | |||
int64 TechState_hashUploaded | |||
int64 TechState_hashNeeded | |||
} | } | ||
uint8 bool autoManageLabItems | |||
int32 currentTech | |||
int32 numTechQueue (version >= 1) | |||
int32 techQueueechStateKey[numTechQueue] | |||
int32 universeObserveLevel | |||
float solarSailLife | float solarSailLife | ||
float solarEnergyLossRate | float solarEnergyLossRate | ||
uint8 bool useIonLayer | |||
int32 inserterStackCount | |||
float logisticDroneSpeed | float logisticDroneSpeed | ||
float logisticDroneSpeedScale | float logisticDroneSpeedScale | ||
int32 logisticDroneCarries | |||
float logisticShipSailSpeed | float logisticShipSailSpeed | ||
float logisticShipWarpSpeed | float logisticShipWarpSpeed | ||
float logisticShipSpeedScale | float logisticShipSpeedScale | ||
float bool logisticShipWarpDrive | float bool logisticShipWarpDrive | ||
int32 logisticShipCarries | |||
float miningCostRate | float miningCostRate | ||
float miningSpeedScale | float miningSpeedScale | ||
int32 storageLevel | |||
int32 labLevel | |||
int32 techSpeed | |||
float dysonNodeLatitude | float dysonNodeLatitude | ||
int64 universeMatrixPointUploaded | |||
float bool missionAccomplished | float bool missionAccomplished | ||
} | } | ||
Line 127: | Line 127: | ||
GameStatData | GameStatData | ||
{ | { | ||
int32 version = 0 | |||
int32 numTechHashedHistory | |||
int32 techHashedHistory[numTechHashedHistory] | |||
ProductionStatistics | ProductionStatistics | ||
} | } | ||
Line 135: | Line 135: | ||
ProductionStatistics | ProductionStatistics | ||
{ | { | ||
int32 version = 0 | |||
int32 numFactoryStatPool | |||
FactoryProductionStat factoryStatPool[numFactoryStatPool] | FactoryProductionStat factoryStatPool[numFactoryStatPool] | ||
int32 numFirstCreateIds | |||
int32 firstCreateIds[numFirstCreateIds] | |||
int32 numFavoriteIds | |||
int32 favoriteIds[numFavoriteIds] | |||
} | } | ||
FactoryProductionStat | FactoryProductionStat | ||
{ | { | ||
int32 version = 1 | |||
int32 productCapacity | |||
int32 productCursor | |||
ProductStat productPool[productCursor] | ProductStat productPool[productCursor] | ||
int32 numPowerPool, max 5 | |||
PowerStat powerPool[numPowerPool] | PowerStat powerPool[numPowerPool] | ||
int32 numProductIndices | |||
int32 productIndices[numProductIndices] | |||
int64 energyConsumption (version >= 1) | |||
} | } | ||
ProductStat | ProductStat | ||
{ | { | ||
int32 version = 0 | |||
int32 numCount: Saved as 7200. Reads more or less, but only stores up to 7200, and enforces abs. | |||
int32 count[numCount] | |||
int32 numCursor: Saved as 12. Reads more or less, but only stores up to 12. | |||
int32 cursor[numCount] | |||
int32 numTotal: Saved as 14. Reads more or less, but only stores up to 14, and enforces abs. | |||
int32 total[numCount] | |||
int32 itemId | |||
} | } | ||
PowerStat | PowerStat | ||
{ | { | ||
int32 version = 0 | |||
int32 numEnergy: Saved as 3600. Reads more or less, but only stores up to 3600, and enforces abs. | |||
int64 energy[numCount] | |||
int32 numCursor: Saved as 6. Reads more or less, but only stores up to 6. | |||
int32 cursor[numCount] | |||
int32 numTotal: Saved as 7. Reads more or less, but only stores up to 7, and enforces abs. | |||
int64 total[numCount] | |||
int32 itemId | |||
} | } | ||
Player | Player | ||
{ | { | ||
int32 version = 1 | |||
int32 planetId: Ignored on read | |||
float position_x | float position_x | ||
float position_y | float position_y | ||
Line 195: | Line 195: | ||
float uRotation_z | float uRotation_z | ||
float uRotation_w | float uRotation_w | ||
int32 EMovementState movementState (Walk, Drift, Fly, Sail) | |||
float warpState | float warpState | ||
uint8 bool warpCommand | |||
double uVelocity_x | double uVelocity_x | ||
double uVelocity_y | double uVelocity_y | ||
double uVelocity_z | double uVelocity_z | ||
int32 inhandItemId | |||
int32 inhandItemCount | |||
Mecha | Mecha | ||
StorageComponent package[10] | StorageComponent package[10] | ||
PlayerNavigation | PlayerNavigation | ||
int32 sandCount | |||
} | } | ||
Mecha | Mecha | ||
{ | { | ||
int32 version = 0 | |||
double coreEnergyCap | double coreEnergyCap | ||
double coreEnergy | double coreEnergy | ||
Line 217: | Line 217: | ||
double reactorPowerGen | double reactorPowerGen | ||
double reactorEnergy | double reactorEnergy | ||
int32 reactorItemId | |||
StorageComponent reactorStorage[4] | StorageComponent reactorStorage[4] | ||
StorageComponent warpStorage | StorageComponent warpStorage | ||
Line 230: | Line 230: | ||
double droneEjectEnergy | double droneEjectEnergy | ||
double droneEnergyPerMeter | double droneEnergyPerMeter | ||
int32 coreLevel | |||
int32 thrusterLevel | |||
float miningSpeed | float miningSpeed | ||
float replicateSpeed | float replicateSpeed | ||
Line 241: | Line 241: | ||
MechaForge | MechaForge | ||
MechaLab | MechaLab | ||
int32 droneCount | |||
float droneSpeed | float droneSpeed | ||
int32 droneMovement | |||
MechaDrone[droneCount] | MechaDrone[droneCount] | ||
} | } | ||
Line 249: | Line 249: | ||
StorageComponent | StorageComponent | ||
{ | { | ||
int32 version = 1 | |||
int32 id | |||
int32 entityId | |||
int32 previous (version >= 1) | |||
int32 next (version >= 1) | |||
int32 bottom (version >= 1) | |||
int32 top (version >= 1) | |||
int32 EStorageType type (0:Default 1:Fuel 9:Filtered) | |||
int32 gridSize | |||
int32 bans (version >= 1) | |||
grids[gridSize] { | grids[gridSize] { | ||
int32 itemId | |||
int32 filter | |||
int32 count | |||
int32 stackSize | |||
} | } | ||
} | } | ||
Line 269: | Line 269: | ||
PlayerNavigation | PlayerNavigation | ||
{ | { | ||
int32 version = 0 | |||
uint8 bool navigating | |||
int32 naviAstroId | |||
double naviTarget_x | double naviTarget_x | ||
double naviTarget_y | double naviTarget_y | ||
double naviTarget_z | double naviTarget_z | ||
uint8 bool useFly | |||
uint8 bool useSail | |||
uint8 bool useWarp | |||
int32 ENaviStage stage (None, Departure, OriginOrbit, AccOrbit, Space, DestOrbit, Approaching) | |||
double flyThreshold | double flyThreshold | ||
double sailThreshold | double sailThreshold | ||
Line 287: | Line 287: | ||
GalacticTransport | GalacticTransport | ||
{ | { | ||
int32 version = 0 | |||
} | } | ||
PlanetFactory | PlanetFactory | ||
{ | { | ||
int32 version = 1 | |||
int32 planetId | |||
PlanetData | PlanetData | ||
int32 entityCapacity | |||
int32 entityCursor | |||
int32 entityRecycleCursor | |||
EntityData entityPool[entityCursor - 1] | EntityData entityPool[entityCursor - 1] | ||
entityAnimPool[entityCursor - 1] { | entityAnimPool[entityCursor - 1] { | ||
Line 303: | Line 303: | ||
float prepare_length | float prepare_length | ||
float working_length | float working_length | ||
uint32 state | |||
float power | float power | ||
} | } | ||
entitySignPool[entityCursor - 1] { | entitySignPool[entityCursor - 1] { | ||
uint32 signType | |||
uint32 iconType | |||
uint32 iconId0 | |||
uint32 iconId1 | |||
uint32 iconId2 | |||
uint32 iconId3 | |||
float count0 | float count0 | ||
float count1 | float count1 | ||
Line 322: | Line 322: | ||
float w | float w | ||
} | } | ||
int32 entityConnPool[entityCursor * 16 - 16] | |||
int32 entityRecycle[entityRecycleCursor] | |||
int32 prebuildCapacity | |||
int32 prebuildCursor | |||
int32 prebuildRecycleCursor | |||
PrebuildData prebuildPool[prebuildCursor - ] | PrebuildData prebuildPool[prebuildCursor - ] | ||
int32 prebuildConnPool[prebuildCursor * 16 - 16] | |||
int32 prebuildRecycle[prebuildRecycleCursor] | |||
int32 vegeCapacity | |||
int32 vegeCursor | |||
int32 vegeRecycleCursor | |||
VegeData vegePool[vegeCursor - 1] | VegeData vegePool[vegeCursor - 1] | ||
int32 vegeRecycle[vegeRecycleCursor] | |||
int32 veinCapacity | |||
int32 veinCursor | |||
int32 veinRecycleCursor | |||
VeinData veinPool[veinCursor - 1] | VeinData veinPool[veinCursor - 1] | ||
int32 veinRecycle[veinRecycleCursor] | |||
veinAnimPool[veinCursor] { | veinAnimPool[veinCursor] { | ||
float time | float time | ||
float prepare_length | float prepare_length | ||
float working_length | float working_length | ||
uint32 state | |||
float power | float power | ||
} | } | ||
Line 359: | Line 359: | ||
PlanetData | PlanetData | ||
{ | { | ||
int32 modDataByteCount | |||
uint8 modData[modDataByteCount] | |||
int32 numVeinAmounts | |||
int64 veinAmounts[numVeinAmounts] | |||
int32 numVeinGroups | |||
veinGroups[numVeinGroups] { | veinGroups[numVeinGroups] { | ||
int32 EVeinType type () | |||
float pos_x | float pos_x | ||
float pos_y | float pos_y | ||
float pos_z | float pos_z | ||
int32 count: Read, but then set to zero | |||
int64 amount: Read, but then set to zero | |||
} | } | ||
} | } | ||
Line 376: | Line 376: | ||
EntityData | EntityData | ||
{ | { | ||
uint8 version = 0 | |||
int32 id | |||
int16 protoId | |||
int16 modelIndex | |||
float pos_x | float pos_x | ||
float pos_y | float pos_y | ||
Line 387: | Line 387: | ||
float rot_z | float rot_z | ||
float rot_w | float rot_w | ||
int32 beltId | |||
int32 splitterId | |||
int32 storageId | |||
int32 tankId | |||
int32 minerId | |||
int32 inserterId | |||
int32 assemblerId | |||
int32 fractionateId | |||
int32 ejectorId | |||
int32 siloId | |||
int32 labId | |||
int32 stationId | |||
int32 powerNodeId | |||
int32 powerGenId | |||
int32 powerConId | |||
int32 powerAccId | |||
int32 powerExcId | |||
int32 monsterId | |||
} | } | ||
PrebuildData | PrebuildData | ||
{ | { | ||
uint8 version = 0 | |||
int32 id | |||
int16 protoId | |||
int16 modelIndex | |||
float pos_x | float pos_x | ||
float pos_y | float pos_y | ||
Line 427: | Line 427: | ||
float rot2_z | float rot2_z | ||
float rot2_w | float rot2_w | ||
int32 upEntity | |||
int16 pickOffset | |||
int16 insertOffset | |||
int32 recipeId | |||
int32 filterId | |||
int32 refCount | |||
int32 refArr[refCount] | |||
} | } | ||
VegeData | VegeData | ||
{ | { | ||
uint8 version = 0 | |||
int32 id | |||
int16 protoId | |||
int16 modelIndex | |||
int16 hp | |||
float pos_x | float pos_x | ||
float pos_y | float pos_y | ||
Line 457: | Line 457: | ||
VeinData | VeinData | ||
{ | { | ||
uint8 version = 0 | |||
int32 id | |||
int16 EVeinType (None, Iron, Copper, Silicium, Titanium, Stone, Coal, Oil, Fireice, Diamond, Fractal, Crysrub, Grat, Bamboo, Mag) | |||
int16 modelIndex | |||
int16 groupIndex | |||
int32 amount | |||
int32 productId | |||
float pos_x | float pos_x | ||
float pos_y | float pos_y | ||
float pos_z | float pos_z | ||
int32 minerCount | |||
int32 minerId0 | |||
int32 minerId1 | |||
int32 minerId2 | |||
int32 minerId3 | |||
} | } | ||
CargoContainer | CargoContainer | ||
{ | { | ||
int32 version = 0 | |||
int32 poolCapacity | |||
int32 cursor | |||
int32 recycleBegin | |||
int32 recycleEnd | |||
cargoPool[cursor] { | cargoPool[cursor] { | ||
int32 item | |||
float position_x | float position_x | ||
float position_y | float position_y | ||
Line 491: | Line 491: | ||
float rotation_w | float rotation_w | ||
} | } | ||
int32 recycleIds[poolCapacity] | |||
} | } | ||
CargoTraffic | CargoTraffic | ||
{ | { | ||
int32 version = 0 | |||
int32 beltCursor | |||
int32 beltCapacity | |||
int32 beltRecycleCursor | |||
int32 splitterCursor | |||
int32 splitterCapacity | |||
int32 splitterRecycleCursor | |||
int32 pathCursor | |||
int32 pathCapacity | |||
int32 pathRecycleCursor | |||
BeltComponent beltPool[beltCursor - 1] | BeltComponent beltPool[beltCursor - 1] | ||
int32 beltRecycle[beltRecycleCursor] | |||
SplitterComponent splitterPool[splitterCursor - 1] | SplitterComponent splitterPool[splitterCursor - 1] | ||
int32 splitterRecycle[splitterRecycleCursor] | |||
[pathCursor - 1] { | [pathCursor - 1] { | ||
int32 cargoPathIndex | |||
CargoPath (cargoPathIndex != 0) | CargoPath (cargoPathIndex != 0) | ||
} | } | ||
int32 pathRecycle[pathRecycleCursor] | |||
} | } | ||
BeltComponent | BeltComponent | ||
{ | { | ||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 speed | |||
int32 segPathId | |||
int32 segIndex | |||
int32 segPivotOffset | |||
int32 segLength | |||
int32 outputId | |||
int32 backInputId | |||
int32 leftInputId | |||
int32 rightInputId | |||
} | } | ||
SplitterComponent | SplitterComponent | ||
{ | { | ||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 beltA | |||
int32 beltB | |||
int32 beltC | |||
int32 beltD | |||
int32 input0 | |||
int32 input1 | |||
int32 input2 | |||
int32 input3 | |||
int32 output0 | |||
int32 output1 | |||
int32 output2 | |||
int32 output3 | |||
uint8 bool inPriority | |||
uint8 bool outPriority | |||
int32 outFilter | |||
} | } | ||
CargoPath | CargoPath | ||
{ | { | ||
int32 version = 0 | |||
int32 id | |||
int32 capacity | |||
int32 bufferLength | |||
int32 chunkCapacity | |||
int32 chunkCount | |||
int32 updateLen | |||
uint8 bool closed | |||
int32 outputPathIdForImport | |||
int32 outputIndex | |||
int32 numBelts | |||
int32 numInputPaths | |||
chunks[chunkCount] { | |||
int32 | |||
int32 | |||
int32 | |||
} | |||
[bufferLength] { | |||
float pointPos_x | |||
float pointPos_y | |||
float pointPos_z | |||
float pointRot_x | |||
float pointRot_y | |||
float pointRot_z | |||
float pointRot_w | |||
} | |||
int32 belts[numBelts] | |||
int32 inputPaths[numInputPaths] | |||
} | } | ||
FactoryStorage | FactoryStorage | ||
{ | { | ||
int32 version = 0 | |||
int32 storageCursor | |||
int32 storageCapacity | |||
int32 storageRecycleCursor | |||
[storageCursor - 1] { | |||
int32 storagePoolIndex | |||
int32 size (storagePoolIndex != 0) | |||
StorageComponent storagePool (storagePoolIndex != 0) | |||
} | |||
int32 storageRecycle[storageRecycleCursor] | |||
int32 tankCapacity | |||
int32 tankCursor | |||
int32 tankRecycleCursor | |||
TankComponent tankPool[tankCursor] | |||
int32 tankRecycle[tankRecycleCursor] | |||
} | |||
TankComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 lastTankId | |||
int32 nextTankId | |||
int32 belt0 | |||
int32 belt1 | |||
int32 belt2 | |||
int32 belt3 | |||
uint8 bool isOutput0 | |||
uint8 bool isOutput1 | |||
uint8 bool isOutput2 | |||
uint8 bool isOutput3 | |||
int32 fluidStorageCount | |||
int32 currentCount | |||
int32 fluidId | |||
uint8 bool outputSwitch | |||
uint8 bool inputSwitch | |||
uint8 bool isBottom | |||
} | } | ||
PowerSystem | PowerSystem | ||
{ | { | ||
int32 version = 0 | |||
int32 generatorCapacity | |||
int32 genCursor | |||
int32 genRecycleCursor | |||
PowerGeneratorComponent genPool[genCursor - 1] | |||
int32 genRecycle[genRecycleCursor] | |||
int32 nodeCapacity | |||
int32 nodeCursor | |||
int32 nodeRecycleCursor | |||
PowerNodeComponent nodePool[nodeCursor - 1] | |||
int32 nodeRecycle[nodeRecycleCursor] | |||
int32 consumerCapacity | |||
int32 consumerCursor | |||
int32 consumerRecycleCursor | |||
PowerConsumerComponent consumerPool[consumerCursor - 1] | |||
int32 consumerRecycle[consumerRecycleCursor] | |||
int32 accumulatorCapacity | |||
int32 accCursor | |||
int32 accRecycleCursor | |||
PowerAccumulatorComponent accPool[accCursor - 1] | |||
int32 accRecycle | |||
int32 exchangerCapacity | |||
int32 excCursor | |||
int32 excRecycleCursor | |||
PowerExchangerComponent excPool[excCursor - 1] | |||
int32 excRecycle[excRecycleCursor] | |||
int32 networkCapacity | |||
int32 netCursor | |||
int32 netRecycleCursor | |||
[netCursor] { | |||
int32 powerNetworkIncludedFlag | |||
PowerNetwork netPool (powerNetworkIncludedFlag == 1) | |||
} | |||
int32 netRecycle[netRecycleCursor] | |||
} | |||
PowerGeneratorComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 networkId | |||
uint8 bool photovoltaic | |||
uint8 bool wind | |||
uint8 bool gamma | |||
int64 genEnergyPerTick | |||
int64 useFuelPerTick | |||
int16 fuelMask | |||
int64 fuelEnergy | |||
int16 curFuelId | |||
int16 fuelId | |||
int16 fuelCount | |||
int64 fuelHeat | |||
int32 catalystId | |||
int32 catalystPoint | |||
int32 productId | |||
float productCount | |||
int64 productHeat | |||
float warmup | |||
float ionEnhance | |||
float x | |||
float y | |||
float z | |||
} | |||
PowerNodeComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 networkId | |||
uint8 bool isCharger | |||
int32 workEnergyPerTick | |||
int32 idleEnergyPerTick | |||
int32 requiredEnergy | |||
float powerPoint_x | |||
float powerPoint_y | |||
float powerPoint_z | |||
float connectDistance | |||
float coverRadius | |||
} | |||
PowerConsumerComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 networkId | |||
float plugPos_x | |||
float plugPos_y | |||
float plugPos_z | |||
int64 requiredEnergy | |||
int64 servedEnergy | |||
int64 workEnergyPerTick | |||
int64 idleEnergyPerTick | |||
} | |||
PowerAccumulatorComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 networkId | |||
int64 inputEnergyPerTick | |||
int64 outputEnergyPerTick | |||
int64 curEnergy | |||
int64 maxEnergy | |||
} | |||
PowerExchangerComponent | |||
{ | |||
int32 version = 1 | |||
int32 id | |||
int32 entityId | |||
int32 networkId | |||
int16 emptyCount | |||
int16 fullCount | |||
float targetState | |||
float state | |||
int64 energyPerTick | |||
int64 curPoolEnergy | |||
int64 poolMaxEnergy | |||
int32 emptyId | |||
int32 fullId | |||
int32 belt0 (version >= 1) | |||
int32 belt1 (version >= 1) | |||
int32 belt2 (version >= 1) | |||
int32 belt3 (version >= 1) | |||
uint8 bool isOutput0 (version >= 1) | |||
uint8 bool isOutput1 (version >= 1) | |||
uint8 bool isOutput2 (version >= 1) | |||
uint8 bool isOutput3 (version >= 1) | |||
int32 outputSlot (version >= 1) | |||
int32 inputSlot (version >= 1) | |||
int32 outputRectify (version >= 1) | |||
int32 inputRectify (version >= 1) | |||
} | |||
PowerNetwork | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 numNodes | |||
int32 numConsumers | |||
int32 numGenerators | |||
int32 numAccumulators | |||
int32 numExchangers | |||
PowerNetworkStructures::Node[numNodes] | |||
int32 consumers[numConsumers] | |||
int32 generators[numGenerators] | |||
int32 accumulators[numAccumulators] | |||
int32 exchangers[numExchangers] | |||
} | |||
PowerNetworkStructures::Node | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
float x | |||
float y | |||
float z | |||
float connDistance2 | |||
float coverRadius2 | |||
int32 genId | |||
int32 accId | |||
int32 excId | |||
int32 numConnIdsForLoad | |||
int32 numLineIdsForLoad | |||
int32 numConsumers | |||
int32 connIdsForLoad[numConnIdsForLoad] | |||
int32 lineIdsForLoad[numLineIdsForLoad] | |||
int32 consumers[numConsumers] | |||
} | } | ||
FactorySystem | FactorySystem | ||
{ | { | ||
int32 version = 0 | |||
int32 minerCapacity | |||
int32 minerCursor | |||
int32 minerRecycleCursor | |||
MinerComponent minerPool[minerCursor - 1] | |||
int32 minerRecycle[minerRecycleCursor] | |||
int32 inserterCapacity | |||
int32 inserterCursor | |||
int32 inserterRecycleCursor | |||
InserterComponent inserterPool[inserterCursor - 1] | |||
int32 inserterRecycle[inserterRecycleCursor] | |||
int32 assemblerCapacity | |||
int32 assemblerCursor | |||
int32 assemblerRecycleCursor | |||
AssemblerComponent assemblerPool[assemblerCursor - 1] | |||
int32 assemblerRecycle[assemblerRecycleCursor] | |||
int32 fractionateCapacity | |||
int32 fractionateCursor | |||
int32 fractionateRecycleCursor | |||
FractionateComponent fractionatePool[fractionateCursor - 1] | |||
int32 fractionateRecycle[fractionateRecycleCursor] | |||
int32 ejectorCapacity | |||
int32 ejectorCursor | |||
int32 ejectorRecycleCursor | |||
EjectorComponent ejectorPool[ejectorCursor - 1] | |||
int32 ejectorRecycle[ejectorRecycleCursor] | |||
int32 siloCapacity | |||
int32 siloCursor | |||
int32 siloRecycleCursor | |||
SiloComponent siloPool[siloCursor - 1] | |||
int32 siloRecycle[siloRecycleCursor] | |||
int32 labCapacity | |||
int32 labCursor | |||
int32 labRecycleCursor | |||
LabComponent labPool[labCursor - 1] | |||
int32 labRecycle[labRecycleCursor] | |||
} | |||
MinerComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 pcId | |||
int32 EMinerType type (None, Water, Vein, Oil) | |||
int32 speed | |||
int32 time | |||
int32 period | |||
int32 insertTarget | |||
int32 EWorkState workstate (Idle, Running, Outputing, Lack, Full) | |||
int32 veinCount | |||
int32 veins[veinCount] | |||
int32 currentVeinIndex | |||
int32 minimumVeinAmount | |||
int32 productId | |||
int32 productCount | |||
uint32 seed | |||
} | |||
InserterComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 pcId | |||
int32 EInserterStage stage (Picking, Sending, Inserting, Returning) | |||
int32 speed | |||
int32 time | |||
int32 stt | |||
int32 delay | |||
int32 pickTarget | |||
int32 insertTarget | |||
uint8 bool careNeeds | |||
uint8 bool canStack | |||
int16 pickOffset | |||
int16 insertOffset | |||
int32 filter | |||
int32 itemId | |||
int32 stackCount | |||
int32 stackSize | |||
float pos2_x | |||
float pos2_y | |||
float pos2_z | |||
float rot2_x | |||
float rot2_y | |||
float rot2_z | |||
float rot2_w | |||
int16 t1 | |||
int16 t2 | |||
} | |||
AssemblerComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 pcId | |||
uint8 bool replicating | |||
uint8 bool outputing | |||
int32 speed | |||
int32 time | |||
int32 recipeId | |||
(recipeId > 0) { | |||
int32 ERecipeType recipeType (0:None 1:Smelt 2:Chemical 3:Refine 4:Assemble 5:Particle 6:Exchange 7:PhotonStore 8:Fractionate 15:Research) | |||
int32 timeSpend | |||
int32 numRequires | |||
int32 requires[numRequires] | |||
int32 numRequireCounts | |||
int32 requireCounts[numRequireCounts] | |||
int32 numServed | |||
int32 served[numServed] | |||
int32 numNeeds | |||
int32 needs[numNeeds] | |||
int32 numProducts | |||
int32 products[numProducts] | |||
int32 numProductCounts | |||
int32 productCounts[numProductCounts] | |||
int32 numProduced | |||
int32 produced[numProduced] | |||
} | |||
} | |||
FractionateComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 pcId | |||
int32 belt0 | |||
int32 belt1 | |||
int32 belt2 | |||
uint8 bool isOutput0 | |||
uint8 bool isOutput1 | |||
uint8 bool isOutput2 | |||
uint8 bool isWorking | |||
float produceProb | |||
int32 need | |||
int32 product | |||
int32 needCurrCount | |||
int32 productCurrCount | |||
int32 oriProductCurrCount | |||
int32 progress | |||
uint8 bool isRand | |||
uint8 bool fractionateSuccess | |||
int32 needMaxCount | |||
int32 productMaxCount | |||
int32 oriProductMaxCount | |||
uint32 seed | |||
} | |||
EjectorComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 planetId | |||
int32 pcId | |||
int32 direction | |||
int32 time | |||
uint8 bool fired | |||
int32 chargeSpend | |||
int32 coldSpend | |||
int32 bulletId | |||
int32 bulletCount | |||
int32 orbitId | |||
float pivotY | |||
float muzzleY | |||
float localPosN_x | |||
float localPosN_y | |||
float localPosN_z | |||
float localAlt | |||
float localRot_x | |||
float localRot_y | |||
float localRot_z | |||
float localRot_w | |||
float localDir_x | |||
float localDir_y | |||
float localDir_z | |||
} | |||
SiloComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 planetId | |||
int32 pcId | |||
int32 direction | |||
int32 time | |||
uint8 bool fired | |||
int32 chargeSpend | |||
int32 coldSpend | |||
int32 bulletId | |||
int32 bulletCount | |||
int32 autoIndex | |||
uint8 bool hasNode | |||
float localPos_x | |||
float localPos_y | |||
float localPos_z | |||
float localRot_x | |||
float localRot_y | |||
float localRot_z | |||
float localRot_w | |||
} | |||
LabComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
int32 pcId | |||
int32 nextLabId | |||
uint8 bool replicating | |||
uint8 bool outputing | |||
int32 time | |||
int32 hashBytes | |||
uint8 bool researchMode | |||
int32 recipeId | |||
int32 techId | |||
(not researchMode and recipeId > 0) { | |||
int32 timeSpend | |||
int32 numRequires | |||
int32 requires[numRequires] | |||
int32 numRequireCounts | |||
int32 requireCounts[numRequireCounts] | |||
int32 numServed | |||
int32 served[numServed] | |||
int32 numNeeds | |||
int32 needs[numNeeds] | |||
int32 numProducts | |||
int32 products[numProducts] | |||
int32 numProductCounts | |||
int32 productCounts[numProductCounts] | |||
int32 numProduced | |||
int32 produced[numProduced] | |||
} | |||
(researchMode) { | |||
int32 numMatrixPoints | |||
int32 matrixPoints[numMatrixPoints] | |||
int32 numMatrixServed | |||
int32 matrixServed[numMatrixServed] | |||
int32 numNeeds | |||
int32 needs[numNeeds] | |||
} | |||
} | } | ||
PlanetTransport | PlanetTransport | ||
{ | { | ||
int32 version = 0 | |||
int32 stationCursor | |||
int32 stationCapacity | |||
int32 stationRecycleCursor | |||
[stationCursor - 1] { | |||
int32 stationIndex | |||
StationComponent stationPool (stationIndex != 0) | |||
} | |||
int32 stationRecycle[stationRecycleCursor] | |||
} | |||
StationComponent | |||
{ | |||
int32 version = 2 | |||
int32 id | |||
int32 gid | |||
int32 entityId | |||
int32 planetId | |||
int32 pcId | |||
int32 gene | |||
float droneDock_x | |||
float droneDock_y | |||
float droneDock_z | |||
float shipDockPos_x | |||
float shipDockPos_y | |||
float shipDockPos_z | |||
float shipDockRot_x | |||
float shipDockRot_y | |||
float shipDockRot_z | |||
float shipDockRot_w | |||
uint8 bool isStellar | |||
int32 nameIsIncludedFlag (0 or 1) | |||
string name (nameIsIncludedFlag > 0) | |||
int64 energy | |||
int64 energyPerTick | |||
int64 energyMax | |||
int32 warperCount | |||
int32 warperMaxCount | |||
int32 idleDroneCount | |||
int32 workDroneCount | |||
int32 numWorkDrones | |||
DroneData workDroneDatas[numWorkDrones] | |||
LocalLogisticOrder workDroneOrders[numWorkDrones] | |||
int32 idleShipCount | |||
int32 workShipCount | |||
uint64 idleShipIndices | |||
uint64 workShipIndices | |||
int32: Used for allocating array sizes for workShipDatas, shipRenderers, shipUIRenderers, workShipOrders, but not uses for read in the arrays. | |||
ShipData workShipDatas[workShipCount] | |||
RemoteLogisticOrder workShipOrders[workShipCount] | |||
int32 numStorage | |||
StationStore[numStorage] | |||
(version >= 1) { | |||
int32 numSlots | |||
slots[numSlots] { | |||
int32 dir | |||
int32 beltId | |||
int32 storageIdx | |||
int32 counter | |||
} | |||
} | |||
int32 localPairProcess | |||
int32 remotePairProcess | |||
int32 nextShipIndex | |||
uint8 bool isCollector | |||
int32 numCollectionIds | |||
int32 collectionIds[numCollectionIds] | |||
int32 numCollectionPerTick | |||
float collectionPerTick[numCollectionPerTick] | |||
int32 numCurrentCollections | |||
float currentCollections[numCurrentCollections] | |||
int32 collectSpeed | |||
double tripRangeDrones (version >= 2) | |||
double tripRangeShips (version >= 2) | |||
uint8 bool includeOrbitCollector (version >= 2) | |||
double warpEnableDist (version >= 2) | |||
uint8 bool warperNecessary (version >= 2) | |||
int32 deliveryDrones (version >= 2) | |||
int32 deliveryShips (version >= 2) | |||
} | |||
DroneData | |||
{ | |||
int32 version = 0 | |||
float begin_x | |||
float begin_y | |||
float begin_z | |||
float end_x | |||
float end_y | |||
float end_z | |||
int32 endId | |||
float direction | |||
float maxt | |||
float t | |||
int32 itemId | |||
int32 itemCount | |||
int32 gene | |||
} | |||
LocalLogisticOrder | |||
{ | |||
int32 version = 0 | |||
int32 otherStationId | |||
int32 thisIndex | |||
int32 otherIndex | |||
int32 itemId | |||
int32 thisOrdered | |||
int32 otherOrdered | |||
} | |||
ShipData | |||
{ | |||
int32 version = 0 | |||
int32 stage | |||
int32 planetA | |||
int32 planetB | |||
double uPos_x | |||
double uPos_y | |||
double uPos_z | |||
float uVel_x | |||
float uVel_y | |||
float uVel_z | |||
float uSpeed | |||
float warpState | |||
float uRot_x | |||
float uRot_y | |||
float uRot_z | |||
float uRot_w | |||
float uAngularVel_x | |||
float uAngularVel_y | |||
float uAngularVel_z | |||
float uAngularSpeed | |||
double pPosTemp_x | |||
double pPosTemp_y | |||
double pPosTemp_z | |||
float pRotTemp_x | |||
float pRotTemp_y | |||
float pRotTemp_z | |||
float pRotTemp_w | |||
int32 otherGId | |||
int32 direction | |||
float t | |||
int32 itemId | |||
int32 itemCount | |||
int32 gene | |||
int32 shipIndex | |||
int32 warperCnt | |||
} | |||
RemoteLogisticOrder | |||
{ | |||
int32 version = 0 | |||
int32 otherStationGId | |||
int32 thisIndex | |||
int32 otherIndex | |||
int32 itemId | |||
int32 thisOrdered | |||
int32 otherOrdered | |||
} | |||
StationStore | |||
{ | |||
int32 version = 0 | |||
int32 itemId | |||
int32 count | |||
int32 localOrder | |||
int32 remoteOrder | |||
int32 max | |||
int32 ELogisticStorage localLogic (None, Supply, Demand) | |||
int32 ELogisticStorage remoteLogic | |||
} | } | ||
MonsterSystem | MonsterSystem | ||
{ | { | ||
int32 version = 0 | |||
int32 monsterCapacity | |||
int32 monsterCursor | |||
int32 monsterRecycleCursor | |||
MonsterComponent monsterPool[monsterCursor] | |||
} | |||
MonsterComponent | |||
{ | |||
int32 version = 0 | |||
int32 id | |||
int32 entityId | |||
float walkSpeed | |||
float point0_x | |||
float point0_y | |||
float point0_z | |||
float point1_x | |||
float point1_y | |||
float point1_z | |||
float point2_x | |||
float point2_y | |||
float point2_z | |||
int32 direction | |||
float stopTime | |||
float t | |||
float stopCurrentTime | |||
int32 EMonsterState monsterState (Null, Stopped, Wandering) | |||
float stepDistance | |||
} | } | ||
PlatformSystem | PlatformSystem | ||
{ | { | ||
int32 version = 0 | |||
int32 reformDataByteCount | |||
uint8 reformData[reformDataByteCount]: If count exceeds a limit, count is read, but only the limit is used. | |||
int32 reformOffsetsByteCount | |||
uint32 reformOffsets[reformOffsetsByteCount]: If count exceeds a limit, count is read, but only the limit is used. | |||
} | } | ||
DysonSphere | DysonSphere | ||
{ | |||
int32 version = 2 | |||
(version >= 1) { | |||
int32 randSeed | |||
DysonSwarm | |||
int32 = 1212: File will be rejected if the value is not 1212 | |||
int32 layerCount | |||
} | |||
} | |||
DysonSwarm | |||
{ | { | ||
Revision as of 01:36, 11 February 2021
This article is a work in progress.
This article is in the process of an expansion or major restructuring.! You are welcome to assist in its construction by editing it as well. See Category:Work in progress for other pages that needs expansion.
This page defines the Dyson Sphere Program save file format .dsv. On Windows by default save files are stored in %USERPROFILE%\Documents\Dyson Sphere Program\Save\.
GameSave
{
"VFSAVE"
int64 fileStreamLength
int32 saveFileFormatNumber = 4
int32 majorGameVersion
int32 minorGameVersion
int32 releaseGameVersion
int64 gameTick
int64 nowTicks
int32 sizeOfPngFile
uint8 screenShotPngFile[sizeOfPngFile]
GameData
}
GameData
{
int32 version = 2
string gameName
GameDesc gameDesc
int64 gameTick
GamePrefsData preferences (version >= 1)
GameHistoryData
uint8 bool hidePlayerModel (version >= 2)
uint8 bool disableController (version >= 2)
GameStatData statistics
int32 planetId
Player mainPlayer
int32 factoryCount
GalacticTransport
PlanetFactory[factoryCount]
int32 galaxyStarCount: Must equal GameDesc::starCount or the game will crash.
int32 numDysonSpheres
[numDysonSpheres] {
int32 dysonSphereDataIsAvailableFlag: Must be 0 or 1 or the game will crash.
DysonSphere (dysonSphereDataIsAvailableFlag == 1)
}
}
GameDesc
{
int32 version = 2
int32 galaxyAlgo
int32 galaxySeed
int32 starCount
int32 playerProto
float resourceMultiplier (version >= 2)
int32 numThemeIds (version >= 1)
int32 themeIds[numThemeIds] (version >= 1)
}
GamePrefsData
{
int32 version = 2
double cameraUPosX
double cameraUPosY
double cameraUPosZ
float cameraURotX
float cameraURotY
float cameraURotZ
float cameraURotW
int32 reformCursorSize (version >= 1)
int32 numReplicatorMultipliers (version >= 1)
replicatorMultipliers[numReplicatorMultipliers] (version >= 1) {
int32 key
int32 value
}
float bool detailPower
float bool detailVein
float bool detailSpaceGuide
float bool detailSign
float bool detailIcon
int32 numTutorialShowing (version >= 2)
int32 tutorialShowing[numTutorialShowing] (version >= 2)
}
GameHistoryData
{
int32 version = 2
int32 numRecipeUnlocked
int32 recipeUnlocked[numRecipeUnlocked]
int32 numTutorialUnlocked (version >= 2)
int32 tutorialUnlocked[numTutorialUnlocked] (version >= 2)
int32 numFeatureKeys
int32 featureKeys[numFeatureKeys]
int32 numTechState
[numTechState] {
int32 techProtoIndex
uint8 bool TechState_unlocked
int32 TechState_curLevel
int32 TechState_maxLevel
int64 TechState_hashUploaded
int64 TechState_hashNeeded
}
uint8 bool autoManageLabItems
int32 currentTech
int32 numTechQueue (version >= 1)
int32 techQueueechStateKey[numTechQueue]
int32 universeObserveLevel
float solarSailLife
float solarEnergyLossRate
uint8 bool useIonLayer
int32 inserterStackCount
float logisticDroneSpeed
float logisticDroneSpeedScale
int32 logisticDroneCarries
float logisticShipSailSpeed
float logisticShipWarpSpeed
float logisticShipSpeedScale
float bool logisticShipWarpDrive
int32 logisticShipCarries
float miningCostRate
float miningSpeedScale
int32 storageLevel
int32 labLevel
int32 techSpeed
float dysonNodeLatitude
int64 universeMatrixPointUploaded
float bool missionAccomplished
}
GameStatData
{
int32 version = 0
int32 numTechHashedHistory
int32 techHashedHistory[numTechHashedHistory]
ProductionStatistics
}
ProductionStatistics
{
int32 version = 0
int32 numFactoryStatPool
FactoryProductionStat factoryStatPool[numFactoryStatPool]
int32 numFirstCreateIds
int32 firstCreateIds[numFirstCreateIds]
int32 numFavoriteIds
int32 favoriteIds[numFavoriteIds]
}
FactoryProductionStat
{
int32 version = 1
int32 productCapacity
int32 productCursor
ProductStat productPool[productCursor]
int32 numPowerPool, max 5
PowerStat powerPool[numPowerPool]
int32 numProductIndices
int32 productIndices[numProductIndices]
int64 energyConsumption (version >= 1)
}
ProductStat
{
int32 version = 0
int32 numCount: Saved as 7200. Reads more or less, but only stores up to 7200, and enforces abs.
int32 count[numCount]
int32 numCursor: Saved as 12. Reads more or less, but only stores up to 12.
int32 cursor[numCount]
int32 numTotal: Saved as 14. Reads more or less, but only stores up to 14, and enforces abs.
int32 total[numCount]
int32 itemId
}
PowerStat
{
int32 version = 0
int32 numEnergy: Saved as 3600. Reads more or less, but only stores up to 3600, and enforces abs.
int64 energy[numCount]
int32 numCursor: Saved as 6. Reads more or less, but only stores up to 6.
int32 cursor[numCount]
int32 numTotal: Saved as 7. Reads more or less, but only stores up to 7, and enforces abs.
int64 total[numCount]
int32 itemId
}
Player
{
int32 version = 1
int32 planetId: Ignored on read
float position_x
float position_y
float position_z
float uPosition_x
float uPosition_y
float uPosition_z
float uRotation_x
float uRotation_y
float uRotation_z
float uRotation_w
int32 EMovementState movementState (Walk, Drift, Fly, Sail)
float warpState
uint8 bool warpCommand
double uVelocity_x
double uVelocity_y
double uVelocity_z
int32 inhandItemId
int32 inhandItemCount
Mecha
StorageComponent package[10]
PlayerNavigation
int32 sandCount
}
Mecha
{
int32 version = 0
double coreEnergyCap
double coreEnergy
double corePowerGen
double reactorPowerGen
double reactorEnergy
int32 reactorItemId
StorageComponent reactorStorage[4]
StorageComponent warpStorage
double walkPower
double jumpEnergy
double thrustPowerPerAcc
double warpKeepingPowerPerSpeed
double warpStartPowerPerSpeed
double miningPower
double replicatePower
double researchPower
double droneEjectEnergy
double droneEnergyPerMeter
int32 coreLevel
int32 thrusterLevel
float miningSpeed
float replicateSpeed
float walkSpeed
float jumpSpeed
float maxSailSpeed
float maxWarpSpeed
float buildArea
MechaForge
MechaLab
int32 droneCount
float droneSpeed
int32 droneMovement
MechaDrone[droneCount]
}
StorageComponent
{
int32 version = 1
int32 id
int32 entityId
int32 previous (version >= 1)
int32 next (version >= 1)
int32 bottom (version >= 1)
int32 top (version >= 1)
int32 EStorageType type (0:Default 1:Fuel 9:Filtered)
int32 gridSize
int32 bans (version >= 1)
grids[gridSize] {
int32 itemId
int32 filter
int32 count
int32 stackSize
}
}
PlayerNavigation
{
int32 version = 0
uint8 bool navigating
int32 naviAstroId
double naviTarget_x
double naviTarget_y
double naviTarget_z
uint8 bool useFly
uint8 bool useSail
uint8 bool useWarp
int32 ENaviStage stage (None, Departure, OriginOrbit, AccOrbit, Space, DestOrbit, Approaching)
double flyThreshold
double sailThreshold
double warpThreshold
double maxSailSpeed
}
GalacticTransport
{
int32 version = 0
}
PlanetFactory
{
int32 version = 1
int32 planetId
PlanetData
int32 entityCapacity
int32 entityCursor
int32 entityRecycleCursor
EntityData entityPool[entityCursor - 1]
entityAnimPool[entityCursor - 1] {
float time
float prepare_length
float working_length
uint32 state
float power
}
entitySignPool[entityCursor - 1] {
uint32 signType
uint32 iconType
uint32 iconId0
uint32 iconId1
uint32 iconId2
uint32 iconId3
float count0
float count1
float count2
float count3
float x
float y
float z
float w
}
int32 entityConnPool[entityCursor * 16 - 16]
int32 entityRecycle[entityRecycleCursor]
int32 prebuildCapacity
int32 prebuildCursor
int32 prebuildRecycleCursor
PrebuildData prebuildPool[prebuildCursor - ]
int32 prebuildConnPool[prebuildCursor * 16 - 16]
int32 prebuildRecycle[prebuildRecycleCursor]
int32 vegeCapacity
int32 vegeCursor
int32 vegeRecycleCursor
VegeData vegePool[vegeCursor - 1]
int32 vegeRecycle[vegeRecycleCursor]
int32 veinCapacity
int32 veinCursor
int32 veinRecycleCursor
VeinData veinPool[veinCursor - 1]
int32 veinRecycle[veinRecycleCursor]
veinAnimPool[veinCursor] {
float time
float prepare_length
float working_length
uint32 state
float power
}
CargoContainer
CargoTraffic
FactoryStorage
PowerSystem
FactorySystem
PlanetTransport
MonsterSystem
PlatformSystem (version >= 1)
}
PlanetData
{
int32 modDataByteCount
uint8 modData[modDataByteCount]
int32 numVeinAmounts
int64 veinAmounts[numVeinAmounts]
int32 numVeinGroups
veinGroups[numVeinGroups] {
int32 EVeinType type ()
float pos_x
float pos_y
float pos_z
int32 count: Read, but then set to zero
int64 amount: Read, but then set to zero
}
}
EntityData
{
uint8 version = 0
int32 id
int16 protoId
int16 modelIndex
float pos_x
float pos_y
float pos_z
float rot_x
float rot_y
float rot_z
float rot_w
int32 beltId
int32 splitterId
int32 storageId
int32 tankId
int32 minerId
int32 inserterId
int32 assemblerId
int32 fractionateId
int32 ejectorId
int32 siloId
int32 labId
int32 stationId
int32 powerNodeId
int32 powerGenId
int32 powerConId
int32 powerAccId
int32 powerExcId
int32 monsterId
}
PrebuildData
{
uint8 version = 0
int32 id
int16 protoId
int16 modelIndex
float pos_x
float pos_y
float pos_z
float rot_x
float rot_y
float rot_z
float rot_w
float pos2_x
float pos2_y
float pos2_z
float rot2_x
float rot2_y
float rot2_z
float rot2_w
int32 upEntity
int16 pickOffset
int16 insertOffset
int32 recipeId
int32 filterId
int32 refCount
int32 refArr[refCount]
}
VegeData
{
uint8 version = 0
int32 id
int16 protoId
int16 modelIndex
int16 hp
float pos_x
float pos_y
float pos_z
float rot_x
float rot_y
float rot_z
float rot_w
float scl_y
float scl_z
float scl_w
}
VeinData
{
uint8 version = 0
int32 id
int16 EVeinType (None, Iron, Copper, Silicium, Titanium, Stone, Coal, Oil, Fireice, Diamond, Fractal, Crysrub, Grat, Bamboo, Mag)
int16 modelIndex
int16 groupIndex
int32 amount
int32 productId
float pos_x
float pos_y
float pos_z
int32 minerCount
int32 minerId0
int32 minerId1
int32 minerId2
int32 minerId3
}
CargoContainer
{
int32 version = 0
int32 poolCapacity
int32 cursor
int32 recycleBegin
int32 recycleEnd
cargoPool[cursor] {
int32 item
float position_x
float position_y
float position_z
float rotation_x
float rotation_y
float rotation_z
float rotation_w
}
int32 recycleIds[poolCapacity]
}
CargoTraffic
{
int32 version = 0
int32 beltCursor
int32 beltCapacity
int32 beltRecycleCursor
int32 splitterCursor
int32 splitterCapacity
int32 splitterRecycleCursor
int32 pathCursor
int32 pathCapacity
int32 pathRecycleCursor
BeltComponent beltPool[beltCursor - 1]
int32 beltRecycle[beltRecycleCursor]
SplitterComponent splitterPool[splitterCursor - 1]
int32 splitterRecycle[splitterRecycleCursor]
[pathCursor - 1] {
int32 cargoPathIndex
CargoPath (cargoPathIndex != 0)
}
int32 pathRecycle[pathRecycleCursor]
}
BeltComponent
{
int32 version = 0
int32 id
int32 entityId
int32 speed
int32 segPathId
int32 segIndex
int32 segPivotOffset
int32 segLength
int32 outputId
int32 backInputId
int32 leftInputId
int32 rightInputId
}
SplitterComponent
{
int32 version = 0
int32 id
int32 entityId
int32 beltA
int32 beltB
int32 beltC
int32 beltD
int32 input0
int32 input1
int32 input2
int32 input3
int32 output0
int32 output1
int32 output2
int32 output3
uint8 bool inPriority
uint8 bool outPriority
int32 outFilter
}
CargoPath
{
int32 version = 0
int32 id
int32 capacity
int32 bufferLength
int32 chunkCapacity
int32 chunkCount
int32 updateLen
uint8 bool closed
int32 outputPathIdForImport
int32 outputIndex
int32 numBelts
int32 numInputPaths
chunks[chunkCount] {
int32
int32
int32
}
[bufferLength] {
float pointPos_x
float pointPos_y
float pointPos_z
float pointRot_x
float pointRot_y
float pointRot_z
float pointRot_w
}
int32 belts[numBelts]
int32 inputPaths[numInputPaths]
}
FactoryStorage
{
int32 version = 0
int32 storageCursor
int32 storageCapacity
int32 storageRecycleCursor
[storageCursor - 1] {
int32 storagePoolIndex
int32 size (storagePoolIndex != 0)
StorageComponent storagePool (storagePoolIndex != 0)
}
int32 storageRecycle[storageRecycleCursor]
int32 tankCapacity
int32 tankCursor
int32 tankRecycleCursor
TankComponent tankPool[tankCursor]
int32 tankRecycle[tankRecycleCursor]
}
TankComponent
{
int32 version = 0
int32 id
int32 entityId
int32 lastTankId
int32 nextTankId
int32 belt0
int32 belt1
int32 belt2
int32 belt3
uint8 bool isOutput0
uint8 bool isOutput1
uint8 bool isOutput2
uint8 bool isOutput3
int32 fluidStorageCount
int32 currentCount
int32 fluidId
uint8 bool outputSwitch
uint8 bool inputSwitch
uint8 bool isBottom
}
PowerSystem
{
int32 version = 0
int32 generatorCapacity
int32 genCursor
int32 genRecycleCursor
PowerGeneratorComponent genPool[genCursor - 1]
int32 genRecycle[genRecycleCursor]
int32 nodeCapacity
int32 nodeCursor
int32 nodeRecycleCursor
PowerNodeComponent nodePool[nodeCursor - 1]
int32 nodeRecycle[nodeRecycleCursor]
int32 consumerCapacity
int32 consumerCursor
int32 consumerRecycleCursor
PowerConsumerComponent consumerPool[consumerCursor - 1]
int32 consumerRecycle[consumerRecycleCursor]
int32 accumulatorCapacity
int32 accCursor
int32 accRecycleCursor
PowerAccumulatorComponent accPool[accCursor - 1]
int32 accRecycle
int32 exchangerCapacity
int32 excCursor
int32 excRecycleCursor
PowerExchangerComponent excPool[excCursor - 1]
int32 excRecycle[excRecycleCursor]
int32 networkCapacity
int32 netCursor
int32 netRecycleCursor
[netCursor] {
int32 powerNetworkIncludedFlag
PowerNetwork netPool (powerNetworkIncludedFlag == 1)
}
int32 netRecycle[netRecycleCursor]
}
PowerGeneratorComponent
{
int32 version = 0
int32 id
int32 entityId
int32 networkId
uint8 bool photovoltaic
uint8 bool wind
uint8 bool gamma
int64 genEnergyPerTick
int64 useFuelPerTick
int16 fuelMask
int64 fuelEnergy
int16 curFuelId
int16 fuelId
int16 fuelCount
int64 fuelHeat
int32 catalystId
int32 catalystPoint
int32 productId
float productCount
int64 productHeat
float warmup
float ionEnhance
float x
float y
float z
}
PowerNodeComponent
{
int32 version = 0
int32 id
int32 entityId
int32 networkId
uint8 bool isCharger
int32 workEnergyPerTick
int32 idleEnergyPerTick
int32 requiredEnergy
float powerPoint_x
float powerPoint_y
float powerPoint_z
float connectDistance
float coverRadius
}
PowerConsumerComponent
{
int32 version = 0
int32 id
int32 entityId
int32 networkId
float plugPos_x
float plugPos_y
float plugPos_z
int64 requiredEnergy
int64 servedEnergy
int64 workEnergyPerTick
int64 idleEnergyPerTick
}
PowerAccumulatorComponent
{
int32 version = 0
int32 id
int32 entityId
int32 networkId
int64 inputEnergyPerTick
int64 outputEnergyPerTick
int64 curEnergy
int64 maxEnergy
}
PowerExchangerComponent
{
int32 version = 1
int32 id
int32 entityId
int32 networkId
int16 emptyCount
int16 fullCount
float targetState
float state
int64 energyPerTick
int64 curPoolEnergy
int64 poolMaxEnergy
int32 emptyId
int32 fullId
int32 belt0 (version >= 1)
int32 belt1 (version >= 1)
int32 belt2 (version >= 1)
int32 belt3 (version >= 1)
uint8 bool isOutput0 (version >= 1)
uint8 bool isOutput1 (version >= 1)
uint8 bool isOutput2 (version >= 1)
uint8 bool isOutput3 (version >= 1)
int32 outputSlot (version >= 1)
int32 inputSlot (version >= 1)
int32 outputRectify (version >= 1)
int32 inputRectify (version >= 1)
}
PowerNetwork
{
int32 version = 0
int32 id
int32 numNodes
int32 numConsumers
int32 numGenerators
int32 numAccumulators
int32 numExchangers
PowerNetworkStructures::Node[numNodes]
int32 consumers[numConsumers]
int32 generators[numGenerators]
int32 accumulators[numAccumulators]
int32 exchangers[numExchangers]
}
PowerNetworkStructures::Node
{
int32 version = 0
int32 id
float x
float y
float z
float connDistance2
float coverRadius2
int32 genId
int32 accId
int32 excId
int32 numConnIdsForLoad
int32 numLineIdsForLoad
int32 numConsumers
int32 connIdsForLoad[numConnIdsForLoad]
int32 lineIdsForLoad[numLineIdsForLoad]
int32 consumers[numConsumers]
}
FactorySystem
{
int32 version = 0
int32 minerCapacity
int32 minerCursor
int32 minerRecycleCursor
MinerComponent minerPool[minerCursor - 1]
int32 minerRecycle[minerRecycleCursor]
int32 inserterCapacity
int32 inserterCursor
int32 inserterRecycleCursor
InserterComponent inserterPool[inserterCursor - 1]
int32 inserterRecycle[inserterRecycleCursor]
int32 assemblerCapacity
int32 assemblerCursor
int32 assemblerRecycleCursor
AssemblerComponent assemblerPool[assemblerCursor - 1]
int32 assemblerRecycle[assemblerRecycleCursor]
int32 fractionateCapacity
int32 fractionateCursor
int32 fractionateRecycleCursor
FractionateComponent fractionatePool[fractionateCursor - 1]
int32 fractionateRecycle[fractionateRecycleCursor]
int32 ejectorCapacity
int32 ejectorCursor
int32 ejectorRecycleCursor
EjectorComponent ejectorPool[ejectorCursor - 1]
int32 ejectorRecycle[ejectorRecycleCursor]
int32 siloCapacity
int32 siloCursor
int32 siloRecycleCursor
SiloComponent siloPool[siloCursor - 1]
int32 siloRecycle[siloRecycleCursor]
int32 labCapacity
int32 labCursor
int32 labRecycleCursor
LabComponent labPool[labCursor - 1]
int32 labRecycle[labRecycleCursor]
}
MinerComponent
{
int32 version = 0
int32 id
int32 entityId
int32 pcId
int32 EMinerType type (None, Water, Vein, Oil)
int32 speed
int32 time
int32 period
int32 insertTarget
int32 EWorkState workstate (Idle, Running, Outputing, Lack, Full)
int32 veinCount
int32 veins[veinCount]
int32 currentVeinIndex
int32 minimumVeinAmount
int32 productId
int32 productCount
uint32 seed
}
InserterComponent
{
int32 version = 0
int32 id
int32 entityId
int32 pcId
int32 EInserterStage stage (Picking, Sending, Inserting, Returning)
int32 speed
int32 time
int32 stt
int32 delay
int32 pickTarget
int32 insertTarget
uint8 bool careNeeds
uint8 bool canStack
int16 pickOffset
int16 insertOffset
int32 filter
int32 itemId
int32 stackCount
int32 stackSize
float pos2_x
float pos2_y
float pos2_z
float rot2_x
float rot2_y
float rot2_z
float rot2_w
int16 t1
int16 t2
}
AssemblerComponent
{
int32 version = 0
int32 id
int32 entityId
int32 pcId
uint8 bool replicating
uint8 bool outputing
int32 speed
int32 time
int32 recipeId
(recipeId > 0) {
int32 ERecipeType recipeType (0:None 1:Smelt 2:Chemical 3:Refine 4:Assemble 5:Particle 6:Exchange 7:PhotonStore 8:Fractionate 15:Research)
int32 timeSpend
int32 numRequires
int32 requires[numRequires]
int32 numRequireCounts
int32 requireCounts[numRequireCounts]
int32 numServed
int32 served[numServed]
int32 numNeeds
int32 needs[numNeeds]
int32 numProducts
int32 products[numProducts]
int32 numProductCounts
int32 productCounts[numProductCounts]
int32 numProduced
int32 produced[numProduced]
}
}
FractionateComponent
{
int32 version = 0
int32 id
int32 entityId
int32 pcId
int32 belt0
int32 belt1
int32 belt2
uint8 bool isOutput0
uint8 bool isOutput1
uint8 bool isOutput2
uint8 bool isWorking
float produceProb
int32 need
int32 product
int32 needCurrCount
int32 productCurrCount
int32 oriProductCurrCount
int32 progress
uint8 bool isRand
uint8 bool fractionateSuccess
int32 needMaxCount
int32 productMaxCount
int32 oriProductMaxCount
uint32 seed
}
EjectorComponent
{
int32 version = 0
int32 id
int32 entityId
int32 planetId
int32 pcId
int32 direction
int32 time
uint8 bool fired
int32 chargeSpend
int32 coldSpend
int32 bulletId
int32 bulletCount
int32 orbitId
float pivotY
float muzzleY
float localPosN_x
float localPosN_y
float localPosN_z
float localAlt
float localRot_x
float localRot_y
float localRot_z
float localRot_w
float localDir_x
float localDir_y
float localDir_z
}
SiloComponent
{
int32 version = 0
int32 id
int32 entityId
int32 planetId
int32 pcId
int32 direction
int32 time
uint8 bool fired
int32 chargeSpend
int32 coldSpend
int32 bulletId
int32 bulletCount
int32 autoIndex
uint8 bool hasNode
float localPos_x
float localPos_y
float localPos_z
float localRot_x
float localRot_y
float localRot_z
float localRot_w
}
LabComponent
{
int32 version = 0
int32 id
int32 entityId
int32 pcId
int32 nextLabId
uint8 bool replicating
uint8 bool outputing
int32 time
int32 hashBytes
uint8 bool researchMode
int32 recipeId
int32 techId
(not researchMode and recipeId > 0) {
int32 timeSpend
int32 numRequires
int32 requires[numRequires]
int32 numRequireCounts
int32 requireCounts[numRequireCounts]
int32 numServed
int32 served[numServed]
int32 numNeeds
int32 needs[numNeeds]
int32 numProducts
int32 products[numProducts]
int32 numProductCounts
int32 productCounts[numProductCounts]
int32 numProduced
int32 produced[numProduced]
}
(researchMode) {
int32 numMatrixPoints
int32 matrixPoints[numMatrixPoints]
int32 numMatrixServed
int32 matrixServed[numMatrixServed]
int32 numNeeds
int32 needs[numNeeds]
}
}
PlanetTransport
{
int32 version = 0
int32 stationCursor
int32 stationCapacity
int32 stationRecycleCursor
[stationCursor - 1] {
int32 stationIndex
StationComponent stationPool (stationIndex != 0)
}
int32 stationRecycle[stationRecycleCursor]
}
StationComponent
{
int32 version = 2
int32 id
int32 gid
int32 entityId
int32 planetId
int32 pcId
int32 gene
float droneDock_x
float droneDock_y
float droneDock_z
float shipDockPos_x
float shipDockPos_y
float shipDockPos_z
float shipDockRot_x
float shipDockRot_y
float shipDockRot_z
float shipDockRot_w
uint8 bool isStellar
int32 nameIsIncludedFlag (0 or 1)
string name (nameIsIncludedFlag > 0)
int64 energy
int64 energyPerTick
int64 energyMax
int32 warperCount
int32 warperMaxCount
int32 idleDroneCount
int32 workDroneCount
int32 numWorkDrones
DroneData workDroneDatas[numWorkDrones]
LocalLogisticOrder workDroneOrders[numWorkDrones]
int32 idleShipCount
int32 workShipCount
uint64 idleShipIndices
uint64 workShipIndices
int32: Used for allocating array sizes for workShipDatas, shipRenderers, shipUIRenderers, workShipOrders, but not uses for read in the arrays.
ShipData workShipDatas[workShipCount]
RemoteLogisticOrder workShipOrders[workShipCount]
int32 numStorage
StationStore[numStorage]
(version >= 1) {
int32 numSlots
slots[numSlots] {
int32 dir
int32 beltId
int32 storageIdx
int32 counter
}
}
int32 localPairProcess
int32 remotePairProcess
int32 nextShipIndex
uint8 bool isCollector
int32 numCollectionIds
int32 collectionIds[numCollectionIds]
int32 numCollectionPerTick
float collectionPerTick[numCollectionPerTick]
int32 numCurrentCollections
float currentCollections[numCurrentCollections]
int32 collectSpeed
double tripRangeDrones (version >= 2)
double tripRangeShips (version >= 2)
uint8 bool includeOrbitCollector (version >= 2)
double warpEnableDist (version >= 2)
uint8 bool warperNecessary (version >= 2)
int32 deliveryDrones (version >= 2)
int32 deliveryShips (version >= 2)
}
DroneData
{
int32 version = 0
float begin_x
float begin_y
float begin_z
float end_x
float end_y
float end_z
int32 endId
float direction
float maxt
float t
int32 itemId
int32 itemCount
int32 gene
}
LocalLogisticOrder
{
int32 version = 0
int32 otherStationId
int32 thisIndex
int32 otherIndex
int32 itemId
int32 thisOrdered
int32 otherOrdered
}
ShipData
{
int32 version = 0
int32 stage
int32 planetA
int32 planetB
double uPos_x
double uPos_y
double uPos_z
float uVel_x
float uVel_y
float uVel_z
float uSpeed
float warpState
float uRot_x
float uRot_y
float uRot_z
float uRot_w
float uAngularVel_x
float uAngularVel_y
float uAngularVel_z
float uAngularSpeed
double pPosTemp_x
double pPosTemp_y
double pPosTemp_z
float pRotTemp_x
float pRotTemp_y
float pRotTemp_z
float pRotTemp_w
int32 otherGId
int32 direction
float t
int32 itemId
int32 itemCount
int32 gene
int32 shipIndex
int32 warperCnt
}
RemoteLogisticOrder
{
int32 version = 0
int32 otherStationGId
int32 thisIndex
int32 otherIndex
int32 itemId
int32 thisOrdered
int32 otherOrdered
}
StationStore
{
int32 version = 0
int32 itemId
int32 count
int32 localOrder
int32 remoteOrder
int32 max
int32 ELogisticStorage localLogic (None, Supply, Demand)
int32 ELogisticStorage remoteLogic
}
MonsterSystem
{
int32 version = 0
int32 monsterCapacity
int32 monsterCursor
int32 monsterRecycleCursor
MonsterComponent monsterPool[monsterCursor]
}
MonsterComponent
{
int32 version = 0
int32 id
int32 entityId
float walkSpeed
float point0_x
float point0_y
float point0_z
float point1_x
float point1_y
float point1_z
float point2_x
float point2_y
float point2_z
int32 direction
float stopTime
float t
float stopCurrentTime
int32 EMonsterState monsterState (Null, Stopped, Wandering)
float stepDistance
}
PlatformSystem
{
int32 version = 0
int32 reformDataByteCount
uint8 reformData[reformDataByteCount]: If count exceeds a limit, count is read, but only the limit is used.
int32 reformOffsetsByteCount
uint32 reformOffsets[reformOffsetsByteCount]: If count exceeds a limit, count is read, but only the limit is used.
}
DysonSphere
{
int32 version = 2
(version >= 1) {
int32 randSeed
DysonSwarm
int32 = 1212: File will be rejected if the value is not 1212
int32 layerCount
}
}
DysonSwarm
{
}