Custom asset feed for the ROTK Launcher.
The launcher fetches feed.json from this branch before every game
launch, downloads the packs attached to the GitHub Releases of this repository,
verifies their SHA-256 and installs them into the ROTK client.
- Build the payloads (
.zipfor file trees, plain files otherwise). Zip entries must use/separators (PowerShellCompress-Archivemay emit\— prefer7z,zipor a Node script). No executable content (.exe,.dll, scripts…): the launcher rejects it. - Compute the SHA-256 and byte size of each payload:
Get-FileHash -Algorithm SHA256 <file>. - Prepare a draft release
assets-vX.Y.Zon the commit that contains the matching manifests, attach the changed payloads, then download them again and verify their exact size, SHA-256 and archive layout. - Publish the release before exposing its URLs through
feed.jsononmain, then merge the manifest commit immediately. This avoids a window where launchers receive a feed whose payloads still return 404. - Update both
feed.jsonandasset-payloads.v1.json: URLs, archive hashes and sizes in the feed; installed-file hashes, sizes and asset owners in the payload manifest; changed asset versions and the globalpackVersion. - Search every installed pack for each changed asset name and verify that all
copies contain the intended bytes. Checking only the UI pack and
assets_x64_0.pack2is insufficient:HudKillFeedWindow.gfxalso exists inassets_x64_1.pack2. The older copy could hide the staff badges shipped in assets 1.10.2. Assets 1.10.3 makes both killfeed copies identical. Compare all other entries in any rebuilt pack to confirm they remain unchanged.
Launchers pick the update up on the next launch. The latest stable GitHub release
is layered over feed.json, so changing the feed alone cannot roll back that
release. Roll back by publishing a higher version that restores the previous
payload and manifests (for example assets-v1.5.1 after assets-v1.5.0), then
publish the matching attestation policy.
The manifest format and every validation rule enforced by the launcher are
documented in
docs/asset-packs.md.