What's new

What changed in each release of NexusForge Persistence, and the compatibility promises that make upgrading boring.

NexusForge Persistence NexusForge Persistence 0.2.0 Updated

0.2.0 — cloud, Editor tooling and verification#

Cloud, without lock-in. ICloudTransport is an opaque put/get/list/delete seam. A provider is supplied by the game, so the package ships no vendor SDK, no account and no credential. Adapter required

Conflict resolution by generation, never by clock. Two devices whose clocks disagree still agree about which save is newer, and the losing copy is written to its own *_conflict_<rev> slot before anything is replaced — so an automatic decision is always reversible. Available

Editor tooling. A guided Setup page with three presets, eleven sections that explain the consequence of each choice, a Validation page with two depths, a Platform page that renders the support matrix with its evidence, and generated code matched to your configuration. Available

Verification, including a defect it found. Fuzz and corruption tests, culture-independence tests, measured performance, and a probe that runs the whole pipeline inside a built IL2CPP player. That probe earned its keep: it found that timestamps were being written using the current culture, so a save written on a device using dd-MM-yyyy could be reinterpreted elsewhere. Fixed, and now covered by tests that fail without the fix. Verified

Documentation, samples and packaging. Twenty-one documents under Documentation~/, four importable samples, third-party notices and a package that passes its own export checks.

0.1.0 — the framework#

Initial framework: options and diagnostics, the result model, the document model and serializer abstraction, local storage with atomic writes and recovery, the save container and slots, versioning and migration, the operation coordinator, persistent object identity, autosave and checkpoints, and security (integrity, authentication, encryption, compression). Available

Compatibility promises#

Upgrading is designed to be boring, because saves are the contract:

SurfacePromise
Save file formatAn older file is always readable: the container records its format version and the reader accepts every version it has ever written.
ConfigurationRemoving or renaming a setting is a breaking change and is called out here. New settings arrive with defaults that match the previous behaviour.
Public APIAdditive by default. A breaking change is a major version bump, naming the affected types.
Settings assetA newer package opens an older asset; an older package leaves a newer asset alone rather than guessing at a layout it does not understand.
Schema versionsYours, not ours. The framework version recorded in a save never forces a migration.

The full history, including the phases the framework was built in, is on the changelog page.

Next#

  • Installation — how to move to this version.
  • Migration — migrating your save format, which is the part a package cannot do for you.
  • Changelog — the complete record.

Something wrong on this page? Every page here describes behaviour that is checked in the repository. If a page and the package disagree, the package wins.

Report a documentation problem · Frequently asked questions · Troubleshooting