Voxel engine written in Rust (backup/mirror)
Go to file
griffi-gh 65bfa8fcc1
2024-04-21 19:31:29 +02:00
.cargo change stuff :3 (will break android builds) 2023-11-20 23:21:50 +01:00
.github/workflows fix ci, hopefully 2023-11-25 16:22:44 +01:00
.readme Add touch controls, switch to tinymap for keyboard input 2023-06-04 18:39:55 +02:00
.vscode disable lint 2023-03-08 01:47:46 +01:00
assets update the loading screen 2024-02-21 03:31:52 +01:00
kubi upgrade to `hui = "0.1.0-alpha.4"` 2024-03-25 19:06:35 +01:00
kubi-logging use cyan for debug/trace 2023-11-22 14:38:02 +01:00
kubi-pool . 2023-11-20 19:51:16 +01:00
kubi-server upgrade to `hui = "0.1.0-alpha.4"` 2024-03-25 19:06:35 +01:00
kubi-shared upgrade to `hui = "0.1.0-alpha.4"` 2024-03-25 19:06:35 +01:00
.gitignore . 2023-11-21 19:39:21 +01:00
Cargo.lock upgrade to `hui = "0.1.0-alpha.4"` 2024-03-25 19:06:35 +01:00
Cargo.toml separate `kubi-ui` as `hui` 2024-02-17 23:14:04 +01:00
LICENSE Create LICENSE 2024-04-21 19:31:29 +02:00
README.md separate `kubi-ui` as `hui` 2024-02-17 23:14:04 +01:00
Server.toml Finish upgrading server to `uflow` 2023-03-09 03:30:37 +01:00
rust-toolchain.toml change stuff :3 (will break android builds) 2023-11-20 23:21:50 +01:00



Voxel engine written in Rust


  • multithreaded procedural world generation
  • procedural structures
  • multithreaded mesh generation
  • cubic chunks (32x32x32)
  • low-level OpenGL renderer, targetting OpenGL ES 3.0
  • frustum culling
  • multiplayer support [1]
  • block placement system
  • basic gui[5]
  • cross platform: windows, linux, osx [2], android [3]
  • universal input system: supports keyboard, mouse, gamepad and touch input [4]
[1] - multiplayer is work-in-progress
[2] - not tested on macos
[3] - android support is experimental
[4] - mouse/gamepad input is not supported on android
[5] - currently only used on the loading screen


Latest nightly release

build for windows/linux


cargo build --bin kubi
cargo run --bin kubi

build in release mode, with nightly optimizations

cargo +nightly build --bin kubi --features nightly --release

build for android

please note that android support is highly experimental!
gamepad, mouse input is currently borked, and proper touch controls are not available.
srgb and blending are broken too, which leads to many rendering issues

prerequisites: Android SDK, NDK, command line tools, platform-tools, latest JDK
(make sure that your PATH, ANDROID_HOME and ANDROID_NDK_ROOT variables are configured properly)


latest unpublished (git) version of cargo-apk is required

cargo install --git https://github.com/rust-mobile/cargo-apk cargo-apk
rustup target add aarch64-linux-android


--no-default-features is required for keyboard input!
(prefer-raw-events feature must be disabled on android)
Mouse input is not implemented, touch only!

cargo apk build -p kubi --lib --no-default-features

Run on device (using adb):

cargo apk run -p kubi --lib --no-default-features

touch controls

touch control scheme
  • Left side: Movement
  • Rigth side: Camera controls
  • Bottom right corner:
    • B (e.g. place blocks)
    • A (e.g. break, attack)


to join a multiplayer server, just pass the ip address as an argument

cargo run -p kubi --

server configuration

address = ""     # ip address to bind to
max_clients = 32              # max amount of connected clients
timeout_ms = 10000            # client timeout in ms

seed = 0xfeb_face_dead_cafe   # worldgen seed to use

name = "Kubi Server"          # server name

"In-house" libraries

  • hui: semi-imm.mode backend-agnostic ui system
    mostly ready to use, it has already replaced the Kubi legacy ui
  • kubi-ui-glium Glium-based backend for kubi-ui
  • kubi-pool: very early work-in-progress work-stealing threadpool system
    aiming to replace rayon threadpool that's currently used inside the kubi client (for more control over task priority)
  • kubi-logging fancy-ass custom formatter for env-logger


kubi-udp was a huge pita to work with and eventually got replaced by uflow (https://github.com/lowquark/uflow) in #5

~ uwu