feat(gameserver): persisted mana + Magery on per-entity save serialization (#36) #57
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!57
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/spell-mana-foundation"
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?
Spell-system slice 0 (foundation) — part of #36 — plus the persistence rework it required.
Gameplay
Mobile.Mana(current) withMaxMana = INT, regenerating one point everyManaRegenTicks(~1/s) via a newWorld-ownedSpellSystemcomponent stepped from the tick.Persistence rework (ModernUO-style per-entity serialization)
Driven by the design discussion on #36: instead of an intermediate DTO spread across ~7 files, each entity serializes itself.
PlayerMobile.Serialize/Deserialize(position + vitals + skills) andItem.Serialize/Deserialize(identity + slot), each starting with its own version int — evolve a format by bumping that version and branching in its ownDeserialize, never a central switch.PlayerSerializer).WorldSaveFileis now a container mapping player id → blob;PlayerStorean id → blob map. Blobs are built on the sim thread (World.SerializePlayer/SerializeOnlinePlayers) and flushed off-thread.PlayerPersistState,PlayerRecord) and the granular per-aspect store methods.Serialize/Deserialize; diverges from its global serial-reference graph + two-pass linker — blobs are per-player sub-graphs (no cross-player references yet), so no global linker until trading/world-containers need one (container nesting extends the blob + a per-blob link pass).Verification
just lint→ build ok, 0 warnings.just test→ full suite green (GameServer 125, Shared 51, Client.Core 46, Auth 12, Assets 4, AssetExtractor 7).Definition of Done (delta beyond the base DoD)
Worldlevel and through the WebSocket integration tests).INTat the configured cadence and never overflows (unit-tested).Mageryskill.Serialize/Deserializewith per-entity versions; no intermediate persistence DTO remains.Design docs updated:
spell-system.md(mana persisted, not transient) and the CLAUDE.md persistence section (per-entity model). Epic #36 rewritten to the agreed design with the slice plan.