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:
- cmake is needed to build OpenXR loader, go to https://cmake.org/, and install it.
Build & run:
cargo install rsaber_pcvr
rsaber_pcvr
Suggested Reading
- Essence of linear algebra (excellent stuff, highly recommended)
- Learn OpenGL (still relevant, even we use WebGPU)
- WebGPU Fundamentals
- Learn Wgpu
- rust wgpu
- Normal Transformation
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)