← Back to Projects
Unreal Engine

SaveVault Pro

Paid Unreal Engine plugin extending SaveVault Core with async IO, AES-128 encryption, version migration, auto-save, cloud save, and server-authoritative multiplayer.

C++Unreal EngineBlueprintsGame DevelopmentMultiplayer

Overview

SaveVault Pro is the paid extension of SaveVault Core — a production-grade save system for Unreal Engine (UE 4.26–5.7). It builds directly on top of the free Core module as a drop-in upgrade, adding every feature a shipped game demands: AES-128 encryption to prevent save tampering, async IO to eliminate game-thread frame stalls, a versioned migration chain to keep player saves valid across patches, and server-authoritative multiplayer coordination. If SaveVault Core is already integrated, upgrading is a folder copy and recompile — no existing save code changes required.

Key Features

  • Async IO — file operations dispatched to a thread pool worker with game-thread delegates (OnSaveComplete, OnLoadComplete); in-flight futures drained on shutdown with no writes to freed memory
  • XOR + AES-128 encryption — applied post-serialization, pre-write; mode and key configured once in Project Settings with no call-site changes; wrong key produces a CRC mismatch on load
  • Version migration chainFSVMigrationChain runs registered lambda steps in ascending order on load when the on-disk version is behind, with an OnMigrate Blueprint event for UI-side fixup
  • Auto-save subsystemUSVAutoSaveSubsystem fires SaveToSlotAsync on a configurable interval and on every level transition, with TriggerAutoSaveNow() for checkpoint-style saves
  • Cloud save interfaceISVCloudBackend pure C++ interface for Steam, EOS, or any custom backend; ships with a FNullCloudBackend no-op stub for test wiring
  • Server-authoritative multiplayerUSVNetworkSaveComponent on AGameState coordinates saves via reliable RPCs; save data never crosses the wire, only slot names and result codes do
  • Save diff editor tool — Editor-only USVSaveDiffTool compares two slots field-by-field via TFieldIterator<FProperty> for validating migration steps or inspecting patch-to-patch changes

Technical Decisions

Async serialization keeps UObject access on the game thread (a hard UE requirement) while offloading only the raw file write to a thread-pool worker — this is the only safe split point. Encryption is applied post-serialization so the CRC in the header covers the encrypted payload, meaning a wrong key manifests as a CRC mismatch and reuses the same corrupt-file error path with no additional error handling. The ISVCloudBackend interface is intentionally C++ only with non-dynamic delegates, since cloud SDK callbacks always fire on background threads and require explicit game-thread marshalling that Blueprint’s dynamic delegates would obscure. The multiplayer component is constrained to AGameState rather than AGameMode because AGameMode is server-only and non-replicated — attaching Server RPCs to it causes a CDO construction crash at PIE startup.