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_t fileStreamLength
int32_t saveFileFormatNumber = 4
int32_t majorGameVersion
int32_t minorGameVersion
int32_t releaseGameVersion
int64_t gameTick
int64_t nowTicks
int32_t sizeOfPngFile
uint8_t screenShotPngFile[sizeOfPngFile]
GameData
}
GameData
{
int32_t version = 2
string gameName
GameDesc gameDesc
int64_t gameTick
GamePrefsData preferences (version >= 1)
GameHistoryData
uint8_t bool hidePlayerModel (version >= 2)
uint8_t bool disableController (version >= 2)
GameStatData statistics
int32_t planetId
Player mainPlayer
int32_t factoryCount
GalacticTransport
PlanetFactory[factoryCount]
int32_t galaxyStarCount: Must equal GameDesc::starCount or the game will crash.
int32_t numDysonSpheres
[numDysonSpheres] {
int32_t dysonSphereDataIsAvailableFlag: Must be 0 or 1 or the game will crash.
DysonSphere (dysonSphereDataIsAvailableFlag == 1)
}
}
GameDesc
{
int32_t version = 2
int32_t galaxyAlgo
int32_t galaxySeed
int32_t starCount
int32_t playerProto
float resourceMultiplier (version >= 2)
int32_t numThemeIds (version >= 1)
int32_t themeIds[numThemeIds] (version >= 1)
}
GamePrefsData
{
int32_t version = 2
double cameraUPosX
double cameraUPosY
double cameraUPosZ
float cameraURotX
float cameraURotY
float cameraURotZ
float cameraURotW
int32_t reformCursorSize (version >= 1)
int32_t numReplicatorMultipliers (version >= 1)
replicatorMultipliers[numReplicatorMultipliers] (version >= 1) {
int32_t key
int32_t value
}
float bool detailPower
float bool detailVein
float bool detailSpaceGuide
float bool detailSign
float bool detailIcon
int32_t numTutorialShowing (version >= 2)
int32_t tutorialShowing[numTutorialShowing] (version >= 2)
}
GameHistoryData
{
int32_t version = 2
int32_t numRecipeUnlocked
int32_t recipeUnlocked[numRecipeUnlocked]
int32_t numTutorialUnlocked (version >= 2)
int32_t tutorialUnlocked[numTutorialUnlocked] (version >= 2)
int32_t numFeatureKeys
int32_t featureKeys[numFeatureKeys]
int32_t numTechState
[numTechState] {
int32_t techProtoIndex
uint8_t bool TechState_unlocked
int32_t TechState_curLevel
int32_t TechState_maxLevel
int64_t TechState_hashUploaded
int64_t TechState_hashNeeded
}
uint8_t bool autoManageLabItems
int32_t currentTech
int32_t numTechQueue (version >= 1)
int32_t techQueue_TechStateKey[numTechQueue]
int32_t universeObserveLevel
float solarSailLife
float solarEnergyLossRate
uint8_t bool useIonLayer
int32_t inserterStackCount
float logisticDroneSpeed
float logisticDroneSpeedScale
int32_t logisticDroneCarries
float logisticShipSailSpeed
float logisticShipWarpSpeed
float logisticShipSpeedScale
float bool logisticShipWarpDrive
int32_t logisticShipCarries
float miningCostRate
float miningSpeedScale
int32_t storageLevel
int32_t labLevel
int32_t techSpeed
float dysonNodeLatitude
int64_t universeMatrixPointUploaded
float bool missionAccomplished
}
GameStatData
{
int32_t version = 0
int32_t numTechHashedHistory
int32_t techHashedHistory[numTechHashedHistory]
ProductionStatistics
}
ProductionStatistics
{
int32_t version = 0
int32_t numFactoryStatPool
FactoryProductionStat factoryStatPool[numFactoryStatPool]
int32_t numFirstCreateIds
int32_t firstCreateIds[numFirstCreateIds]
int32_t numFavoriteIds
int32_t favoriteIds[numFavoriteIds]
}
FactoryProductionStat
{
int32_t version = 1
int32_t productCapacity
int32_t productCursor
ProductStat productPool[productCursor]
int32_t numPowerPool, max 5
PowerStat powerPool[numPowerPool]
int32_t numProductIndices
int32_t productIndices[numProductIndices]
int64_t energyConsumption (version >= 1)
}
ProductStat
{
int32_t version = 0
int32_t numCount: Saved as 7200. Reads more or less, but only stores up to 7200, and enforces abs.
int32_t count[numCount]
int32_t numCursor: Saved as 12. Reads more or less, but only stores up to 12.
int32_t cursor[numCount]
int32_t numTotal: Saved as 14. Reads more or less, but only stores up to 14, and enforces abs.
int32_t total[numCount]
int32_t itemId
}
PowerStat
{
int32_t version = 0
int32_t numEnergy: Saved as 3600. Reads more or less, but only stores up to 3600, and enforces abs.
int64_t energy[numCount]
int32_t numCursor: Saved as 6. Reads more or less, but only stores up to 6.
int32_t cursor[numCount]
int32_t numTotal: Saved as 7. Reads more or less, but only stores up to 7, and enforces abs.
int64_t total[numCount]
int32_t itemId
}
Player
{
int32_t version = 1
int32_t 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_t EMovementState movementState (Walk, Drift, Fly, Sail)
float warpState
uint8_t bool warpCommand
double uVelocity_x
double uVelocity_y
double uVelocity_z
int32_t inhandItemId
int32_t inhandItemCount
Mecha
StorageComponent package[10]
PlayerNavigation
int32_t sandCount
}
Mecha
{
int32_t version = 0
double coreEnergyCap
double coreEnergy
double corePowerGen
double reactorPowerGen
double reactorEnergy
int32_t 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_t coreLevel
int32_t thrusterLevel
float miningSpeed
float replicateSpeed
float walkSpeed
float jumpSpeed
float maxSailSpeed
float maxWarpSpeed
float buildArea
MechaForge
MechaLab
int32_t droneCount
float droneSpeed
int32_t droneMovement
MechaDrone[droneCount]
}
StorageComponent
{
int32_t version = 1
int32_t id
int32_t entityId
int32_t previous (version >= 1)
int32_t next (version >= 1)
int32_t bottom (version >= 1)
int32_t top (version >= 1)
int32_t EStorageType type (0:Default 1:Fuel 9:Filtered)
int32_t gridSize
int32_t bans (version >= 1)
grids[gridSize] {
int32_t itemId
int32_t filter
int32_t count
int32_t stackSize
}
}
PlayerNavigation
{
int32_t version = 0
uint8_t bool navigating
int32_t naviAstroId
double naviTarget_x
double naviTarget_y
double naviTarget_z
uint8_t bool useFly
uint8_t bool useSail
uint8_t bool useWarp
int32_t ENaviStage stage (None, Departure, OriginOrbit, AccOrbit, Space, DestOrbit, Approaching)
double flyThreshold
double sailThreshold
double warpThreshold
double maxSailSpeed
}
GalacticTransport
{
int32_t version = 0
}
PlanetFactory
{
int32_t version = 1
int32_t planetId
PlanetData
int32_t entityCapacity
int32_t entityCursor
int32_t entityRecycleCursor
EntityData entityPool[entityCursor - 1]
entityAnimPool[entityCursor - 1] {
float time
float prepare_length
float working_length
uint32_t state
float power
}
entitySignPool[entityCursor - 1] {
uint32_t signType
uint32_t iconType
uint32_t iconId0
uint32_t iconId1
uint32_t iconId2
uint32_t iconId3
float count0
float count1
float count2
float count3
float x
float y
float z
float w
}
int32_t entityConnPool[entityCursor * 16 - 16]
int32_t entityRecycle[entityRecycleCursor]
int32_t prebuildCapacity
int32_t prebuildCursor
int32_t prebuildRecycleCursor
PrebuildData prebuildPool[prebuildCursor - ]
int32_t prebuildConnPool[prebuildCursor * 16 - 16]
int32_t prebuildRecycle[prebuildRecycleCursor]
int32_t vegeCapacity
int32_t vegeCursor
int32_t vegeRecycleCursor
VegeData vegePool[vegeCursor - 1]
int32_t vegeRecycle[vegeRecycleCursor]
int32_t veinCapacity
int32_t veinCursor
int32_t veinRecycleCursor
VeinData veinPool[veinCursor - 1]
int32_t veinRecycle[veinRecycleCursor]
veinAnimPool[veinCursor] {
float time
float prepare_length
float working_length
uint32_t state
float power
}
CargoContainer
CargoTraffic
FactoryStorage
PowerSystem
FactorySystem
PlanetTransport
MonsterSystem
PlatformSystem (version >= 1)
}
PlanetData
{
int32_t modDataByteCount
uint8_t modData[modDataByteCount]
int32_t numVeinAmounts
int64_t veinAmounts[numVeinAmounts]
int32_t numVeinGroups
veinGroups[numVeinGroups] {
int32_t EVeinType type ()
float pos_x
float pos_y
float pos_z
int32_t count: Read, but then set to zero
int64_t amount: Read, but then set to zero
}
}
EntityData
{
uint8_t version = 0
int32_t id
int16_t protoId
int16_t modelIndex
float pos_x
float pos_y
float pos_z
float rot_x
float rot_y
float rot_z
float rot_w
int32_t beltId
int32_t splitterId
int32_t storageId
int32_t tankId
int32_t minerId
int32_t inserterId
int32_t assemblerId
int32_t fractionateId
int32_t ejectorId
int32_t siloId
int32_t labId
int32_t stationId
int32_t powerNodeId
int32_t powerGenId
int32_t powerConId
int32_t powerAccId
int32_t powerExcId
int32_t monsterId
}
PrebuildData
{
uint8_t version = 0
int32_t id
int16_t protoId
int16_t 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_t upEntity
int16_t pickOffset
int16_t insertOffset
int32_t recipeId
int32_t filterId
int32_t refCount
int32_t refArr[refCount]
}
VegeData
{
uint8_t version = 0
int32_t id
int16_t protoId
int16_t modelIndex
int16_t 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_t version = 0
int32_t id
int16_t EVeinType (None, Iron, Copper, Silicium, Titanium, Stone, Coal, Oil, Fireice, Diamond, Fractal, Crysrub, Grat, Bamboo, Mag)
int16_t modelIndex
int16_t groupIndex
int32_t amount
int32_t productId
float pos_x
float pos_y
float pos_z
int32_t minerCount
int32_t minerId0
int32_t minerId1
int32_t minerId2
int32_t minerId3
}
CargoContainer
{
int32_t version = 0
int32_t poolCapacity
int32_t cursor
int32_t recycleBegin
int32_t recycleEnd
cargoPool[cursor] {
int32_t item
float position_x
float position_y
float position_z
float rotation_x
float rotation_y
float rotation_z
float rotation_w
}
int32_t recycleIds[poolCapacity]
}
CargoTraffic
{
int32_t version = 0
int32_t beltCursor
int32_t beltCapacity
int32_t beltRecycleCursor
int32_t splitterCursor
int32_t splitterCapacity
int32_t splitterRecycleCursor
int32_t pathCursor
int32_t pathCapacity
int32_t pathRecycleCursor
BeltComponent beltPool[beltCursor - 1]
int32_t beltRecycle[beltRecycleCursor]
SplitterComponent splitterPool[splitterCursor - 1]
int32_t splitterRecycle[splitterRecycleCursor]
[pathCursor - 1] {
int32_t cargoPathIndex
CargoPath (cargoPathIndex != 0)
}
int32_t pathRecycle[pathRecycleCursor]
}
BeltComponent
{
}
SplitterComponent
{
}
CargoPath
{
}
FactoryStorage
{
}
PowerSystem
{
}
FactorySystem
{
}
PlanetTransport
{
}
MonsterSystem
{
}
PlatformSystem
{
}
DysonSphere
{
}