OSL Easy Patcher View on Asset Store (opens in new tab)

Package details

Latest version
1.4.0
Last updated
First released
Unity version
6000.3.12 or later
Package size
352 KB
Files
30
Favorites
3
Views in the past week
6

Price tracking

Last checked
Tracked since
Lowest recorded
$19.99 on

Keywords

OSL Easy Patcher

by OngsooLabs (opens in new tab)

No ratings yet

A lightweight Unity patcher for changed-file downloads, verified `.part` resume with safe Range fallback, optional compressed manifests, and cloud-SDK-free upload workflows.

Price $39.99

Buy on Asset Store (opens in new tab)

Affiliate link · Purchases support this site

Price history

Last 6 months

USD
Price history for OSL Easy Patcher, 6 months Current $39.99; lowest $19.99; highest $39.99 in this period. $0 $25 $50 Jul Aug Sep Oct Nov Version 1.1.0 released 15 Jun 2026 v1.1.0 Version 1.2.0 released 14 Jul 2026 v1.2.0 Version 1.2.2 released 24 Aug 2026 v1.2.2 Version 1.4.0 released 4 Sep 2026

Asset preview

1 / 6

OSL Easy Patcher screenshot 1

OSL Easy Patcher screenshot 1

About this asset

OSL Easy Patcher is for Unity teams that need runtime content updates without adopting a full Addressables workflow. It compares a file manifest, downloads only missing or changed files, and can continue a partial transfer instead of restarting a large file when the host supports HTTP Range requests.

Repository Release Status

- Version `1.4.0` adds runtime download hardening, compressed manifests, and S3-compatible Editor uploads.

- The package export and date-confirmed repository release are complete as of 2026-09-03. This text does not claim Asset Store submission, approval, or public availability.

Why / Key Benefits

- Reduce repeat downloads: Compare local files with `version.json` and transfer only files that are missing or have changed.

- Continue interrupted files safely: Resume verified `.part` files when the HTTP host honors Range; restart safely when it returns full content, the object changes, or it reports `416`.

- Keep final files verified: Stream SHA-256 and optional HMAC validation before atomically promoting a partial download to its final name.

- Retry the failed file: Use up to three attempts per file instead of restarting the whole patch session.

- Choose your upload target: Publish from the Unity Editor to a Local Folder, Google Cloud Storage, AWS S3, Unity CCD, or Azure Blob Storage.

- Reduce manifest transfer size: Keep plain `version.json` for compatibility and optionally add GZip/Brotli sidecars with runtime fallback.

- Use S3-compatible storage: Configure an optional path-style custom endpoint for Editor uploads while setting the player-facing download URL separately.

- Avoid bundled cloud SDKs: The cloud uploaders use REST-based integrations rather than shipping the corresponding cloud SDKs in the package.

- Add optional payload protection: AES-256-CBC encryption, SHA-256 hashes, and HMAC-SHA256 checks help protect content and detect corruption or modification.

Typical Workflow

1. Select the patch files in the Unity Editor uploader.

2. Generate `version.json` and optional compressed sidecars, then publish to one of the five upload workflows.

3. Point `OSLPatchManager` or `OSLPatchUIController` at the player-facing HTTP base URL and choose a manifest preference.

4. At runtime, compare the manifest, download changed files, verify them, and initialize your `IOSLLoader`.

Requirements

- Minimum Unity Version: Unity 2021.3 LTS

- Tested Unity Versions: Unity 2021.3.45f2 and Unity 6000.3.12f1 (EasyPatcher EditMode tests and package-isolation import/compile)

- Scripting runtime: .NET Standard 2.1

- Resumable transfer: Range support enables resume; hosts that ignore Range restart the affected file safely.

- Optional UI: TextMeshPro or legacy Unity UI

Limitations / Scope

- This package transfers and verifies files; your `IOSLLoader` determines how downloaded content is loaded.

- `StartDownloadAsync(CancellationToken)` is additive; the existing parameterless call remains available. Cancellation and a stalled transfer preserve only the safe partial state available for a later retry.

- Compressed manifest sidecars are optional; plain `version.json` remains the compatibility fallback.

- A custom S3-compatible endpoint configures uploads only and does not automatically configure a public player download URL.

- Client-side encryption and HMAC reduce casual inspection and detect mismatches, but do not make distributed game content secret from a determined attacker.

Documentation & Support

https://ongsoolabs.github.io/

From the publisher's Asset Store listing.

Technical details

- Runtime architecture: `OSLPatchManager` compares `version.json` with the local manifest and cached files, while `IOSLLoader` keeps content loading separate from transfer.

- Changed-file selection: Missing files and files with mismatched hashes are downloaded; unchanged verified files remain cached.

- Resume and retry: Partial bytes are retained in `.part` files and resumed with HTTP Range plus ETag-preferred or Last-Modified `If-Range` validators. A `206` response continues the transfer; Range-unsupported or changed `200` responses and `416` restart safely. Each file keeps the existing retry limit, cancellation is available through `StartDownloadAsync(CancellationToken)`, and a stall aborts the active request.

- Integrity and protection: SHA-256 verifies file contents. Optional AES-256-CBC with PKCS7 protects payload contents, and optional HMAC-SHA256 checks the manifest-declared HMAC value on the client.

- Upload targets: Local Folder, Google Cloud Storage, AWS S3, Unity CCD, and Azure Blob Storage. Cloud uploaders use REST or HTTP integrations and do not bundle the corresponding cloud SDKs.

- Manifest: `version.json` tracks file name, size, SHA-256 hash, encryption state, and optional HMAC value. The uploader can add raw `version.json.gz` and `version.json.br` sidecars while retaining plain JSON. Runtime `Auto` preference tries Brotli, GZip, then plain JSON; local `local_version.json` remains plain. Remote and decompressed manifest data are limited to 8 MiB before parsing.

- S3-compatible endpoint: Leaving the custom endpoint empty retains AWS virtual-host addressing. An absolute custom HTTP(S) endpoint uses path-style bucket addressing, signs the final authority/path with SigV4, and rejects credentials, queries, fragments, and traversal segments before network I/O.

- Compatibility boundary and release status: Manifest compression does not change manifest fields or patch payload URLs. The `1.4.0` repository package release (2026-09-03) retains `StartDownloadAsync()` while adding a `CancellationToken` overload. Implementation, test, package-isolation evidence, and `.unitypackage` export are complete. Asset Store submission, review, approval, and public release are not claimed.

- Test assets: `PatchTestRunner` contains five local end-to-end scenarios, including corruption and hash-mismatch recovery.

- Automated tests: Unity `6000.3.12f1` EasyPatcher EditMode passed `87/87` (failed/skipped `0`), covering compression/fallback plans, sidecar generation, legacy settings, S3 URI encoding, invalid endpoint rejection, path/root/encoded traversal, `200`/`206`/`416` and `Content-Range`, ETag/Last-Modified `If-Range`, cancellation/stall, SHA/HMAC-mismatch non-exposure of final/`.part`/`.meta`, and atomic promotion/local-manifest injected `IOException` cases.

Compatibility

Render pipelines supported in each Unity version
Unity version Built-in URP HDRP
6000.3.12f1 Compatible Compatible Compatible

OSL Easy Patcher is SRP-independent and works with the Built-in Render Pipeline, URP, and HDRP. Its core features focus on version checking, file download, manifest validation, caching, and AssetBundle loading, with no pipeline-specific rendering dependency. The included demo UI uses IMGUI/OnGUI and optional UI components.

As listed on the Asset Store.