LDD
Description
.ldd stores dynamic save-game state.
In OpenW3D code, the same chunk layout is also used for .sav files
written by the in-game save system.
At runtime it is paired with:
.lsdfor static level state..ddbfor definitions.
References
Specification
Container model
.ldd uses chunkio chunks/micro-chunks.
Top-level chunks
SaveGameManager::Save_Game writes:
CHUNKID_LEVEL_INFO(1011991648in normal builds,1011991650in BETACLIENT builds).CHUNKID_LEVEL_DATA(next enum value).
This structure is extension-agnostic in code: both map dynamic files (commonly
.ldd) and user save files (commonly .sav) are written through the same
function.
CHUNKID_LEVEL_INFO payload
Micro-chunks:
MICROCHUNKID_MAP_FILENAME(map/level filename string).MICROCHUNKID_DESCRIPTION(wide description string).MICROCHUNKID_MISSION_DESCRIPTION(mission description id).
CHUNKID_LEVEL_DATA payload
Contains SaveLoad subsystem chunks, including:
_CombatSaveLoad_ConversationMgrSaveLoad(level category)_PhysDynamicSaveSystem_TheEncyclopediaMgrSaveLoadSubsystem_DynamicAudioSaveLoadSubsystem_TheMapMgrSaveLoadSubsystemOptional additional subsystems passed via varargs
Load flow
On load, runtime reads level info from .ldd, derives <map>.ddb, loads definitions,
loads .lsd static data, then loads CHUNKID_LEVEL_DATA dynamic state.
Save-game naming in practice
Observed names in OpenW3D code:
save\\autosave.savsave\\quicksaveA.savsave\\quicksaveB.savSlot saves like
save\\savegameNN.sav