4 releases (breaking)

Uses new Rust 2024

0.4.0 Mar 11, 2026
0.3.0 Jan 11, 2026
0.2.0 Oct 27, 2025
0.1.0 Oct 1, 2025

#1592 in Game dev

Custom license and GPL-3.0-only…

6.5MB
8K SLoC

Rust 7K SLoC // 0.1% comments Slint 570 SLoC // 0.0% comments WebGPU Shader Language 150 SLoC // 0.1% comments Kotlin 131 SLoC Batch 72 SLoC

Contains (JAR file, 47KB) build/gradle/wrapper/gradle-wrapper.jar

rsaber: Beat Saber clone written in Rust

State

We are really at the beginning. At least, the colored notes are already moving and there is a basic collision detection logic :). As there are no built-in levels, they are fetched from https://beatsaver.com/.

Screenshots

Supported Devices

Subdirectory Tested devices
android Meta Quest 2
pc Windows (runs in a window, useful for debugging)
pcvr OpenXR (SteamVR): Sony PlayStation VR2

Actually, any headset with OpenXR support + Vulkan API is supposed to work.

Download

You can go to releases to download pre-compiled binaries.

Build From Source

If you prefer, you can compile rsaber from sources. First of all, you need to have rust toolchain installed.

android

Prerequisite:

  • Install Android Studio, then go to SDK Manager and install:

    • SDK Platforms -> API level: see ANDROID_SDK_LEVEL below
    • SDK Tools -> NDK
  • Setup rust toolchain, replace username as needed:

    rustup target add aarch64-linux-android
    cargo install cargo-ndk
    set JAVA_HOME=c:\Program Files\Android\Android Studio\jbr
    set ANDROID_HOME=c:\Users\<username>\AppData\Local\Android\Sdk
    set ANDROID_SDK_LEVEL=34
    

Clone repo, connect Quest to PC, then build in debug mode & run:

git clone https://github.com/bandipapa/rsaber.git
cd rsaber\android\build
gradlew runDebug

Building in release mode can be done by setting ANDROID_KEYSTORE, ANDROID_KEYSTORE_PW, ANDROID_KEYALIAS, ANDROID_KEYALIAS_PW environment variables, and execute:

gradlew runRelease

pc

Build & run:

cargo install rsaber_pc
rsaber_pc

pcvr

Prerequisite:

Build & run:

cargo install rsaber_pcvr
rsaber_pcvr

Suggested Reading

TODO

  • Linux port (rsaber_hackedcpal)
  • Have the option to dump/read assets from local files (this is for modders who don't want to recompile)

Dependencies

~84–130MB
~2.5M SLoC