Workes.SaveSystem
1.0.1
dotnet add package Workes.SaveSystem --version 1.0.1
NuGet\Install-Package Workes.SaveSystem -Version 1.0.1
<PackageReference Include="Workes.SaveSystem" Version="1.0.1" />
<PackageVersion Include="Workes.SaveSystem" Version="1.0.1" />
<PackageReference Include="Workes.SaveSystem" />
paket add Workes.SaveSystem --version 1.0.1
#r "nuget: Workes.SaveSystem, 1.0.1"
#:package Workes.SaveSystem@1.0.1
#addin nuget:?package=Workes.SaveSystem&version=1.0.1
#tool nuget:?package=Workes.SaveSystem&version=1.0.1
Workes.SaveSystem
Workes.SaveSystem is an engine-neutral .NET save system for games and applications that need registered state providers, disk saves, backups, metadata, and save-format migrations.
The package is not tied to Unity, Godot, or another engine. Your application chooses the persistent save path and serializer, then SaveManager<TIdentity> coordinates provider capture, persistence, loading, validation, recovery, and migration.
Highlights
- Register typed state providers with stable save keys and schema versions.
- Save and load named slots using string or custom identity types.
- Use readable JSON by default, compact JSON when desired, or serializer wrappers for compression and transforms.
- Rotate backups and recover from interrupted writes.
- Store typed application metadata for save menus without loading provider files.
- Migrate old provider payloads through format-neutral data nodes.
- Distinguish old saves from missing provider files through persisted provider manifests.
- Extend serialization, metadata, transforms, migrations, provider lifecycle, and default-state behavior.
Installation
Install from NuGet:
dotnet add package Workes.SaveSystem --version 1.0.1
Or add a package reference:
<PackageReference Include="Workes.SaveSystem" Version="1.0.1" />
The package targets .NET Standard 2.1 and currently depends on Newtonsoft.Json for the built-in JSON serializer.
Quick Example
using Workes.SaveSystem;
var serializer = new JsonSaveSerializer();
var manager = SaveManager<string>.CreateDefault(
serializer,
saveRootPath: "Saves");
var playerProvider = new PlayerSaveProvider();
manager.RegisterProvider(playerProvider);
manager.ValidateRegistrations();
manager.SaveToDisk("slot-1");
playerProvider.Current = new PlayerState();
manager.LoadFromDisk("slot-1");
public sealed class PlayerState
{
public string Name { get; set; } = string.Empty;
public int Level { get; set; }
}
public sealed class PlayerSaveProvider : ISaveProvider<PlayerState>
{
public string SaveKey => "player";
public int SchemaVersion => 1;
public int LoadPriority => 0;
public PlayerState Current { get; set; } = new PlayerState
{
Name = "Rook",
Level = 5
};
public PlayerState CaptureState() => Current;
public void RestoreState(PlayerState state)
{
Current = state;
}
}
See the Quick Start for the beginner-first walkthrough.
Documentation
Start here:
Focused guides:
- Serialization
- Save Operations
- Save Metadata
- Backups And Recovery
- Migrations
- Extending The Save System
- Unity And Godot Integration
See the Changelog for release history and migration-sensitive changes.
Companion Packages
The core package ships JSON and does not reference MessagePack. Compact MessagePack saves are handled by the optional companion package:
Use JSON when readable save files are useful. Use compressed JSON for smaller files without an additional dependency. Use the MessagePack companion package when compact binary saves are more important than direct readability.
License
Workes.SaveSystem is available under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Newtonsoft.Json (>= 13.0.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Workes.SaveSystem:
| Package | Downloads |
|---|---|
|
Workes.SaveSystem.MessagePack
An optional companion package for Workes.SaveSystem, designed to add a MessagePack serializer. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.1 | 143 | 8/11/2026 |
| 1.0.0 | 171 | 6/24/2026 |
| 1.0.0-preview.3 | 86 | 6/24/2026 |
| 1.0.0-preview.1 | 72 | 6/22/2026 |
1.0.1 adds first-class CHANGELOG.md package documentation, packs the changelog into the NuGet package root alongside README.md, and adds focused public documentation for quick start, configuration, providers, save operations, metadata, migrations, extension points, serialization, backups, and engine integration.