View on Asset Store (opens in new tab)
Package details
- Latest version
- 1.2.0
- Last updated
- First released
- Unity version
- 6000.3.12 or later
- Package size
- 79 KB
- Files
- 21
- Views in the past week
- 7
Price tracking
- Last checked
- Tracked since
- Lowest recorded
- $17.49 on
Keywords
OSL Secure Save
A UGS Cloud Save write-validation workflow with a durable local pending-write queue, bounded retry and dead-letter recovery, and server-side type, range, delta, and operation rules.
Affiliate link · Purchases support this site
Price history
Last 6 months
USDAsset preview
1 / 6
OSL Secure Save screenshot 1
About this asset
OSL Secure Save is for Unity Gaming Services projects that want Cloud Save writes checked outside the game client. Calls made through `OSLSaveManager` go to the included Cloud Code script, where per-key type, range, delta, and operation rules are evaluated before data is written.
Why / Key Benefits
- Move rule checks off the client: Evaluate configured write rules in UGS Cloud Code before committing through the package workflow.
- Control each key: Define expected type, minimum and maximum values, maximum additive delta, and allowed `AddOnly`, `Replace`, or `Both` operations.
- Configure without a custom server: Deploy the included `osl_master_save.js` endpoint and use UGS services instead of hosting a separate backend.
- Change rules independently: Load `osl_secure_save_rules` from Remote Config when available, with an embedded fallback rule set.
- Recover delivery failures: Persist package API writes through an authenticated, versioned local queue; retry transient failures and preserve exhausted or permanent failures for an explicit recovery decision.
Typical Workflow
1. Define validation rules in the OSL Rule Builder.
2. Deploy `osl_master_save.js` to UGS Cloud Code.
3. Optionally publish the generated rule JSON as `osl_secure_save_rules` in Remote Config.
4. Write through `OSLSaveManager`; Cloud Code validates and then stores accepted data in Cloud Save.
5. Read the resulting values from the Default access class through the package API.
Requirements
- Minimum Unity Version: Unity 2021.3 LTS
- Tested Unity Versions: Unity 2021.3.45f2 and Unity 6000.3.12f1 (package-isolation import and compile)
- Required UGS services/packages: Core, Authentication, Cloud Code, and Cloud Save
- Optional: UGS Remote Config for remotely managed rule JSON
Limitations / Scope
- Validation applies to writes sent through the package's Cloud Code path. Because the included script stores data in Cloud Save's Default access class, the host project must avoid or separately restrict direct client write paths.
- This is not a general local save-file system and does not provide complete anti-cheat coverage.
- The local retry queue uses separate encryption and integrity keys, atomic replacement, last-known-good backup recovery, and corrupted-file quarantine. It is a recovery mechanism and casual-tamper deterrent, not a secure server-side data store.
- The built-in key provider preserves compatibility with existing queues. Projects that require platform-backed key storage can inject `IOSLQueueKeyProvider` before first accessing `OSLSaveManager.Instance`.
Documentation & Support
From the publisher's Asset Store listing.
Technical details
- Write path: `OSLSaveManager` calls `CloudCodeService.CallEndpointAsync("osl_master_save")`; accepted values are written by the JavaScript endpoint through `cloudSaveApi.setItem()`.
- Read path: Package reads use `CloudSaveService` directly and read the Default access class, matching the namespace written by the Cloud Code script.
- Validation rules: Per-key rules check data type, minimum/maximum value, maximum delta for additive operations, and allowed `AddOnly`, `Replace`, or `Both` operations.
- Rule source: The endpoint attempts to load `osl_secure_save_rules` from Remote Config and falls back to its embedded JSON rules when Remote Config is unavailable.
- Client API: `OSLSaveManager` exposes typed helpers including `AddInt`, `SetInt`, `SetString`, `SetBool`, and `GetAsync<T>`.
- Queue persistence: Each mutation is serialized with invariant value formatting, authenticated with HMAC-SHA256, encrypted with AES-CBC using a random IV, and committed through a temporary file plus primary replacement. The previous primary is retained as the last-known-good backup.
- Recovery: Unreadable primary and backup files are moved to timestamped quarantine paths. Legacy 1.1.x queue files migrate to the versioned envelope, and an interrupted temporary file does not replace a valid primary.
- Retry behavior: Transient errors retry up to five failed delivery attempts by default. Validation, permanent, configuration, serialization, and retry-exhausted operations are persisted as dead letters until the host retries or explicitly removes them.
- Key provider: `IOSLQueueKeyProvider` separates encryption and integrity key responsibilities. `OSLSaveManager.CreateWithQueueKeyProvider` must be called before first accessing the default manager instance.
- Boundary: The package validates its Cloud Code write path. It does not itself configure UGS Access Control to prevent other client code from writing directly to the Default access class.
Compatibility
| Unity version | Built-in | URP | HDRP |
|---|---|---|---|
| 6000.3.12f1 | Compatible | Compatible | Compatible |
Supports Built-in, URP, and HDRP.
No renderer-specific assets are required.
Some runtime features may require Unity Gaming Services packages depending on your integration setup.
As listed on the Asset Store.