Table of Contents

Class SaveFileSerializer

Namespace
Core.SaveLoad
Assembly
Core.dll

ENGINE LAYER - Binary save file format serializer

File Format v2:

  • Magic bytes: "HGSV" (4 bytes)
  • Format version: int32 (4 bytes) — 1 = legacy, 2 = metadata+compression
  • Metadata header: 256 bytes (fixed-size, readable without full deserialization)
  • Compressed payload (GZip):
    • System data: count + (name, length, bytes) pairs
    • Command log: count + bytes[]
  • Checksum: uint32 (CRC32 of compressed payload)

File Format v1 (legacy):

  • Magic bytes: "HGSV" (4 bytes)
  • Header: variable-length metadata
  • System data + Command log (uncompressed)
  • Checksum: uint32
public static class SaveFileSerializer
Inheritance
object
SaveFileSerializer

Methods

ReadFromDisk(string)

Read SaveGameData from disk. Supports both v1 (legacy) and v2 (metadata+compression) formats.

public static SaveGameData ReadFromDisk(string filePath)

Parameters

filePath string

Returns

SaveGameData

ReadSaveMetadata(string)

Read only the metadata header from a save file (fast — reads ~264 bytes). Returns null if the file is invalid or uses legacy format.

public static SaveMetadata? ReadSaveMetadata(string filePath)

Parameters

filePath string

Returns

SaveMetadata?

VerifyVersionCompatibility(SaveGameData, string)

Verify version compatibility

public static bool VerifyVersionCompatibility(SaveGameData saveData, string currentVersion)

Parameters

saveData SaveGameData
currentVersion string

Returns

bool

WriteToDisk(SaveGameData, string)

Write SaveGameData to disk with atomic write (temp file → rename). Uses format v2: fixed metadata header + GZip compressed payload.

public static void WriteToDisk(SaveGameData saveData, string filePath)

Parameters

saveData SaveGameData
filePath string