Voxel engine written in Rust (backup/mirror)
Find a file
2024-05-06 16:24:44 +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 add trans rendering and crosshair 2024-05-02 00:32:43 +02:00
kubi remove WindowSize 2024-05-06 16:24:44 +02:00
kubi-logging i see... something? 2024-05-06 13:32:44 +02:00
kubi-server create buffers 2024-05-04 23:17:12 +02:00
kubi-shared use single seeder instance 2024-05-04 13:50:58 +02:00
.gitignore init texture prefab 2024-05-05 13:16:48 +02:00
Cargo.lock create buffers 2024-05-04 23:17:12 +02:00
Cargo.toml create buffers 2024-05-04 23:17:12 +02:00
LICENSE Create LICENSE 2024-04-21 19:31:29 +02:00
README.md remove outdated info from readme 2024-05-03 20:27:39 +02:00
rust-toolchain.toml change stuff :3 (will break android builds) 2023-11-20 23:21:50 +01:00
Server.toml preheat chunks on server 2024-05-04 00:05:16 +02:00

Kubi

Voxel engine written in Rust

features

  • multithreaded procedural world generation
  • procedural structures and block queue
  • multithreaded mesh generation
  • cubic chunks (32x32x32)
  • low-level OpenGL renderer, targetting OpenGL ES 3.0
  • 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 release

build 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

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 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

deprecated:

~ uwu