Voxel engine written in Rust
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
griffi-gh 9affee68c3
oops my screen is hdr only
5 days ago
.cargo oops, avx2 is not as widely available as i thought 4 months ago
.github/workflows use mold as linker on linux 4 months ago
.readme Add touch controls, switch to tinymap for keyboard input 4 months ago
.vscode disable lint 7 months ago
assets/blocks improve worldgen 7 months ago
kubi oops my screen is hdr only 5 days ago
kubi-logging initial android support (fails on textures) 4 months ago
kubi-server upgrade dependencies 3 months ago
kubi-shared upgrade dependencies 3 months ago
.gitignore add `generate_visualizer_data` feature 7 months ago
Cargo.lock upgrade dependencies 3 months ago
Cargo.toml player position sync, refactor some stuff 4 months ago
README.md Update README.md 4 months ago
Server.toml Finish upgrading server to `uflow` 7 months ago

README.md

Kubi

Voxel engine written in Rust

features

  • 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

download

Latest nightly release

build for windows/linux

build/run

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, command line tools, NDK, platform-tools, latest JDK
(make sure that your $PATH variable is configured properly)

Setup:

cargo install cargo-apk
cargo 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 --no-default-features

Run:

cargo apk run -p kubi --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)

mutiplayer

to join a multiplayer server, just pass the ip address as an 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
~ uwu