What is Roves?
Roves in one page — what it is, and what it isn't.
Three ways to use Roves
Pick whichever fits how you already work — all three end up building the exact same engine/bundle underneath, so nothing here locks you in.
Packmaster
A desktop GUI for game developers who'd rather not touch Rust/Python at all — downloads a prebuilt shell and packs your content into it.
GitHub Action
roves-action, for wiring this into your own game's CI without a full Roves checkout
in your repo.
Shell
The raw engine itself: mach build/mach bundle, straight from a checkout. The most
control, and the least important for most users — most people reach it indirectly,
through one of the two above.
What Roves changes, on top of upstream Servo
- No browser chrome. No toolbar, no tabs, no address bar, no page-reload/back-forward shortcuts — this is meant to look and behave like a native app window, not a browser.
- A single executable.
mach bundleproduces one binary (play.exe/play.app/play) with your game's content either packed in or sitting next to it — no separate launcher process, no bundledroves-content-packerbinary. - A branded boot splash, shown immediately and held up through both packed-content extraction and your page's own initial load, instead of a blank, undefined-content, or black window while either is still working.
- A
roves:protocol bridge (see roves-api) exposing window/process lifecycle, Steam, and cache-clearing to your page's own JS — no Tauri-styleinvoke()runtime, nowindow.__TAURI_INTERNALS__equivalent required. - Optional Steam integration, gated behind
--features steam, degrading to harmless defaults when Steam isn't running or wasn't compiled in.
Every one of these is documented — file touched, what changed, why — in
CUSTOMIZATIONS.md,
with a matching, machine-applicable patch under
patches/. Anything not
listed there is stock Servo behavior — check servo.org for that.