View on Asset Store (opens in new tab)
Package details
- Latest version
- 1.1.0
- Last updated
- First released
- Unity version
- 2022.3.30 or later
- Package size
- 457 KB
- Files
- 130
- Views in the past week
- 3
Price tracking
- Last checked
- Tracked since
- Lowest recorded
- $9.99 on
Keywords
Beasty Save System
Slot-based save and load with its own JSON engine and zero external dependencies. Atomic writes, backups, optional encryption, scene state from a component you tick — local files or Firebase cloud.
Affiliate link · Purchases support this site
Price history
Last 6 months
USDAsset preview
1 / 3
Beasty Save System screenshot 1
About this asset
Beasty Save System saves and loads your game without dragging anything else into your project.
NO DEPENDENCIES
It ships its own JSON engine. No Newtonsoft.Json, no third-party DLL, nothing to version-conflict with what you already have. Import it into an empty project and it compiles.
A RESULT YOU CAN CHECK
Every call hands back a typed result instead of throwing. A save that failed says so — it does not look like a save that worked. That one detail is the difference between a player who sees "could not save" and a player who closes the game believing their progress is safe.
var settings = new BeastySaveSettings { Folder = "Saves", Extension = "save" };
SaveResult saved = BeastySave.Save(myData, "slot1", settings);
if (!saved.Success) Debug.LogError(saved.Message);
LoadResult<MyData> loaded = BeastySave.Load<MyData>("slot1", settings);
if (loaded.Success) Use(loaded.Value);
else if (loaded.BackupAvailable) BeastySave.RestoreBackup("slot1", settings);
SCENE STATE WITHOUT WRITING A SERIALIZER
Drop a BeastySaveable on an object and tick the components you want persisted — including inactive objects, and several components of the same type on one object. A BeastySaveManager in the scene saves and loads all of them at once, straight from a uGUI button. Objects you spawn at runtime get a stable id of your choosing, so a chest you instantiated finds its own state again next session.
It saves what Unity itself would serialize: public and [SerializeField] fields, including private ones inherited from a base class, plus arrays, List, Dictionary, HashSet, SortedSet, Queue and Stack, and the Unity value types (Vector, Quaternion, Color...).
SAFE BY DEFAULT
- Atomic writes: the file is written to a temp and swapped in, so a crash mid-write cannot leave half a save behind.
- Backups: the last good version of each slot is kept, and a corrupted slot can be restored from it. Saving on top of a damaged slot does not destroy the recoverable copy.
- Strict loading is all-or-nothing: if any component fails, nothing is applied and the world is left exactly as it was. Tolerant loading skips the offending field, reports it in Warnings, and loads the rest — the escape hatch for when you rename a field mid-production.
- Optional AES-256 encryption with a random IV and a key derived with SHA-256. It is obfuscation against casual save editing, not real security, and the package says so out loud: the key ships inside your game.
- And it tells you what it did: every save, load, delete and restore logs its slot, size and timing — with a Verbose mode for chasing bugs — in the editor and development builds, silent by default in a release build.
LOCAL FILES OR THE CLOUD
Saves go to local files by default — or to a database: pick a storage backend from a dropdown on the Beasty Save Manager. The Firebase modules (Cloud Firestore and Realtime Database) compile only when the Firebase SDK is in the project — nothing to set up beyond importing it — sign the player in anonymously, and store each user's saves under their own id. The same slot API works against any backend, async-first: a synchronous call on a cloud backend comes back as a typed error instead of blocking, and the manager's UnityEvent entry points route asynchronously on their own. Want your own endpoint instead? Implement IBeastySaveStorage and register it, or use SaveToJson / LoadFromJson and ship the JSON wherever you like.
CUSTOMIZABLE
The converter layer is open: write a converter for your own type, or replace the one for a Unity type, and the pipeline picks it up. The settings object (folder, extension, encryption, strict mode, storage backend) is passed per call, so an autosave and a manual save can behave differently in the same project.
Genre-agnostic — it persists C# objects and scene components, so it fits an RPG, a survival game, a visual novel or an editor tool equally well. It is the same save system that ships inside Beasty Visual Novel, extracted and usable on its own.
Documentation: https://bauflowbeasty.github.io/
From the publisher's Asset Store listing.
Technical details
- Zero external dependencies: own JSON engine, no Newtonsoft, no DLLs.
- Slot API: Save, Load, LoadInto, SaveAsync, LoadAsync, Exists, Delete, ListSlots, ReadMeta, RestoreBackup — each slot utility also available async (ExistsAsync, DeleteAsync, ListSlotsAsync, ReadMetaAsync, RestoreBackupAsync).
- Typed results (SaveResult / LoadResult<T> / SaveResult<T>) with an error code and message. The API never throws at you.
- Pluggable storage backends: local files by default, or pick another backend from a dropdown on the manager (BeastySaveSettings.StorageId). Custom backends implement IBeastySaveStorage and register in BeastySaveStorageRegistry.
- Firebase cloud modules — Cloud Firestore and Realtime Database — compiled only when the Firebase SDK is present, with automatic anonymous sign-in via Firebase Auth. Saves are stored per user under users/{uid}/saves/{slot}; the editor keeps the required scripting defines in sync automatically.
- User identity seam (IBeastyUserProvider / BeastySaveUsers) decides whose saves these are; ScopeByUser also scopes local files per user.
- JSON without files: SaveToJson / LoadFromJson (full integrity envelope) and ToJson / FromJson (clean payload) for custom endpoints.
- Save Mode on the manager: Synchronous or Asynchronous for the UnityEvent-friendly SaveAll / LoadAll / DeleteSlot; cloud backends always run async, and a sync call on an async-only backend returns a typed BackendRequiresAsync error instead of blocking.
- Atomic writes (temp file + swap) and per-slot .bak backups with recovery.
- Optional AES-256 encryption: random IV, key derived via SHA-256, plaintext files rejected when encryption is on. Obfuscation, not real security.
- Strict loading (all-or-nothing rollback across the scene) or tolerant loading (skip the broken field, report it, keep the rest).
- BeastySaveable component: persist the components you tick, including inactive objects and several components of the same type on one GameObject.
- BeastySaveManager: SaveAll / LoadAll for the whole scene, callable from a uGUI button, plus Register(go, id, components) for objects spawned at runtime.
- Serializes public and [SerializeField] fields (including inherited private ones), arrays, List, Dictionary, HashSet, SortedSet, Queue, Stack and Unity value types.
- Optional converter modules, each gated behind the Unity module it needs so a project without it still compiles: audio, uGUI, particles, animation, TextMeshPro, Physics 2D and 3D.
- Custom converters: implement your own for any type, or override a built-in one.
- Editor: a status-card inspector on the manager (active backend, user session, last save/load result) with the two decisions — Storage and Save Mode — up front, a Save Manager window grouped by role (Backend, Location, Security, Reliability, Versioning, Logging) with contextual help, and a slot browser (list, inspect, delete, restore a backup).
- Logging you control: an Auto / On / Verbose / Off dropdown on the manager (Auto = on in the editor and dev builds, off in release), every line tagged [BeastySave], and a pluggable sink to route logs to your own console or a file. Results report BytesWritten and MigratedFrom for your own UI.
- Mono and IL2CPP, verified against a real IL2CPP build. Compiles warning-free on every Unity 6 generation, including 6.5.
- Full C# source included. Test suite included.
Compatibility
| Unity version | Built-in | URP | HDRP | Custom |
|---|---|---|---|---|
| 6000.2.14f1 | Compatible | Compatible | Compatible | Compatible |
| 2022.3.30f1 | Compatible | Compatible | Compatible | Compatible |
Pipeline-agnostic: no shaders/materials; Built-in, URP and HDRP. Zero dependencies (own JSON engine,
no Newtonsoft.Json). Optional modules compile only when their Unity module or SDK is present:
converters (uGUI, TextMeshPro, Physics, Animation, Particles, Audio) and Firebase cloud backends
(Firestore, Realtime Database). Mono and IL2CPP. WebGL NOT supported. Unity 6000.2+.
As listed on the Asset Store.