Aetheria/Aetheria.State/README.md
2026-06-13 05:39:06 +01:00

2.3 KiB

Aetheria.State

Aetheria.State is the replacement owner for durable Aetheria game state.

It uses modern GameCult.Caching, GameCult.Caching.MessagePack, and GameCult.Mesh. It does not reference the old Assets/Scripts/ServerShared tree, RethinkDB, JsonKnownTypes, or Newtonsoft.Json.

The first live state file is GameData/aetheria-world.cc. Legacy files such as GameData/AetherDB.msgpack are migration inputs only.

The typed save model is split into player settings, saved runs, saved zones, entity snapshots, item slots, weapon groups, action-bar bindings, and stat grids. Do not preserve SavedGame or EntityPack as opaque payloads in the new store; they are source shapes for migration, not portable state authority.

The Unity client no longer writes PlayerSettings.msgpack, .loadout, or .zone files. Until Aetheria.State is available to Unity as a runtime Verse package, player settings and loadout edits are session-local and run saving is disabled. That is intentional: the missing runtime package is the owner gap, and the old bespoke file formats must not keep acting as durable truth while the state spine is being rebuilt. The old SavedGame/SavedZone DTOs and Galaxy loader constructor have also been deleted; the only save model left is the typed AetheriaSavedRun document family in this project.

Keyboard layout rendering now reads the checked-in Unity text asset directly. The old generated GameData/KeyboardLayouts/*.msgpack cache was deleted; layout edits are runtime-only until Verse owns a typed layout/settings document.

The old IMGUI CultCache database editor has been deleted, and NameTools no longer exports NameFile/*.msgpack. AetherDB.msgpack and existing name files remain legacy catalog inputs only; typed catalog migration is the next owner move.

Current rebuild notes:

  • MessagePack 3.1.4 is pulled transitively through CultLib and is currently flagged by NuGet advisory GHSA-hv8m-jj95-wg3x; update CultLib's GameCult.Caching.MessagePack package ownership rather than adding a local Aetheria override.
  • CultRecordRef<T> should become the persisted reference shape once the MessagePack source-generator path handles the GameCult formatter cleanly. Until then, v1 profile documents store explicit record-key strings at the persistence boundary.