Save Migrator - Version-Safe Save Data Migration
StibT Works
$15.39
$21.99
30%OFF
(no ratings)
Jump AssetStore
Ship a patch without breaking your players' save files. Declare schema changes step by step and every older save is brought up to date automatically. No dependencies.Add a field, ship the patch, and watch old saves fail to load. It is one of the most common ways an update hurts the players who have played the longest.Save Migrator keeps a versioned history of your save schema. When a player opens a save written by an older build, every step between their version and the current one runs in order, automatically. Your loading code never has to know which version it received.DECLARE CHANGES, DON'T HAND-WRITE THEMMigration.From(2).To(3) .RenameField("hp", "health") .MoveField("health", "player.health") .AddField("player.level", 1);Add, remove, rename, move, and transform fields by path. Iterate arrays for inventories and quest lists. Drop to a custom function when you need to.CATCH THE MISSING STEP BEFORE YOUR PLAYERS DOIf you register 1 to 2 and 3 to 4 but forget 2 to 3, every player holding a v2 save is stranded. Validate() finds that gap at build time, and the Migration Inspector window shows it in one click. This is the failure the package exists to prevent.SAVES THAT SURVIVE A BAD DAYAtomic writes: contents go to a temporary file and are moved into place, so an interrupted write cannot damage the live save. Generational backups with automatic recovery when the main file is unreadable. Corruption detection on load. If nothing readable remains, it stops rather than handing back empty data and letting your game overwrite a save that was only damaged.ADD IT TO A GAME THAT ALREADY SHIPPEDSaves written before you installed this have no version stamp. Tell the store which version to treat them as, and they are read, migrated, and re-saved in place. Nothing has to be converted up front.NO DEPENDENCIES, NOTHING TO BREAKNo third-party packages, including for JSON. The runtime assembly references no UnityEngine types at all, so an engine upgrade cannot break it and the logic can be unit tested outside the editor. It works alongside whatever serializer you already use, since it operates on the serialized text rather than on your classes.WHAT IS IN THE BOXFull C# source, no DLLs. Migration Inspector editor window. A worked example covering four schema versions. An automated test suite you can run yourself. Verified on Unity 2022.3 LTS and Unity 6 LTS.Support: stibtworks@gmail.comDeclarative migrations: add, remove, rename, move, transform, and iterate arrays, all addressed by dot-separated path.Build-time validation that catches missing or duplicate version steps before you ship.Automatic migration on load, from any supported version up to the current one.Atomic writes, generational backups, and automatic recovery from a damaged file.Adopt on an already-shipped game: saves with no version stamp are migrated in place.Zero dependencies. The runtime assembly references no UnityEngine types.Works alongside your existing serializer; it operates on the serialized text, not your classes.Full C# source, no DLLs, with an automated test suite included.Unity 2022.3 LTS and Unity 6 LTS.The C# implementation, the tests, the editor window and the documentation in this package were produced with an AI coding assistant (Anthropic Claude), working to a design and requirements I directed and reviewed.Nothing was accepted on trust. The package ships an automated suite of 142 assertions covering JSON round-tripping, migration behaviour, checksum verification and recovery from a damaged save file, and that suite is run on both Unity 2022.3 LTS and Unity 6 LTS. I also exercised the package by hand in the editor: running the worked example end to end, and confirming that a deliberately broken migration chain is reported by the Migration Inspector window.The implementation is original. No third-party source was copied into it, and it has no dependencies beyond the Unity runtime.Store images: the logo, key image and illustrated panels were generated by a Python script (PIL) that I wrote, not by a generative image model. The editor screenshot is an unedited capture of the real Migration Inspector window.


