- Notifications
You must be signed in to change notification settings - Fork2
Multithreaded voxel engine with multiplayer networking based on wgpu (a.k.a another attempt at ripping off Minecraft)
License
griffi-gh/kubi
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Heavily multithreaded voxel engine with multiplayer networking.
Written in Rust usingwgpu
- 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-treehere since 2024
[2]
- android support is experimental
[3]
- mouse and gamepad input is not supported on android
[4]
- work in progress, may cause issues
cargo build -p kubicargo run -p kubi#or, build with release mode optimizations:cargo run -p kubi --release
please note that android support is highly experimental!
gamepad and mouse input is currently not supported
prerequisites: Android SDK, NDK, command line tools, platform-tools, latest JDK
(make sure that yourPATH
,ANDROID_HOME
andANDROID_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-apkrustup target add aarch64-linux-android
Build:
--no-default-features
is required for keyboard input!
(prefer-raw-events
featuremust 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
- 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 the first argument
cargo run -p kubi -- 127.0.0.1:1234
[server]address ="0.0.0.0:12345"# ip address to bind tomax_clients =32# max amount of connected clientstimeout_ms =10000# client timeout in ms[world]seed =0xfeb_face_dead_cafe# worldgen seed to use[query]name ="Kubi Server"# server name
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
About
Multithreaded voxel engine with multiplayer networking based on wgpu (a.k.a another attempt at ripping off Minecraft)