feat(gameserver): binary world save instead of SQL (#23) #40
No reviewers
Labels
No labels
alpha:wave-0
alpha:wave-1
alpha:wave-2
alpha:wave-3
area:assets
area:combat
area:ecology
area:infra
area:render
area:scripting
area:ui
area:world
enhancement
epic
migration
post-alpha
roadmap
tech-debt
type:bug
type:chore
type:design
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
marco/IsoMmo!40
Loading…
Reference in a new issue
No description provided.
Delete branch "docs/persistence-study"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #23.
The game world is authoritative in memory; the DB was only ever a periodic snapshot target, never queried during play. This replaces the EF game layer (dual-provider migrations paid on every world-state change) with a single versioned binary save (
world.sav):WorldSaveFile— versioned format (magicISOW+ version), crash-safe atomic write (.tmp→File.Replacekeeping.bak).PlayerStore— whole save held in memory, loaded at startup; Load/Save update the map,FlushAsyncwrites to disk. Never touched in the tick loop.GameDbContext(+ providers), migrations, persisted entities, EF/Npgsql/SQLite packages,Database/ConnectionStringsconfig,migrate-gamerecipe.docs/world-save-format.md.All tests green, 0 warnings, csharpier clean.
Definition of Done
world.savis created next to the GameServer content root on first flush; a wrong magic or unknown version throwsInvalidDataException(never a silent misread).PlayerStore_FlushedStatePersistsAcrossReload)..bakretained; atomic replace).IsoMmo.GameServerand no game DB migration folder exists.docs/world-save-format.mddocuments the byte layout and the version-bump migration procedure.docs: persistence study — DB vs binary snapshots (#23)to feat(gameserver): binary world save instead of SQL (#23)