Documentation

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)