Stasis Save System
Stasis saves and restores the state of a Unity game. It generates its save code at compile time instead of reading your fields with reflection at runtime, and it encrypts and signs every file by default.
Making something saveable
There are two routes and you can mix them freely.
Add the Stasis Identity and Stasis Common State Saveable components to a GameObject, tick what you want kept, and it survives a restart. No code at all. Transform, active state, layer, tag, renderers, colliders, rigidbodies, animator, audio and child transforms are all available.
For your own data, mark a class with [SaveSlot] and make it partial. A Roslyn source generator writes the save and load methods while you compile. Every member is saved unless you exclude it, private ones included. Use [StasisIgnore] to skip one, [SaveMe] to save it under a different key, and [PreviouslySavedAs] when you rename it later. It works on plain C# classes as well as MonoBehaviours.
Is it suitable for my genre?
Stasis is not built around any one genre. It saves whatever your components hold, so it fits an RPG with a large inventory, a survival game with a persistent world, a roguelike storing run state, a mobile game that has to save the moment the player is interrupted, or a puzzle game keeping level progress.
Larger projects have more to work with. A scene can be split into partitions and saved or loaded a region at a time. Split chunk storage rewrites only the chunks whose contents actually changed. Delta saves write what moved since the last full write, and slots can be preloaded off the main thread.
How customizable is it?
Full C# source is included. The core is not a DLL, so you can read it, debug into it and change it.
One settings asset controls the serialization profile, compression, encryption, signing, backup count, autosave and platform behaviour. Beyond that, ISaveStorage lets you replace the storage backend entirely, IStasisTypeHandler adds support for your own types, and IStasisDiagnostics routes every warning and error into your own telemetry instead of the console.
Keeping player saves working
Saves are written transactionally, so a crash partway through cannot destroy the file that was already there. Backups rotate on every write and a failed load falls back to them automatically, reporting which generation it used.
When you change your data after shipping, [PreviouslySavedAs] handles a renamed field and a migration bootstrap handles whole document restructuring, applied in order from whatever version wrote the save. Every save records a schema fingerprint, and the Schema Diff window compares a save against the code you have now.
Editor tools
Save Inspector, which opens any save file and shows its contents whatever the format, compression or encryption. Setup Wizard and Auto Setup. Repair Tool. Key Rotation, which re-encrypts existing saves so changing a key does not strand your players. Schema Diff. Diagnostics. link.xml generation for IL2CPP. Audits for hierarchy drift, reflection fallback and shader dependencies.
A ready made slot menu, save toast and loading overlay are included, and Create Save UI builds them into your scene for you.
Compatibility
Unity 6000.0 or newer. Requires the uGUI package, which every standard Unity template already includes. Works with Built-in, URP and HDRP. Optional integrations with Timeline, Cinemachine, Visual Effect Graph, Visual Scripting and Addressables compile only when those packages are present.
Demos
Four demo scenes are included, from a two minute first save through to a partitioned streaming world with save timings and a compression benchmark.
Documentation
A 26 page PDF manual covers the whole system.
Join the Discord for any live feedback or bug reports.