{"id":16905729,"url":"https://github.com/yalter/bxt-rs","last_synced_at":"2025-03-15T14:30:34.765Z","repository":{"id":37884865,"uuid":"264961590","full_name":"YaLTeR/bxt-rs","owner":"YaLTeR","description":"Fastest video recording and TAS tools for Half-Life \u0026 mods.","archived":false,"fork":false,"pushed_at":"2025-03-14T05:41:51.000Z","size":1006,"stargazers_count":49,"open_issues_count":24,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-14T06:26:11.162Z","etag":null,"topics":["goldsource","half-life","rust","speedrun","video"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YaLTeR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-18T14:17:26.000Z","updated_at":"2025-03-14T05:41:55.000Z","dependencies_parsed_at":"2023-02-19T04:31:10.952Z","dependency_job_id":"699c92b0-aab1-44c3-8340-20819ec467e8","html_url":"https://github.com/YaLTeR/bxt-rs","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaLTeR%2Fbxt-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaLTeR%2Fbxt-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaLTeR%2Fbxt-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaLTeR%2Fbxt-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YaLTeR","download_url":"https://codeload.github.com/YaLTeR/bxt-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243742550,"owners_count":20340665,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["goldsource","half-life","rust","speedrun","video"],"created_at":"2024-10-13T18:39:25.982Z","updated_at":"2025-03-15T14:30:33.924Z","avatar_url":"https://github.com/YaLTeR.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bxt-rs\n\nVideo recording, speedrunning and TAS tools for Half-Life and mods. Current features include:\n\n- Video recording ([video tutorial](https://youtu.be/ZMjhCXA82tU)).\n- Interactive editor for TASes—remade and improved version of the BXT TAS editor ([video tutorial](https://youtu.be/zi3pw9iS1sk)).\n- Brute-force optimizer for TASes ([video tutorial](https://youtu.be/ECuRruY3XLw)).\n- `bxt_hud_scale` to upscale the HUD for high-resolution video recording.\n- Commands to play many demos at once (`bxt_play_run`).\n- `bxt_force_fov` to override FOV when `default_fov` doesn't work.\n- Fixes for command buffer overflow on BXT demos and un-stuck non-determinism for TASes.\n- A useful subset of `bxt_tas_log`, including RNG state dumping, when you can't use the one from the original Bunnymod XT.\n- `bxt_fade_remove`, `bxt_shake_remove`, `bxt_skybox_remove`, `bxt_novis`, `bxt_wallhack`, `bxt_disable_loading_text`.\n- Mostly-working recording real-time gameplay into a `.hltas` script.\n\nFor a full list of features, console commands and variables visit the [wiki page](https://github.com/YaLTeR/bxt-rs/wiki/Features).\n\nStarted as an experiment to re-architecture Bunnymod XT from scratch with the benefit of hindsight.\n\n## VAC Ban Warning\n\nDo not connect to VAC-secured servers with bxt-rs or you might get VAC banned.\n\n## Usage\n\nYou can download the latest development build from [GitHub Actions](https://github.com/YaLTeR/bxt-rs/actions?query=branch%3Amaster). Open the topmost workflow and scroll down for Artifacts.\n\nOn Linux, you can use the [`runhl.sh`](runhl.sh) script. Correct the paths at the top of the script if necessary.\n\nOn Windows:\n\n1. Download [Bunnymod XT Injector](https://github.com/YaLTeR/BunnymodXT-Injector/releases) 3.2 or newer.\n1. Create a new folder with `Injector.exe` and `bxt_rs.dll`.\n1. Start Half-Life with the injector: `Injector.exe path\\to\\Half-Life\\hl.exe`. Running HL on its own and running the injector afterwards is not supported.\n\nTo 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.\n\n### Video Recording\n\nTo 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](https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z)) and extract `ffmpeg.exe` into the Half-Life folder (the folder that has `hl.exe`).\n\nIf the video looks glitched or the game crashes when starting recording (happens on some Windows AMD GPU setups and on some NVIDIA driver versions):\n\n1. Update your GPU driver.\n1. If the problem still occurs, try `_bxt_cap_force_fallback 1`.\n\n### Profiling\n\nStart 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](https://ui.perfetto.dev/) or in `chrome://tracing`.\n\nAlternatively, you can use the [Tracy](https://github.com/wolfpld/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.\n\n### Debugging\n\nThere are environment variables that may assist you in debugging:\n\n- `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.\n- `BXT_RS_VERBOSE` will log more verbose and spammy messages.\n\n## Building\n\nYou can uncomment the right line in `.cargo/config` to avoid writing `--target` every time.\n\n### Linux\n\n1. Install 32-bit libc for linking. On Ubuntu that's `libc6-dev-i386`, on Fedora you'll need `glibc-devel.i686`.\n1. Install stable Rust (for example, via [rustup](https://rustup.rs/)) with the `i686-unknown-linux-gnu` target.\n1. `cargo build --target=i686-unknown-linux-gnu`\n\nYou 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.\n\n### Windows\n\n1. Install stable Rust (for example, via [rustup](https://rustup.rs/)) with the `i686-pc-windows-msvc` target.\n1. `cargo build --target=i686-pc-windows-msvc`\n\n### Windows (cross-compiling from Linux)\n\nMinGW on Ubuntu currently fails to link Rust code. Debian and Fedora work fine.\n\n1. Install MinGW for the 32-bit target. On Debian that's `gcc-mingw-w64-i686`, on Fedora you'll need `mingw32-gcc` and `mingw32-winpthreads-static`.\n1. Install stable Rust (for example, via [rustup](https://rustup.rs/)) with the `i686-pc-windows-gnu` target.\n1. `cargo build --target=i686-pc-windows-gnu`\n\n## Documentation\n\n- [Contributing: how to add patterns and new functionality](CONTRIBUTING.md)\n- [Design notes](DESIGN.md)\n\n## License\n\nGPL v3 or later.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyalter%2Fbxt-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyalter%2Fbxt-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyalter%2Fbxt-rs/lists"}