Configuration reference

Every setting, what it does and what it costs — identity, storage, limits, envelope, versioning, security, autosave, checkpoints, cloud and diagnostics.

Reference NexusForge Persistence 0.2.0 Updated

Identity#

SettingMeaningNotes
ProductNamespaceReverse-DNS product key, e.g. com.yourstudio.yourgameRequired. Every path and cloud key starts with it, so two games can never collide.
EnvironmentNamedevelopment, staging or productionKeeps a development build from writing production data. Defaults to development, so a build that forgets it cannot damage live saves.

Storage#

SettingDefaultMeaning
RootFolderNamenexusforgeFolder beneath the platform's persistent data path
MaxPathLength240Resolved paths longer than this are refused before any I/O
BackupRetentionCount1Previous versions kept per slot
VerifyWrittenPayloadtrueRead a save back after writing, so silent corruption becomes a reported failure
OffloadWritesToThreadPoolfalseMove everything after the projection off the caller's thread
OrphanedTempMaxAge / QuarantinedFileMaxAge1 h / 30 dWhen the janitor may tidy leftovers

Limits#

SettingFramework defaultMeaning
MaxSaveSizeBytes256 MB (asset default 32 MB)Largest save read or written
MaxMetadataSizeBytes64 KB (asset default 4 MB ceiling)Metadata block ceiling, read on every listing
MaxIdentifierLength64Caps slot ids, object keys and path segments
MaxEnumerationResults4096Entries a listing will return
MaxDecompressionRatio512 (asset default 64×)Stops a decompression bomb before memory is allocated

Envelope and versioning#

SettingDefaultMeaning
IntegrityAlgorithmSHA-2561 CRC32, 2 SHA-256, 3 HMAC-SHA256 (keyed)
UnknownDataPreserveAndReportPreserve, PreserveAndReport, Reject
AllowForwardCompatibleReadfalseLoad a save whose schema is newer than this build
MaxMigrationChainLength32Refuses an absurd migration chain rather than looping

Security#

SettingDefaultMeaning
EncryptionAlgorithm0 (none)1 = AES-256-CBC with HMAC-SHA256 (encrypt-then-MAC)
CompressionAlgorithm0 (none)2 = Deflate, applied before encryption
KeyId0Which key wrote a save; never a secret

Keys come from ISaveKeyProvider at runtime. Nothing in configuration is secret, and no key is ever stored in an asset.

Autosave, checkpoints and cloud#

GroupSettings
AutosaveEnabled (false), SlotId (autosave), DebounceDelay (2 s), MaximumDelayBeforeSave (60 s), MinimumIntervalBetweenWrites (10 s), BackupRetentionCount (1), SaveOnPauseRequested (true)
CheckpointsSlotPrefix (checkpoint), MaxCount (5), MinimumInterval (1 s)
CloudEnabled (false), ProviderName, ConflictPolicy (KeepNewest), PreserveConflictCopies (true), OfflineQueueEnabled (true), MaximumQueuedUploads (32), retry policy (4 attempts, 500 ms doubling to 30 s, 10 % jitter)
DiagnosticsMinimumLogLevel, gated before an event is constructed

What the Editor screen cannot configure#

  • Storage root folder name and path ceiling (rarely changed; available in code).
  • Migration registrations — they are code, because each one is a reviewed data transformation.
  • Per-slot request options such as playtime and custom metadata, which belong to your save calls.
  • Encryption and authentication keys — they must come from your game at runtime and must never live in an asset.

Next#

Something wrong on this page? Every page here describes behaviour that is checked in the repository. If a page and the package disagree, the package wins.

Report a documentation problem · Frequently asked questions · Troubleshooting