Ultimate Progression Framework System
v1.0.0

Storage model

Upgrade SO and Currency SO persist independently under keys derived from their authored identities.

AssetStored dataAutomatic save points
Upgrade SOSerialized Big Upgrade structure and Small Upgrade completion stateSuccessful PerformUpgrade
Currency SOCurrent Int or Float balanceSetValue, ModifyValue and ResetToDefault
Economy HandlerNo independent wallet saveUses the referenced Currency and Upgrade saves
Info ProviderAuthored presentation data in the assetNot a player progression save

Recommended runtime lifecycle

  1. 01
    Author stable assets

    Finalize unique Upgrade and Currency identities before release.

  2. 02
    Load

    Load saved values at the initialization point defined by your project.

  3. 03
    Read and modify

    Use public APIs instead of directly editing internal serialized state.

  4. 04
    Save automatically

    Standard progression and balance mutations save immediately.

  5. 05
    Reset intentionally

    Expose reset actions only in controlled development or player-reset flows.

PlayerPrefs Viewer

Inspect and validate stored values during development.

UPFS PlayerPrefs Viewer window
Use the included Editor viewer to inspect development saves without building temporary debug UI.

Renaming and migration

Asset names and configured names can participate in save keys and economy matching.

  • Do not rename a released Upgrade Name without migrating its stored JSON to the new key.
  • Do not rename a released Currency Name without migrating its typed PlayerPrefs entry.
  • Changing Currency type from Int to Float or Float to Int should be treated as a migration.
  • Keep Economy currency definition names synchronized with Wallet Currency names.

Integrating another save system

Use UPFS public state and methods as the boundary for a project-specific persistence adapter.

For projects that require cloud synchronization, profiles or encrypted files, centralize the integration in a dedicated adapter rather than spreading persistence logic across UI and gameplay scripts.

Define ownership clearly: either let UPFS PlayerPrefs remain authoritative or make the external save layer authoritative and coordinate loading before gameplay begins.