How Persistent Asset Compares
See how Persistent Asset holds up against the other save solutions on the store.
Legend: ✅ yes · ⚠️ partly / manual or unclear · ➖ deliberately not · ❌ no · ⏳ coming soon
| Persistent Asset | Easy Save 3 | Bayat Save System | |
|---|---|---|---|
| Setup & workflow | |||
| Saves & loads automatically, no code | ✅ Runs on its own | ⚠️ Auto Save component | ⚠️ Auto Save component |
| Set up entirely in the Inspector | ✅ No C# needed | ⚠️ Mostly code | ⚠️ Mostly code |
| Drop Save / Load onto a button | ✅ Ready for UnityEvents | ⚠️ Small script | ⚠️ Small script |
| One call covers every saved object | ✅ Save, load or clear them all | ⚠️ Only registered objects | ⚠️ Via Auto Save Manager |
| Change where saves go without rewriting code | ✅ Dropdown on the asset | ⚠️ Default in Settings window | ⚠️ Set in code |
| Where it saves | |||
| Local files & PlayerPrefs | ✅ Built in | ✅ Built in | ✅ Built in |
| Multiple save slots | ✅ Built in | ✅ Multiple files | ✅ Catalog API |
| Screenshot thumbnails for save slots | ✅ Built-in per-slot capture | ⚠️ Save a Texture2D yourself | ⚠️ Save images yourself |
| Cloud saves across devices, built-in | ✅ Unity Cloud Save | ✅ ES3Cloud (self-host) | ✅ Firebase, PlayFab, Steam… |
| Keeps working offline, syncs later | ✅ Offline cache, auto-upload | ⚠️ Saves locally, manual ES3Cloud.Sync | ⚠️ Manual |
| Save to your own backend | ✅ Three simple HTTP routes | ✅ Needs ES3.php + MySQL | ❌ No HTTP storage |
| Database storage (SQL / NoSQL) | ➖ By design: your backend | ✅ MySQL (SQL) via ES3Cloud | ⚠️ Firebase add-on (NoSQL) |
| PC, mobile & WebGL | ✅ Fully supported | ✅ Fully supported | ✅ Fully supported |
| Consoles | ⚠️ Short script, then automatic | ⚠️ Write your own file handling | ⚠️ Write your own provider |
| Reliability & data safety | |||
| Saves can’t corrupt on crash or power loss | ✅ Atomic write-then-swap | ⚠️ Atomic move, manual recovery | ⚠️ Backup-based |
| Automatic backup copy | ✅ Automatic fallback | ⚠️ Manual backup/restore | ⚠️ Manual backup API |
| Never overwrites good progress with defaults | ✅ Won’t wipe a real save | ⚠️ Up to your code | ⚠️ Up to your code |
| Knows when async/cloud data is ready to use | ✅ Built-in ready signal | ⚠️ You track it | ⚠️ You track it |
| Upgrades old saves after a game update | ✅ Versioning built in | ⚠️ Migrate yourself | ⚠️ Migrate yourself |
| Change format or location, keep old saves | ✅ Auto-migrates old saves | ⚠️ Up to your code | ⚠️ Up to your code |
| Reset to defaults or restore a checkpoint | ✅ Built-in reset & checkpoints | ⚠️ Manual | ⚠️ Manual |
| Broken or test-only setup fails the build | ✅ Build stops before shipping | ❌ Not offered | ❌ Not offered |
| Finishes saving before the game closes | ✅ Waits for in-flight saves | ➖ Synchronous, no wait needed | ⚠️ No async drain |
| Security | |||
| Save encryption | ✅ AES-256 | ✅ AES-128 | ✅ AES-128 |
| Detects saves edited by the player | ✅ Permanent tamper mark | ❌ Not offered | ❌ Not offered |
| Tie a save to a device, path or secret | ✅ Machine, path & secret locks | ❌ Not offered | ❌ Not offered |
| Performance | |||
| Smooth saving, no frame stutter | ✅ Heavy work in the background | ⚠️ Mostly main thread | ⚠️ Async API only |
| Compress saves to shrink file size | ✅ gzip (Fast or Optimal) | ✅ gzip | ❌ Not built in |
| Skips saving when nothing changed | ✅ Optional dirty-check | ⚠️ Manual / cache | ⚠️ Manual |
| What you can save | |||
| Deep object graphs & polymorphism | ✅ Newtonsoft or Odin serializer | ✅ Reflection serializer | ✅ Json.NET-based |
| Save any object from anywhere in code | ➖ By design: data is declared first | ✅ Save anything, anywhere | ✅ Save anything, anywhere |
| Reach saved data anywhere, no string keys | ✅ Type-safe Find<T>() |
⚠️ Via string keys | ⚠️ Via string keys |
| Save entire scenes & GameObjects | ➖ By design: data, not scenes | ✅ Snapshots scene objects | ✅ Unity objects & components |
| Save references between objects | ✅ Asset refs; shared per serializer | ✅ Unity & shared refs | ✅ Resolvers + shared refs |
| Save individual values / keys | ✅ Via Persistent Variables bag | ✅ Per-key partial saves | ✅ Per-key |
| Editor & debugging tools | |||
| Live save status right in the Inspector | ✅ Load state & last result | ❌ No live panel | ❌ None |
| Edit your data live while playing | ✅ Tweak in the Inspector mid-play | ⚠️ Your component fields | ⚠️ Your component fields |
| Run Save / Load / Clear by hand while playing | ✅ Inspector buttons | ⚠️ From code | ⚠️ From code |
| Running log of every save & load | ✅ Built-in log | ❌ Not built in | ❌ Not built in |
| On-device log viewer (debug on real builds) | ✅ In-game overlay | ❌ Not built in | ❌ Not built in |
| Simulate failures & slow/cancelled saves | ✅ Built-in test mode | ❌ Not built in | ❌ Not built in |
| One-click wipe of local saves for re-testing | ✅ Dev tool included | ⚠️ Editor tools | ⚠️ Via code |
| No-code for designers | |||
| Save options & settings, no code | ✅ Ready-made workflow | ➖ Code-first by design | ➖ Code-first by design |
| Bind values to UI without code | ✅ Binder components | ➖ Code-first by design | ➖ Code-first by design |
| Values notify your UI when they change | ✅ Observable values | ➖ Code-first by design | ➖ Code-first by design |
| Extending & integrations | |||
| Add your own save destination | ✅ Custom manager or cloud base | ⚠️ Manual, no provider API | ✅ Modular Storage API |
| Swap in your own save format / serializer | ✅ Serializer is a slot | ⚠️ No serializer slot | ✅ Modular Serialization API |
| Teach it your own custom data types | ✅ Custom codecs | ✅ Custom ES3 types | ✅ Custom converters |
| React to saves & loads with events / hooks | ✅ Global events | ⚠️ Limited | ✅ Auto Save events |
| Add advanced behaviour with one small interface | ✅ Opt-in interfaces | ❌ No equivalent | ⚠️ Extensible APIs |
| Alternative serializers (Newtonsoft / Odin) | ✅ Both integrated, no setup | ⚠️ Community | ❌ Json.NET only |
| Third-party integrations (Steam, PlayFab, Firebase…) | ⏳ Coming soon | ⚠️ Some / community | ✅ Steam, PlayFab, Firebase, Xbox+ |
| Visual scripting (PlayMaker) | ❌ Under consideration | ✅ PlayMaker, Bolt, UVS | ✅ PlayMaker & Bolt |
| Spreadsheet / CSV export | ❌ Not our focus | ✅ Built in | ❌ Not offered |
| Compatibility & ownership | |||
| Full C# source included | ✅ Editable source | ✅ Editable source | ✅ Editable source |
| No mandatory dependencies | ✅ Standalone | ✅ Standalone | ✅ Standalone |
| IL2CPP / AOT ready | ✅ Mono & IL2CPP | ✅ Mono & IL2CPP | ✅ Mono & IL2CPP |
| Human-readable saves (unencrypted) | ✅ Plain JSON | ✅ Plain JSON | ✅ Plain JSON |
| Save to a custom file path | ✅ Configurable | ✅ Configurable | ✅ Configurable |
| Track record | |||
| Years of proven track record | ❌ New release | ✅ Long-established | ✅ Established |
| Actively developed (new features) | ✅ Active | ✅ Frequent updates | ❌ No release since Dec 2024 |
| Big community, tutorials & integrations | ❌ New | ✅ Large ecosystem | ⚠️ Smaller |
| Tested | ✅ 1,700+ automated tests | ✅ Field-proven over years | ⚠️ Platform-tested |
| Thorough documentation | ✅ Full docs | ✅ Full docs | ⚠️ Docs site offline |