Saving System for DOTS

Saving System for DOTS

A production-proven save & load solution for Unity DOTS (Entities 1.x).
Persist complex worlds, runtime entity changes, and evolving data layouts without writing and maintaining custom serializers.

This asset is designed for experienced DOTS developers building real games who need robust save compatibility across updates.


Who this is for?

✔️ Unity DOTS / Entities users
✔️ Projects with subscenes, prefabs, and runtime-spawned entities
✔️ Games that need long-lived, version-safe save files

❌ Not intended for beginners or MonoBehaviour-only projects


What problem this solves?

Saving in DOTS becomes difficult once:

  • components are added or removed at runtime
  • prefabs evolve over time
  • data layouts change between versions

This system handles entity persistence, format migration, and prefab changes, allowing you to ship updates without breaking existing save files.


How?

Create a scriptable object Save Format and add the types you want to save in a handcrafted UI and let the source code generator do the heavy lifting for optimized serialize and deserialization code.

Then mark subscene entities or prefabs with a Savable Authoring component and you are done. Saved data will be efficiently laid out in a binary format and compressed with LZ4.


🎮 Real-world Production Usage

Not just a toy asset! Battle tested in production with complex needs.


Used in Life Below from Megapop – a complex and charming city-builder.


🎉 New in 1.5.0

Support for Unity.Netcode and saving/loading of individual entities!


🎉 New in 1.4.0

Components that were not present on a prefab and added during runtime are now supported. Also UnsafeHashMaps can be saved and loaded now.


Features

✔️ Create save formats in the editor UI

✔️ Save and load unmanaged data defined in save formats

✔️ Automatically keep track of subscenes

✔️ Ignore fields in structs

✔️ Create migration plans with an intuitive node based approach when the save format has changed

✔️ Prefab migration when prefabs have changed

✔️ Included Savegame viewer for easy debugging

✔️ Full Source code included

✔️ Works for mobile IOS/Android


Links: Documentation | Discord | E-Mail


Automatically keep track of subscenes

  • Automatically load previously open subscenes
  • Instantiated prefabs (from spawners, etc...)
  • Destroyed objects (trees, iron nodes, etc...)

Save and load data defined in save formats

  • Global (non-subscene) and subscene entity data
  • Entity struct data with IComponentData or ISharedComponentData
  • Entity buffers with IBufferElementData
  • Component enabled states with IEnableableComponentData
  • Arbitrary primitive struct data
  • Nested support for UnsafeList<T>*
  • UnsafeHashMap<TKey, TValue>*
  • Custom serializer/deserializer for more complex tasks
  • Components that were added during runtime and not present in a prefab

☎️ Support

If you have any questions please write me an email (support[at]enzenebner.com) or contact me in Discord. Please be patient, replies may take some time depending on my workload. Please include your Asset Invoice Number in your request.

Thank you.


🔑 License Info

This asset requires one license per seat (user who has access to the asset files). If you are a team then please consider buying one seat per Unity user.

Why am I telling you this?

Because most people do not know. In fact any asset found under the Tools category automatically falls under a license type that Unity calls Extension Assets (see official license explanation) which differs from the standard (Entity) license.