Platform lanes¶
The edition ships one build, three ways to play: Vanilla (preserved), QOL-Modded
(flagship), and Online (a THUG Pro companion). A "lane" is a launch configuration, defined
entirely in revert.conf and executed by share/run/revert-run.sh. This page covers how a
lane is defined, how launch works per platform, and how to add one.
How a lane is defined¶
Each lane is a set of variables in revert.conf:
LANE_<NAME>_DIR the game directory to launch from
LANE_<NAME>_PREFIX the Wine prefix (isolated per lane where needed)
LANE_<NAME>_EXE the executable to run
LANE_<NAME>_ENV extra environment (e.g. DXVK / Proton knobs)
LANE_<NAME>_HOOKS pre-launch hooks (soundtrack swap, trigger bridge)
LANE_<NAME>_SOUNDTRACK which soundtrack to bake/swap for this lane
EDITION_* variables describe the edition itself (names, paths, the app-menu entry). Because
both planes read revert.conf, the launch config and the build config never drift.
Launch on Linux and the Deck (revert run <lane>)¶
share/run/revert-run.sh launches under GE-Proton using the selected lane's variables. Two
things the engine cannot do itself are handled as hooks before launch:
- Soundtrack swap. The engine cannot toggle the soundtrack live, so the hook swaps the
relevant
.prxentry (shelling tothugkit prx) for the lane's chosen soundtrack. - Trigger bridge. An evdev bridge maps the L2/R2 shoulder combos that the game cannot bind natively. It matches the pad by capability (ABS_Z + ABS_RZ + BTN_TL + BTN_TR), not by name, so any XInput pad works.
The runner also resolves the button-glyph style (GLYPH_STYLE / --glyphs, with Steam Deck
auto-detecting Xbox) into $VV_GLYPHS, which the glyph .asi reads. Run options:
--soundtrack original|radio and --glyphs xbox|playstation|gamecube|keyboard.
Never run Wine against a prefix mid-game
On the Deck, play in Gaming Mode and never run a wine command against the prefix while
the game is running; it disturbs the pad binding. See the player Steam Deck guide for the
controller specifics.
Launch on Windows (native)¶
On Windows there is no Wine. The Go front door's internal/core runs the commands natively,
and run simply launches THUG2.exe from the edition directory (so the winmm.dll ASI
loader and the .asis resolve), with $VV_GLYPHS set and the soundtrack swap ported to Go
(shelling to thugkit prx). The vv-padbridge helper supplies the L2/R2 combos via native
syscalls. Crucially, on Linux the same core commands delegate to the bash dispatcher, so
bash stays authoritative and the two platforms cannot diverge. See
Architecture.
Adding a lane¶
- Define
LANE_<NAME>_{DIR,PREFIX,EXE,ENV,HOOKS,SOUNDTRACK}inrevert.conf. - If it needs a distinct build (a different soundtrack baked in, say), wire it through the
build pipeline options; otherwise it reuses
game-playable-us. - Add any pre-launch hook it needs (soundtrack, input) following the existing hook pattern in
share/run/revert-run.sh. - If Windows should support it, mirror the launch in
internal/core(remember Linux delegates to bash, so implement the native path and let the delegate cover Linux). - Test it end to end on the real platform: install → build →
run <name>→ plays with a controller. A lane is not done until that full path is captured.