2023-07-11 16:47:38 -05:00
< div align = "center" > < table > < tr > < th > < div align = "center" >
## ***wgpu branch***
< b > Highly experimental very early work-in-progress wgpu version of Kubi!< / b > < br >
2023-07-15 15:14:08 -05:00
(will also include the new gui system)
2023-07-11 16:47:38 -05:00
< hr >
< h3 > < i > Status: doesn't even compile< / i > < br > < / h3 >
If you want to play kubi, build the glium-based < a href = "https://github.com/griffi-gh/kubi" > < code > master< / code > < / a > branch instead (< a href = "https://github.com/griffi-gh/kubi/releases/tag/nightly" > binary nightly releases< / a > ).
< hr >
### *Android is not supported*
android builds need some significant changes to work with wgpu\
but if you still want to try it latest git version of cargo-apk may be required:
```bash
cargo install --git https://github.com/rust-mobile/cargo-apk cargo-apk
```
< / div > < / th > < / tr > < / table > < / div >
2023-01-19 20:28:08 -06:00
< h1 align = "center" > Kubi< / h1 >
2023-05-16 06:42:55 -05:00
< p align = "center" >
2023-05-17 05:58:05 -05:00
Voxel engine written in Rust
2023-05-16 06:42:55 -05:00
< / p >
2023-07-08 20:23:08 -05:00
< p align = "center" >
2023-07-11 16:47:38 -05:00
2023-07-08 20:23:08 -05:00
< / p >
2023-05-16 06:42:55 -05:00
< div align = "center" >
< img src = ".readme/game.gif" width = "512" >
< / div >
2023-05-17 22:09:19 -05:00
2023-05-16 06:42:55 -05:00
< h2 > features< / h2 >
2023-05-17 22:09:19 -05:00
2023-05-16 06:42:55 -05:00
< p >
< ul >
< li > multithreaded procedural world generation< / li >
< li > procedural structures< / li >
< li > multithreaded mesh generation< / li >
< li > cubic chunks (32x32x32)< / li >
< li > low-level OpenGL renderer, targetting OpenGL ES 3.0< / li >
< li > frustum culling< / li >
2023-06-04 11:51:37 -05:00
< li > multiplayer support < sup > < code > [1]< / code > < / sup > < / li >
2023-05-16 06:42:55 -05:00
< li > block placement system< / li >
2023-06-10 02:20:01 -05:00
< li > basic gui< sup > < code > [5]< / code > < / sup > < / li >
2023-06-04 11:51:37 -05:00
< li > cross platform: windows, linux, osx < sup > < code > [2]< / code > < / sup > , android < sup > < code > [3]< / code > < / sup > < / li >
< li > universal input system: supports keyboard, mouse, gamepad and touch input < sup > < code > [4]< / code > < / sup > < / li >
2023-05-16 06:42:55 -05:00
< / ul >
2023-06-04 11:51:37 -05:00
< h6 >
< code > [1]< / code > - multiplayer is work-in-progress< br >
< code > [2]< / code > - not tested on macos< br >
< code > [3]< / code > - android support is experimental< br >
2023-06-10 02:20:01 -05:00
< code > [4]< / code > - mouse/gamepad input is not supported on android< br >
< code > [5]< / code > - currently only used on the loading screen
2023-06-04 11:51:37 -05:00
< / h6 >
2023-05-16 06:42:55 -05:00
< / p >
2023-05-17 22:09:19 -05:00
< h2 > download< / h2 >
< a href = "https://github.com/griffi-gh/kubi/releases/tag/nightly" > Latest nightly release< / a >
2023-06-04 11:39:55 -05:00
< h2 > build for windows/linux< / h2 >
2023-05-16 06:42:55 -05:00
2023-06-04 11:39:55 -05:00
**build/run**
2023-05-16 06:42:55 -05:00
2023-05-20 23:53:47 -05:00
```bash
cargo build --bin kubi
cargo run --bin kubi
2023-05-16 06:42:55 -05:00
```
2023-06-04 11:39:55 -05:00
**build in release mode, with nightly optimizations**
2023-05-16 06:42:55 -05:00
2023-05-20 23:53:47 -05:00
```bash
2023-06-04 08:19:33 -05:00
cargo +nightly build --bin kubi --features nightly --release
2023-05-20 23:53:47 -05:00
```
2023-06-04 11:39:55 -05:00
< h2 > build for android< / h2 >
2023-05-20 23:53:47 -05:00
2023-06-04 11:39:55 -05:00
please note that android support is highly experimental!\
gamepad, mouse input is currently borked, and proper touch controls are not available.\
2023-05-21 05:41:09 -05:00
srgb and blending are broken too, which leads to many rendering issues
2023-06-04 11:39:55 -05:00
prerequisites: Android SDK, command line tools, NDK, platform-tools, latest JDK\
(make sure that your $PATH variable is configured properly)
2023-05-20 23:53:47 -05:00
2023-06-04 11:39:55 -05:00
**Setup:**
2023-06-04 08:16:25 -05:00
```bash
cargo install cargo-apk
cargo target add aarch64-linux-android
```
2023-06-04 11:39:55 -05:00
**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!
2023-06-04 08:16:25 -05:00
```bash
cargo apk build -p kubi --no-default-features
```
2023-06-04 11:39:55 -05:00
**Run:**
2023-06-04 08:16:25 -05:00
2023-05-20 23:53:47 -05:00
```bash
2023-06-04 11:39:55 -05:00
cargo apk run -p kubi --no-default-features
2023-05-16 06:42:55 -05:00
```
2023-06-04 11:40:54 -05:00
< h2 > touch controls< / h2 >
2023-06-04 11:39:55 -05:00
< img src = ".readme/touch_controls.png" alt = "touch control scheme" width = "300" >
- Left side: **Movement**
- Rigth side: **Camera controls**
- Bottom right corner:
- **B** (e.g. place blocks)
- **A** (e.g. break, attack)
2023-05-16 06:42:55 -05:00
< h2 > mutiplayer< / h2 >
to join a multiplayer server, just pass the ip address as an argument
```sh
cargo run -p kubi -- 127.0.0.1:1234
```
< h2 > server configuration< / h2 >
2023-06-04 11:42:33 -05:00
```toml
2023-05-16 06:42:55 -05:00
[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
```
2023-02-12 15:18:11 -06:00
< h6 align = "right" > < i > ~ uwu< / i > < / h6 >