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

45 lines
2.3 KiB
Markdown

# 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.