
01 / Easy, Customizable, Component Driven
The Save System identity: a focused persistence tool built around ease of use, customization and component-driven Unity workflows.
Live
Unity Utility
A focused Unity 6 persistence utility for capturing component state, matching it through stable IDs, and restoring scene or runtime-spawned objects from JSON save slots.
Product facts verified


Workflow / 01—03
The system keeps persistence opt-in: configure storage once, then make each gameplay component responsible for its own compact state.

01 / Easy, Customizable, Component Driven
The Save System identity: a focused persistence tool built around ease of use, customization and component-driven Unity workflows.

02 / World Data in Motion
A DTWorldz visual for the feeling of saved worlds, player progress and project data moving safely through the system.
Product media
Original product videos and screenshots, kept in the same gallery flow as the current asset record.

Image 1 / 2
The Save System identity: a focused persistence tool built around ease of use, customization and component-driven Unity workflows.
Production brief
Save System, by DTWorldz uses a component-driven contract: every participating ISaveable exposes a stable SaveId, captures a JsonUtility-compatible snapshot, and restores that snapshot when the matching record is loaded. This keeps the shape and lifecycle of persistent data in the gameplay code that owns it.
SaveManager coordinates the scene-wide operation, writes named slots below Application.persistentDataPath, and restores runtime-spawned objects before applying their state when an optional PrefabCatalog recipe is present. Included examples show Animator, Rigidbody2D, character-stat, inventory, transform, and spawning adapters without making those game-specific implementations part of the core contract.
System map
The major product areas, presented as an editorial map instead of a wall of feature cards.
Persistence
Persistence is opt-in and explicit: a participant describes its stable identity and serializable snapshot instead of relying on automatic scene serialization.
Identity
Stable IDs separate persistence identity from scene lookup, while optional spawn recipes cover objects that must be recreated during load.
Storage
SaveSettings controls the folder, extension, formatting, and optional processing applied around named local slots.
Compatibility
The public package is a small, non-rendering persistence utility whose technical fit is defined by its Unity and serialization requirements.
Related field notes
Practical articles and adjacent DTWorldz tools that add implementation context beyond the product record.
Read the practical boundaries behind stable IDs, async slot operations, atomic writes and versioned data.
Read moreCompare the standalone utility with the broader systems included in the 2D Top Down RPG Sandbox Project.
Read moreField notes
The deeper technical record remains available without crowding the main product story.
Each participating component owns its serializable CaptureState and RestoreState implementation.
Records are matched to scene objects and recreated runtime instances through persistent IDs.
Named slots use asynchronous UTF-8 reads and atomic temp-file-to-final-file writes.
Optional prefab recipes recreate missing runtime objects before their saved payload is applied.
ISaveable keeps CaptureState and RestoreState beside the gameplay component that understands the data and its invariants.
Scene objects retain a stable GUID, while runtime prefab instances can persist and recover the identifier written into their save entry.
Versioned save files contain per-object JSON payloads so state stays inspectable and follows Unity's serialization model.
Named slots are read and written asynchronously beneath Application.persistentDataPath with configurable folders and extensions.
A save is written to a temporary file before being moved to its final path, reducing the chance of leaving a partially written slot.
Optional spawn recipes and PrefabCatalog mappings recreate missing runtime objects before their saved component state is applied.
Optional adapters demonstrate Animator, Rigidbody2D, stats, inventory, transform, and spawning state, while helpers cover dictionaries and polymorphic lists.
SaveSettings can enable GZip compression and lightweight XOR obfuscation. Obfuscation deters casual editing but is not encryption.
01
Create a SaveSettings asset, choose the root folder, file extension, JSON formatting, and optional compression or obfuscation, then assign it to the scene SaveManager.
02
Implement ISaveable on each participating component, return a compact serializable payload from CaptureState, and apply that payload in RestoreState.
03
Use SaveGuid so a scene object keeps the same identifier across sessions and a runtime-instantiated prefab receives an ID that can be persisted and reassigned during load.
04
For objects that may not exist when a slot is loaded, provide a stable prefab ID and map it through PrefabCatalog so the loader can instantiate the object before state restoration.
05
Call the async SaveManager slot APIs. The manager captures participants, writes JSON through an atomic file operation, and on load recreates missing spawnables before routing each payload back to the matching component.
Version 1.0.0 lists Unity 6000.3.0 as the original version and Unity 6000.3.0f1 as the verified compatibility target.
Saved payload types must be compatible with Unity JsonUtility. Use serializable fields, represent dictionaries as lists, and preserve runtime-resolved concrete types in IL2CPP/AOT builds.
Every repeated scene or runtime entity should use a stable SaveGuid. Type-name fallback is only suitable for a unique singleton and can collide when multiple instances exist.
Recreating missing runtime objects requires a stable prefab ID and a matching PrefabCatalog entry. Projects using Addressables or another resolver must adapt that lookup path.
Slots are local files under Application.persistentDataPath. Optional compression reduces size; optional XOR obfuscation is not encryption and should not protect sensitive data.
Unity Asset Store lists Built-in, URP, and HDRP compatibility for Unity 6000.3.0f1 because the package is a non-rendering persistence extension.
The asset fits projects that prefer a small, adaptable persistence foundation over a game-specific or reflection-heavy all-in-one save solution.
Only components that opt into the persistence contract are captured. Implement ISaveable and return a serializable snapshot from CaptureState, then apply that payload in RestoreState. This keeps saved data explicit and prevents unrelated scene state from being serialized accidentally.
SaveGuid provides a stable identifier for scene objects. Runtime-created objects receive an ID that is stored in the save entry and reassigned if the object is recreated during load.
Yes, when the object provides a prefab recipe and its stable prefab ID is registered in PrefabCatalog. The loader recreates missing spawnable objects and assigns their saved ID before routing state back to their components.
Named slots are stored under Application.persistentDataPath using the root folder and file extension configured in SaveSettings. Writes use a temporary file followed by a move to the final path.
Payloads follow Unity JsonUtility rules: use serializable classes or structs with fields, convert dictionaries to serializable key/value lists, and explicitly preserve concrete polymorphic types for IL2CPP/AOT builds. The package includes helpers for serializable collections and tagged polymorphic payloads.
No. The XOR-based option is lightweight obfuscation intended to deter casual text editing. It is not cryptographic protection and should not be presented as encryption for sensitive or hostile data.