Slot-based save and load with its own JSON engine and zero external dependencies. Atomic writes, per-slot backups, optional encryption, and scene-object state from a component you tick.Pipeline-agnostic: no shaders/materials; runs unchanged on Built-in, URP and HDRP. Zero dependencies (own JSON engine, no Newtonsoft.Json). Optional converter modules (uGUI, TextMeshPro, Physics, Animation, Particles, Audio) compile only if their Unity module is present. Mono and IL2CPP scripting backends. WebGL NOT supported in 1.0.0 (needs atomic file writes + Task async). Unity 6000.2+.Beasty Save System saves and loads your game without dragging anything else into your project.NO DEPENDENCIESIt 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 CHECKEvery 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 loaded = BeastySave.Load("slot1", settings); if (loaded.Success) Use(loaded.Value); else if (loaded.BackupAvailable) BeastySave.RestoreBackup("slot1", settings);SCENE STATE WITHOUT WRITING A SERIALIZERDrop 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 DEFAULTAtomic 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.CUSTOMIZABLEThe 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) 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/Zero external dependencies: own JSON engine, no Newtonsoft, no DLLs.Slot API: Save, Load, LoadInto, SaveAsync, LoadAsync, Exists, Delete, ListSlots, Typed results (SaveResult / LoadResult) with an error code and message. The API never throws at you.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: inspectors and a slot browser (list, inspect, delete, restore a backup).Mono and IL2CPP, verified against a real IL2CPP build. Full C# source included. Test suite included.Yes. AI was used throughout the process as an assistant under my direction: drafting and refactoring implementation code and tests, auditing the codebase for bugs, and drafting documentation and store text. Every change was reviewed by me and validated by a test suite that I run in Unity. No AI-generated art, audio or 3D content ships in this package: it contains no art assets at all.


