Aetheria/Aetheria.State
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-06-13 04:00:10 +01:00
..
Documents Add typed Verse save documents 2026-06-13 04:00:10 +01:00
Migration Add typed Verse save documents 2026-06-13 04:00:10 +01:00
Aetheria.State.csproj Start typed state rebuild 2026-06-13 00:38:48 +01:00
AetheriaDocumentRegistry.cs Add typed Verse save documents 2026-06-13 04:00:10 +01:00
AetheriaStateNode.cs Add typed Verse save documents 2026-06-13 04:00:10 +01:00
AetheriaStatePaths.cs Start typed state rebuild 2026-06-13 00:38:48 +01:00
README.md Add typed Verse save documents 2026-06-13 04:00:10 +01:00

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.

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.