Skip to content

Save System Architecture

Status: RESOLVED — July 19, 2026


Save Types

1. Run State (Mid-Run Save)

  • Single slot. One save file per run. Overwrites on save. Deleted on victory or defeat.
  • Autosave at each node start and end.
  • Manual "Save & Quit" available from pause menu.
  • No save-scumming: saving mid-battle is not possible (only between nodes).

2. Meta-Progression (Persistent)

  • Echoes balance, unlocks purchased, run history, bestiary, synergy codex.
  • Saved as JSON file in persistent data path.
  • Steam Cloud Saves for cross-device sync (post-MVP: v1.0).

3. Settings (Persistent)

  • Audio, video, controls, accessibility. Unity PlayerPrefs or JSON.

Serialization Format

  • System.Text.Json for run-state and meta-progression saves.
  • Definitions (aspects, enemies, relics) are ScriptableObjects — referenced by ID in save files, not serialized inline.

Save Payload (Run State)

RunSaveData
├── version: int
├── seed: int
├── difficulty: enum
├── islandIndex: int
├── currentNodeIndex: int
├── nodeHistory[]: List<NodeResult>
├── squad: SquadData
│   ├── units[]: List<UnitSaveData>
│   │   ├── unitId, characterId, level, exp
│   │   ├── aspectSlots[5]: string[]  // aspect IDs
│   │   ├── abilityUpgrades: dict<string, int>  // ability ID → tier
│   │   ├── equipment: EquipmentSlots
│   │   ├── stats: StatBlock
│   │   └── hp, mp
│   └── inventory: InventoryData
├── relics[]: List<string>  // relic IDs
├── gold: int
├── synergiesDiscovered[]: List<string>
├── playTime: float
└── isCoop: bool

Save Triggers

TriggerWhat Saves
Node startAutosave run state
Node endAutosave run state
Manual "Save & Quit"Full run state
VictorySave final stats, award Echoes, delete run save
DefeatSave final stats, award Echoes, delete run save
Game close (graceful)Autosave if mid-run
Game crashNothing. Risk accepted.

Co-op Saves

  • Host owns the save. Co-op runs cannot be resumed if host disconnects.
  • No reconnection support for MVP. Disconnect = run lost for both.
  • Consider "Save & Quit" for co-op (both players confirm) in v0.2.

Open Questions

  • [ ] Save file versioning: migration strategy for v0.1 → v0.2 saves?
  • [ ] Encryption: probably skip (not a competitive game).
  • [ ] Dev tools: spawn items, skip islands, set Echoes via console commands?

Markdown is the canonical GDD source.