Documentation

rsaber: Beat Saber clone written in Rust

State

We are really at the beginning. At least, the colored notes are already moving :).

Supported Devices

Subdirectory Tested devices
android Meta Quest 2
pc Windows (runs in a window, useful for debugging)
pcvr OpenXR (SteamVR): Sony PlayStation VR2 (see https://www.playstation.com/en-us/support/hardware/pc-prepare-ps-vr2/)

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

First of all:

  • You need to have rust toolchain installed.
  • Clone this repo:
    git clone https://github.com/bandipapa/rsaber.git
    

The built-in demo song can be replaced by downloading songs from https://beatsaver.com/, and overwrite asset/song/demo.

android

Prerequisite:

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

    • SDK Platforms -> Android 12L (API level 32)
    • SDK Tools -> NDK
  • OpenXR Loader

  • Setup rust toolchain, replace username and version as needed:

    rustup target add aarch64-linux-android
    cargo install cargo-apk
    set ANDROID_HOME=c:\Users\<username>\AppData\Local\Android\Sdk
    set ANDROID_NDK_ROOT=c:\Users\<username>\AppData\Local\Android\Sdk\ndk\<version>
    set PATH=%PATH%;c:\Program Files\Android\Android Studio\jbr\bin
    

Connect Quest to PC, then build:

cd android
cargo apk run

pc

Build:

cd pc
cargo run

You can use keys w-a-s-d to move, z-x to change elevation, r to reset view and arrow keys to rotate camera.

pcvr

Prerequisite:

Build:

cd pcvr
cargo run

Credits

  • Demo song: Geoxor - Only Now

Suggested Reading

TODO

  • Saber<->note collision detection
  • UI/menu system
  • Linux port
  • Put all assets into binary, but have the option to dump/read it from local file (this is for modders who don't want to recompile)
  • Package crates properly, so they can be used with "cargo install"