Appearance
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: boolSave Triggers
| Trigger | What Saves |
|---|---|
| Node start | Autosave run state |
| Node end | Autosave run state |
| Manual "Save & Quit" | Full run state |
| Victory | Save final stats, award Echoes, delete run save |
| Defeat | Save final stats, award Echoes, delete run save |
| Game close (graceful) | Autosave if mid-run |
| Game crash | Nothing. 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?