Video recording, speedrunning and TAS tools for Half-Life and mods. Current features include:
bxt_hud_scale to upscale the HUD for high-resolution video recording.bxt_play_run).bxt_force_fov to override FOV when default_fov doesn't work.bxt_tas_log, including RNG state dumping, when you can't use the one from the original Bunnymod XT.bxt_fade_remove, bxt_shake_remove, bxt_skybox_remove, bxt_novis, bxt_wallhack, bxt_disable_loading_text..hltas script.For a full list of features, console commands and variables visit the wiki page.
Started as an experiment to re-architecture Bunnymod XT from scratch with the benefit of hindsight.
Do not connect to VAC-secured servers with bxt-rs or you might get VAC banned.
You can download the latest development build from GitHub Actions. Open the topmost workflow and scroll down for Artifacts.
On Linux, you can use the runhl.sh script. Correct the paths at the top of the script if necessary.
On Windows:
Injector.exe and bxt_rs.dll.Injector.exe path\to\Half-Life\hl.exe. Running HL on its own and running the injector afterwards is not supported.To run bxt-rs together with the original Bunnymod XT (e.g. for capturing TASes) simply put BunnymodXT.dll, Injector.exe and bxt_rs.dll together into the same folder and start Half-Life with the injector.
To use video recording you need FFmpeg. On Linux, install it from your package manager. On Windows, download a static FFmpeg build (e.g. this one) and extract ffmpeg.exe into the Half-Life folder (the folder that has hl.exe).
If the video looks glitched or the game crashes when starting recording (happens on some Windows AMD GPU setups and on some NVIDIA driver versions):
_bxt_cap_force_fallback 1.Start Half-Life with the BXT_RS_PROFILE environment variable set to make bxt-rs output a trace.json file in the Half-Life folder. This is a Chrome JSON trace file which you can view in Perfetto or in chrome://tracing.
Alternatively, you can use the Tracy profiler. To do that, build bxt-rs with --features tracing-tracy, then start the game with BXT_RS_PROFILE_TRACY environment variable set, and connect Tracy.
There are environment variables that may assist you in debugging:
BXT_RS_VULKAN_DEBUG will enable the Vulkan validation layers. You need to have 32-bit validation layers installed, otherwise Vulkan will fail to initialize.BXT_RS_VERBOSE will log more verbose and spammy messages.You can uncomment the right line in .cargo/config to avoid writing --target every time.
libc6-dev-i386, on Fedora you'll need glibc-devel.i686.i686-unknown-linux-gnu target.cargo build --target=i686-unknown-linux-gnuYou may need to set CC=cc environment variable on Fedora and some other distros, otherwise you'll get build errors for SQLite. You can uncomment the corresponding line in .cargo/config to set it automatically if you need this.
i686-pc-windows-msvc target.cargo build --target=i686-pc-windows-msvcMinGW on Ubuntu currently fails to link Rust code. Debian and Fedora work fine.
gcc-mingw-w64-i686, on Fedora you'll need mingw32-gcc and mingw32-winpthreads-static.i686-pc-windows-gnu target.cargo build --target=i686-pc-windows-gnuGPL v3 or later.
$ claude mcp add bxt-rs \
-- python -m otcore.mcp_server <graph>