Slim the nightly: 1.5 GB downloads should be ~400 MB plus opt-in content
The problem
The nightly downloads are huge. Every platform payload is ~1.5 GB, nightly
testers auto-download all of it every night (the nightly channel ships full
nupkgs, no deltas), and every install carries ~1.4 GB of media and binaries
that many users will never use. That's not respectful of users' bandwidth or
disk space — and it's about to break: GitHub caps release assets at 2 GiB,
the win full.nupkg is already at 1.57 GB, and career venue packs are still
being added.
How it could be instead
We ship a slim nightly application file (~350–400 MB — Electron, Python
runtime, audio addon, ffmpeg, soundfont, starter songs). During initial
launch, the app asks two questions:
- "Do you want a simulated rig?" — yes starts downloading the amp/effect
tones (per-platform VST pack) in the background. Users who fork audio
through their own physical rig — the game silently monitoring their
instrument — skip this and never carry a byte of it.
- "Do you want to play career mode?" — yes starts downloading the
starter venue (119 MB); higher-tier venues can download all at once or as
the user starts to approach needing them, depending on how conservative we
want to be. Users who don't play career carry zero venue bytes.
Either download can also be started later from Settings. Nightly updates
shrink to the slim app; the big content updates only when it actually
changes.
Where the 1.5 GB comes from
The payload grew 6× in two weeks, in two discrete jumps (win-x64 artifact):
| Night |
Size |
Event |
| 07-03 |
0.79 GB |
baseline |
| 07-07 |
3.08 GB |
rig_builder joined the bundle: 644 MB of VST3s, each a fat mac+win+linux bundle — all three OS slices ship to every platform |
| 07-14 |
4.83 GB |
club + arena venue packs committed into core (feedBack#961/#963): 678 MB of crowd MP4s, bundled on every platform |
Composition per platform: 797 MB career venue packs (bar 119 / club 343 /
arena 335) + ~650 MB rig_builder VST3s + ~350–400 MB actual app. Each
artifact then carries the payload 2–3× (win: zip + full.nupkg + msi), so one
night's artifacts total ~12.5 GB.
The Docker nightly is unaffected — core's .dockerignore never ships
plugins/career/. (Side observation: the career plugin is therefore absent
from the Docker image entirely — intended?)
Most of the plumbing already exists
- Venue packs are deferrable today. The career plugin already has
POST /packs/{venue_id}/download with background progress, a pack URL
field in venues.json (currently null), downloaded-override →
bundled-fallback resolution, and graceful no-pack degradation (crowd
manifest cleared, per-venue "Download venue pack" buttons). Needed: host
the packs (release assets), set the URLs, stop bundling.
- VST download needs a small amount of new code. VSTs load strictly from
<plugin_dir>/vst today, but rig_builder already runtime-downloads NAM
captures (tone3000, disk budget), so the download pattern exists
in-plugin. Publish per-platform-sliced VST packs as release assets;
download into a config-dir location and add it to the VST search path.
Interim zero-code option: platform-slice the fat .vst3 bundles at build
time (−430 MB/platform while still bundling).
Also worth doing
- Artifact retention 7d → 2d in nightly.yml (−~60 GB standing storage —
artifacts only ferry files to the publish job; testers use the release).
- Stop committing venue packs to core git — the repo is ~1 GB
server-side, every re-render re-adds its full weight to history forever,
and the largest arena file is 89 MB against GitHub's 100 MB hard limit.
- Optionally re-encode the crowd MP4s — 55–93 MB per loop is generous; a
lower bitrate could roughly halve pack sizes.
Slim the nightly: 1.5 GB downloads should be ~400 MB plus opt-in content
The problem
The nightly downloads are huge. Every platform payload is ~1.5 GB, nightly
testers auto-download all of it every night (the nightly channel ships full
nupkgs, no deltas), and every install carries ~1.4 GB of media and binaries
that many users will never use. That's not respectful of users' bandwidth or
disk space — and it's about to break: GitHub caps release assets at 2 GiB,
the win full.nupkg is already at 1.57 GB, and career venue packs are still
being added.
How it could be instead
We ship a slim nightly application file (~350–400 MB — Electron, Python
runtime, audio addon, ffmpeg, soundfont, starter songs). During initial
launch, the app asks two questions:
tones (per-platform VST pack) in the background. Users who fork audio
through their own physical rig — the game silently monitoring their
instrument — skip this and never carry a byte of it.
starter venue (119 MB); higher-tier venues can download all at once or as
the user starts to approach needing them, depending on how conservative we
want to be. Users who don't play career carry zero venue bytes.
Either download can also be started later from Settings. Nightly updates
shrink to the slim app; the big content updates only when it actually
changes.
Where the 1.5 GB comes from
The payload grew 6× in two weeks, in two discrete jumps (win-x64 artifact):
Composition per platform: 797 MB career venue packs (bar 119 / club 343 /
arena 335) + ~650 MB rig_builder VST3s + ~350–400 MB actual app. Each
artifact then carries the payload 2–3× (win: zip + full.nupkg + msi), so one
night's artifacts total ~12.5 GB.
The Docker nightly is unaffected — core's
.dockerignorenever shipsplugins/career/. (Side observation: the career plugin is therefore absentfrom the Docker image entirely — intended?)
Most of the plumbing already exists
POST /packs/{venue_id}/downloadwith background progress, apackURLfield in
venues.json(currentlynull), downloaded-override →bundled-fallback resolution, and graceful no-pack degradation (crowd
manifest cleared, per-venue "Download venue pack" buttons). Needed: host
the packs (release assets), set the URLs, stop bundling.
<plugin_dir>/vsttoday, but rig_builder already runtime-downloads NAMcaptures (tone3000, disk budget), so the download pattern exists
in-plugin. Publish per-platform-sliced VST packs as release assets;
download into a config-dir location and add it to the VST search path.
Interim zero-code option: platform-slice the fat
.vst3bundles at buildtime (−430 MB/platform while still bundling).
Also worth doing
artifacts only ferry files to the publish job; testers use the release).
server-side, every re-render re-adds its full weight to history forever,
and the largest arena file is 89 MB against GitHub's 100 MB hard limit.
lower bitrate could roughly halve pack sizes.