Save Settings
Access the save settings in the top menu: Tools/Crystal Save/Settings/Crystal Save Settings
Everything that can be setup and configured in Crystal Save has to be done inside the Crystal Save Settings window. The default settings are ready for all non-cloud saving games. The Save Setting files are located here: Assets/Plugins/CrystalSave/Resources/
Save Method
In Crystal Save you can save into the Player Prefs or as Save-File. The default file format is binary (JSON is possible via Cloud Save Settings).

Version
Sets the Game Version. This setting is only required for Save Migration
Save File Name Pattern
The Default String for save and meta files, supports
{n} for slot number
{meta:key} for meta value as file name. Set Metadata in the Custom Metadata settings
Local Save Data
Wipe Local Save Data: One Button Solution to prevent Ghost Saves after dev-test-sessions. Deletes all locally stored Save Files, Metadata and Screenshots, and Player Prefs keys.
Open Save Folder: Opens the persistent path/Save Folder
Persistent Path Mode
Mode: Default -> Application.persistenDataPath
Mode: Custom -> Choose your custom persistentDataPath
Optionally Migrate existing Data to new Custom Path
Changing the persistent path can help WebGL builds that fail to save and throw errors. The issue is that Unity has deprecated manual sync. You may see a harmless warning in the browser console today, but in a future Unity version this workaround may stop working, which could also trigger harmless Crystal Save warnings.
Save Migration
Auto Save Migrated Data will auto-save the migrated save file into the loaded and migrated slot
Save Slots
Number of Save Slots
The number of Save Slots available
Number of Quick Save Slots
Quick Saves share the same List of Save Slots with Auto Saves and Regular Saves. Set here how many Quick Saves Crystal Save has to remember. By default, they start in a separate block so they won't clash with normal or auto-saves unless the slot numbers overlap.
New Quick Saves always go in the first Quick Save Slot and push older ones up
Auto Save Slot Number
Which slot the auto saves uses. Set 0 to disable auto saves. Regular or quick saves can still overwrite this slot if they use the same number.
Cryptography Settings
Enable Encryption
Encrypt save blobs with AES-256-GCM before upload/local mirror.
Supports all platforms:
Uses BouncyCastle (a software encryption library) on WebGL and Linux encryption, which may increase CPU load during load/save operations
Compression Settings
Enable Compression
Compress serialized save data before encryption using GZip. Reduces file size but increases CPU usage and slows load times when saving or loading (mobile devices)
Backup & Verification Settings
Enable Save File Verification
Keep a temporary .bak copy of the previous .sav next to the save file inside Application.persistentDataPath and verify the new save.
The backup is deleted after verification succeeds.
Backup files are stored only locally and are never uploaded to the cloud
Screenshot Settings
Enable Screenshots
Enable or disable capturing in-game screenshots for each save slot
Screenshot Folder Name
The folder name within peristenDataPath to store screenshots
Screenshot Provider
Select which screenshot provider to use when Naninovel is available. You can hook-in your own screenshot provider through code.
Screenshot Format
Crystal save allows saving of screenshots in the format JPG and PNG
Custom Metadata
Add here your Custom Metadata and default values fields like Player Name, Level, Map Name, etc.
Use in Playmaker SetSaveSlotMetadata or in Game Creator InstructionSetSaveSlotMetadata or set Metadata through code:
Player Name example. Add a new Custom Metadata. Set as Key 'Player Name' (without quotes). We leave Value empty.
SaveSlot slot = SaveManager.Instance.GetSaveSlotByNumber(1);
slot.CustomMetadata = new Dictionary<string, string>();
slot.CustomMetadata["Player Name"] = "John Doe";Conflict Resolution
Crystal Save can reconcile save conflicts automatically without prompting the player. Enable Auto Resolve Conflicts on the SaveSettings asset or in the settings window to let the system choose which side should win when a local and cloud save both exist for the same slot.
When enabled, you can pick a Conflict Policy:
Latest– keep the save with the most recentUpdatedAttimestamp.Oldest– prefer the oldest save.LocalWins– always keep the local file.CloudWins– always download the cloud version.MetadataRules– evaluate up to two metadata comparisons before falling back to the timestamp.
For MetadataRules, define one or two key/operator/value comparisons using metadata keys from SaveSlotMetadataSO. All rules must pass for the conflict to auto-resolve; otherwise the system uses the policy’s fallback behavior.
Logging Settings
Log Level
4 levels:
Off - Turns off Logs
Error - Show only Errors
Warning - Show Errors and Warnings
Info - Show all Debug Log Messages
Automatic Registration Settings
Auto Register Tags
Automatically register Tags when the project changes or after assembly reload.
Auto Register Prefabs
Auto-register prefab assets when the project changes or after assembly reload. This setting will be marked obsolete in future releases because the Remember Prefab component will register the Prefab automatically. Leave the setting disabled.
Migration Settings
Auto Save Migrated Data
Overwrite existing Saves after migration: If enabled, an old Save-file gets migrated to the new version and then auto-saved. If disabled, it will migrate an old save-file each time when it is loaded, as it never gets saved in the version format.
Performance (Since Version 1.6.20)

