.cargo | ||
.github/workflows | ||
.readme | ||
.vscode | ||
assets | ||
assets-src | ||
kubi | ||
kubi-logging | ||
kubi-server | ||
kubi-shared | ||
.envrc | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
egg-kubi-server.json | ||
flake.lock | ||
flake.nix | ||
LICENSE | ||
README.md | ||
rust-toolchain.toml | ||
Server.toml |
Kubi
Heavily multithreaded voxel engine with multiplayer networking.
Written in Rust using wgpu
features
- multithreaded procedural world generation
- procedural structures and block queue
- multithreaded mesh generation
- cubic chunks (32x32x32)
- low-level wgpu renderer (gles3 before the major rewrite)
- frustum culling
- multiplayer networking
- immediate ui system
[1]
- cross platform: windows, linux, osx, android
[2]
- universal input system: supports keyboard, mouse, gamepad and touch input
[3]
- support for semi-transparet blocks
[4]
[1]
- developed out-of-tree here since 2024
[2]
- android support is experimental
[3]
- mouse and gamepad input is not supported on android
[4]
- work in progress, may cause issues
download
Latest nightly releasebuild for windows/linux
cargo build -p kubi
cargo run -p kubi
#or, build with release mode optimizations:
cargo run -p kubi --release
build for android
please note that android support is highly experimental!
gamepad, mouse input is currently borked, as well as srgb, which leads to dark textures.
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)
Setup:
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
Build:
--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
- Left side: Movement
- Rigth side: Camera controls
- Bottom right corner:
- B (e.g. place blocks)
- A (e.g. break, attack)
mutiplayer
to join a multiplayer server, just pass the ip address as the first argument
cargo run -p kubi -- 127.0.0.1:1234
server configuration
[server]
address = "0.0.0.0:12345" # ip address to bind to
max_clients = 32 # max amount of connected clients
timeout_ms = 10000 # client timeout in ms
[world]
seed = 0xfeb_face_dead_cafe # worldgen seed to use
[query]
name = "Kubi Server" # server name
"In-house" libraries
hui
,hui-glium
,hui-winit
: semi-imm.mode backend-agnostic ui system\kubi-logging
fancy custom formatter forenv-logger
deprecated:
eventually got replaced bykubi-udp
uflow
(https://github.com/lowquark/uflow) in #5decided there's no need to replace rayon for nowkubi-pool