Quick Start Guide
A practical, step-by-step walkthrough of creating your first release manifest, declaring a contract, and executing an update rehearsal.
Table of Contents
- Scenario Overview
- Step 1: Register Release Manifests
- Step 2: Define a Content Contract
- Step 3: Configure Network Faults (Optional)
- Step 4: Run the Rehearsal in the Control Room
- Step 5: Review Evidence & Results
Scenario Overview
In this guide, we will rehearse updating an imaginary game from Release 1.0.0 to Release 2.0.0:
- Release 1.0.0: Shipped with a main menu asset named
MainMenu_v1. - Release 2.0.0: Modifies
MainMenuwith high-resolution textures and introduces a new character prefabHero_Knight. - Goal: Verify that a standalone player installed with 1.0.0 can cleanly download the 2.0.0 update over a simulated high-latency connection without crashing or corrupting its cache.
Step 1: Register Release Manifests
Release Manifests freeze a release’s metadata, catalog path, and bundle hashes.
- Open
Tools > PatchProof > Release Registry. - Click “New Release Manifest”.
- Fill in the details for v1.0.0:
- Release ID:
v1.0.0 - Platform:
WindowsStandalone - Catalog Path: Select the build output catalog file (
catalog_1.0.0.jsonor.bin). - Content Folder: Select the folder holding the 1.0.0 bundles.
- Executable Path: Path to your compiled 1.0.0 Windows executable (
Game_v1.0.0.exe).
- Release ID:
- Click “Save & Hash Manifest”. PatchProof computes cryptographic SHA-256 digests for all referenced files to ensure immutability.
- Repeat the process to create the v2.0.0 (Candidate) manifest pointing to your newly built candidate bundles.
Step 2: Define a Content Contract
Content Contracts ensure that critical assets exist in the candidate release and instantiate correctly.
- In the Release Registry, switch to the Content Contracts tab.
- Click “Create Contract”.
- Name it
CoreGameContract. - Add target assets:
- Key:
Prefabs/MainMenu→ Expected Type:UnityEngine.GameObject - Key:
Prefabs/Hero_Knight→ Expected Type:UnityEngine.GameObject - Key:
Audio/MenuTheme→ Expected Type:UnityEngine.AudioClip
- Key:
- Click “Validate Contract Against Candidate”. PatchProof parses the candidate catalog offline to confirm that all declared keys are present.
Step 3: Configure Network Faults (Optional)
To test how your game recovers from a network interruption:
- Open
Tools > PatchProof > Origin & Fault Profiles. - Click “New Fault Profile”.
- Name the profile
MobileSubwayDropout. - Add a rule:
- Fault Type:
ConnectionDrop - URL Pattern:
*.bundle - Trigger Byte Offset:
131072(Drops connection after 128 KB transferred).
- Fault Type:
- Check “Enable Profile”.
Step 4: Run the Rehearsal in the Control Room
- Open
Tools > PatchProof > Rehearsal Room. - Configure your test run:
- Baseline Release:
v1.0.0 - Candidate Release:
v2.0.0 - Content Contract:
CoreGameContract - Client Mode:
Instrumented Binary - Fault Profile:
MobileSubwayDropout
- Baseline Release:
- Click “Run Full Rehearsal Matrix”.
What Happens Behind the Scenes:
- Origin Startup: PatchProof launches its internal HTTP server on
http://127.0.0.1:8899/. - Process Spawn: It launches
Game_v1.0.0.exewith command-line arguments:Game_v1.0.0.exe --patchproof-port 8898 --patchproof-token run_89a1bc4f - Probe Handshake: The Editor connects to the runtime probe on port
8898. - Cache Setup: The probe initializes an isolated cache at
PatchProof_Runs/run_89a1bc4f/Cache/. - Addressables Redirection: The probe overrides Addressables internal catalog URLs to point to the local staging origin.
- Update Execution: The client invokes
Addressables.CheckForCatalogUpdates()andAddressables.UpdateCatalogs(). - Fault Trigger: As the client downloads
Hero_Knight.bundle, the origin abruptly closes the socket after 128 KB. - Assertion: The client probe records whether the Addressables runtime handled the error gracefully or entered an unhandled exception state.
Step 5: Review Evidence & Results
Once the run completes, inspect the Coverage Matrix:
- Tile 1 (Fresh Cache / Clean Network): Green
PASSED. - Tile 2 (Warm Cache / Clean Network): Green
PASSED. - Tile 3 (Fresh Cache / Mobile Dropout): Red
FAILEDor AmberUNVERIFIEDdepending on whether your game’s retry logic successfully recovered.
Click any tile to open the Request Trace Inspector:
- View exact HTTP request headers, response codes, and timeline watermarks.
- Verify whether bundles were served from cache or streamed over the wire.
- Confirm that no production URLs or access tokens leaked into the logs.
Pro Tip: Exporting Repro-Packs
If a scenario fails, click “Export Repro-Pack” on the tile. PatchProof bundles the exact catalogs, fault configurations, and trace timelines into a standalone zip file that any engineer on your team can unpack and debug.