Optimize Runtime Capture
What it does
Skips the expensive runtime-modification pass whenever no tracking features are enabled and the prefab root has not changed, returning null immediately to avoid walking the prefab hierarchy.
Why enable it Turn this on when you are not tracking meshes, materials, added components, or child overrides—Crystal Save can bail out early instead of inspecting every component each frame.
Why you might leave it off Disable the optimization if you temporarily turn tracking toggles off for debugging or custom workflows but still need the engine to capture changes, because the optimization short-circuits the capture pipeline in that situation.
Enable Lookup Cache
What it does
Stores GameObject references by UniqueID inside SaveManager so subsequent lookups hit a dictionary instead of scanning the scene or falling back to string searches.
Why enable it
Helpful in large projects that call FindGameObjectByUniqueID frequently—after the first lookup, Crystal Save simply returns the cached reference.
Why you might leave it off Skip the cache if you want to minimise memory churn or insist on always resolving objects fresh, because the dictionary keeps references alive until they are explicitly uncached or the cache is cleared.
Enable Component Lookup Cache
What it does
Lets ComponentManager resolve ISaveable components from a dictionary keyed by UniqueID instead of running a linear search.
Why enable it Use it when scenes contain many saveable components; dictionary lookups keep restore times predictable even as the list grows.
Why you might leave it off Keep it disabled if you rarely query by component ID or want to avoid maintaining the additional dictionary, since the fallback search already handles small component counts cheaply.
Scan for Existing GameObjects
What it does
During SaveManager initialisation, finds every RememberGameObject in loaded scenes and registers it with the save system in one sweep.
Why enable it Best for static or hybrid levels where many saveable objects already exist in scenes—registration happens instantly after the manager boots.
Why you might leave it off
Disable the scan when almost everything spawns via factories or pooling; each RememberGameObject will instead self-register on Awake, avoiding an up-front scene sweep.
Existing Object Scan Batch Size
What it does
Limits how many discovered RememberGameObjects are registered per frame during the startup scan; zero or negative processes them all at once.
Why enable it Assign a positive batch size to spread registration across frames and prevent a noticeable hitch when large scenes contain hundreds of tracked objects.
Why you might leave it off Leave it at zero if you need every object registered before gameplay resumes—for example, when immediately loading a save right after startup.
Prefab Instantiation Batch Size
What it does Controls how many prefabs the load pipeline instantiates before yielding; zero or negative restores everything in one frame.
Why enable it Set a batch size to smooth out load spikes when restoring many prefabs—the coroutine yields after each batch to keep frame times stable.
Why you might leave it off Keep it at zero when you require every saved prefab to appear before gameplay resumes, even if that means a brief frame hitch.
Group Instantiation by Scene
What it does
Groups prefab instantiation by target scene, minimising calls to SceneManager.SetActiveScene while restoring saved objects.
Why enable it Great for multi-scene setups where bouncing the active scene repeatedly is expensive; Crystal Save restores each scene block in one pass.
Why you might leave it off Disable grouping if your gameplay logic depends on the exact original spawn order across scenes or you prefer to keep the active scene untouched during loads.
Component Apply Batch Size
What it does Batches how many component payloads are applied per frame during load; zero applies all components immediately.
Why enable it Use a positive batch to prevent deserialising thousands of components in one frame when restoring complex scenes asynchronously.
Why you might leave it off Leave it at zero when you need every component state applied before continuing (e.g., when immediately handing control back to the player).
Active State Apply Batch Size
What it does
Determines how many tracked GameObject active-state toggles run per frame when replaying saved activation data; zero applies them all at once.
Why enable it Batching is useful when thousands of objects need activation changes at load time—you can phase them in without freezing the main thread.
Why you might leave it off Set it to zero if consistent activation order is critical (for example, puzzle logic that expects every object to toggle within the same frame).
Sync Transforms After Prefab Load
What it does
Defers Physics.SyncTransforms() until every restored prefab finishes its second-phase setup, instead of syncing after each rigidbody.
Why enable it Ideal when restoring many physics objects—the engine avoids repeated sync calls and performs one consolidated update at the end of the load pass.
Why you might leave it off Keep it disabled if you depend on transforms being synchronised immediately after every rigidbody restore (for example, if gameplay logic samples physics state mid-load).
Prefab Pooling
Use Prefab Pooling
What it does
Spawns and recycles SaveablePrefab instances through Crystal Save’s pooling layer instead of instantiating and destroying them every time.
Why enable it Great for frequently spawned prefabs (projectiles, pickups)—pooling trims allocation spikes and allows pooled instances to be returned instead of destroyed.
Why you might leave it off
Disable pooling if your prefabs carry complex one-off state or you prefer Unity to destroy them outright to ensure full teardown each time.
You also want to disable it if you want to make use of the Restore Destroyed GameObject/Prefab feature
Default Prefab Pool Size
What it does Defines how many instances each pool keeps “warm” when pooling is enabled; pools are created with this target capacity.
Why enable it Raise the number when you expect bursts of spawns so the pool pre-instantiates clones during warm-up instead of at gameplay time.
Why you might leave it low Keep the value small if memory is tight or the prefab rarely appears; extra pooled clones reserve CPU/GPU resources even when idle.
Spawn Pooled Prefabs in Scene
What it does Moves spawned pooled instances into the currently active scene rather than leaving them under the global pool root.
Why enable it Use this when pooled objects must interact with scene-specific lighting, audio zones, or scene-based management scripts that rely on membership in the active scene.
Why you might leave it off Keep it disabled if you rely on pooled objects living in a persistent scene (for example, cross-scene managers) and do not want them moved automatically.
Pooled Prefab Spawn Batch Size
What it does When batching is enabled, limits how many pooled clones are created or destroyed per frame while resizing the pool; zero means adjust capacity immediately.
Why enable it Set a positive number to prevent hitches when pools need to warm up dozens of instances—capacity adjustments yield after each batch.
Why you might leave it off Leave it at zero if you prefer instant pool resizing (for example, when preparing in a loading screen where frame spikes are acceptable).
Enable Pooled Prefab Batching
What it does Switches pool capacity adjustments to a coroutine-based path that honours the batch size instead of resizing immediately.
Why enable it Activate this option when you want to combine pool resizing with the spawn batch size to spread work across frames during gameplay.
Why you might leave it off Disable batching when pool adjustments happen off the critical path (for example, in editor tooling or loading screens) and you prefer the simpler immediate logic.
Addresables Settings
This setting is only visible if you have the Unity Addressables Package installed. Install the Addressables Package with the Unity Package Manager.
Use Addressables
Enabling Addressables will tell the class AssetProvider to make use of Addressables instead of loading assets through Resources folder.
How to use Addressables?
Cloud Save Settings
Enable Cloud Save
If true, the SaveSystem will use a Cloud Save Solution instead of local saving methods.
Save Backend
Unity Cloud Save
Supabase
Self-hosted MySQL web server
Firebase
Default Auth Provider
Authentication method that will run before Cloud Save becomes available. Choose between:
Anonymous
Unity (Unity Player Account)
Username & Password
Google Play
Apple
Facebook
Steam
Comes with a basic integration for Steamworks.net. Please check SteamManager class in Assets/Plugins/CrystalSave/Runtime/Utility/Platform/SteamManager.cs
Cloud Save Transport
Some WebGL host solutions and Cloud Save providers require save-files in JSON format. Choose between JSON and Binary. Choosing JSON will convert Binary Save-File as JsonBase64 (quoted Base64). Please note: This conversion will not create a human-readable file.
Keep Local Mirror
Store screenshots, metadata, save-files locally even when Cloud Save is enabled.
Upload Screenshots & Metadata
Save also screenshots files and slot metadata to Unity Cloud Save
Auto-Login Unity Cloud Save
If enabled, SaveManager will auto-sign in to Unity Cloud Save on startup. Useful if Default Auth Provider is set to Anonymous. Turn off to handle login yourself via a custom UI.
Prefab Registry
Prefab Entries
Prefabs that get a Remember Prefab component attached, get automatically added to the Prefab Registry. Here you can Register, edit, validate or delete Prefabs manually. Registering a prefab manually if auto-registering fails, do it manually:
Click on your prefab
if not already added, add a Remember Prefab component
Click on the Copy ID button at the bottom of the component
Go to your Prefab Registry in the Crystal Save Settings and click on the plus button to add a new empty element.
Paste the ID into Unique ID and reference the Prefab via drag and drop
Button Auto-Register Prefab Assets
if auto-registering fails, do it automatically:
Click on the Auto-Register Prefab Assets button
This process can take up to several minutes depending on the number of prefabs in your project
Button Validate UniqueIDs
Wipes the Unique ID in the Prefab and checks Prefab Registry entries for missing or duplicate PrefabAssetID strings and offers to auto-fix problems.
Button Clean Duplicates
Removes duplicate prefab rows (same asset GUID) from the Prefab Registry, keep the first occurrence.
Deregister & Purge Prefabs
Removes all Crystal Save components (Remember components, Remember Prefab component and other hidden Crystal Save components) from all registered prefabs and wipes registry.
Tag Registry
Tags
Add, Edit or Remove Tags or Auto-Add Tags by clicking on the button Auto-Register Tags. This setting is likely never touched and only relevant if Auto Register Tags is disabled
Scene Object Registry
Scene Object Entries
Manage here scene objects and their prefab mappings for restoration. This Registry is relevant if you destroy GameObjects during runtime, and you want to restore these destroyed GameObjects with an identical prefab-version.
Requirements
Remember Component with added Remember GameObject component
Remember GameObject remembers Destroyed
Prefab representation shares the same UniqueID
Access the Unique ID by clicking in the Remember Component on Unique ID
Register a Scene GameObject
Create a prefab representation of the Scene Game object. Make sure they share the same Unique ID.
Copy the Unique ID and paste it in the Unique ID field.
Reference the prefab
After Scene Reload, you will see a linked symbol in the hierarchy window, this means this GameObject can now be restored.
Please note the settings Scenes to Scan, Use Prefab Link Fallback and Auto-Populate Scene Objects are currently not working as expected and will get fixed in a later version.
Last updated