Veloren is a multiplayer voxel game inspired by Cube World. It aims to emulate the feel of Cube World while deviating in its features.
Veloren is an open-source community project licensed under the General Public License version 3. We gratefully welcome community contributions, both technical and editorial.
Veloren is designed in a modular manner. The various crates (libraries, for those not acquainted with Rust) of the project try to make no assumptions about what they will be used by and how.
The client crate. Used by client 'frontends' to manage all the low-level details of running a Veloren client like handling the server connection, entity physics predictions, terrain updates, etc.
The server crate. Like the client crate, it's used by server frontends to manage the low-level details of running a Veloren server like handling client connections, entity physics, terrain generation, world simulation, etc.
This crate provides code that relates to large-scale world generation and simulation. It contains code that manages weather systems, the virtual economy, quest generation, civilisation simulation, etc. Currently, it is only used by the server crate, but we're keeping it separate since we anticipate that it may be used by third-party tools.
This crate provides code that relates to local world simulation (i.e: that which occurs close to a player). It contains code that manages entity physics, chunk updates, NPC AI, etc. It is used by both the client and server crates.
This crate provides code to manage networking on both the client and server ends. It includes things like connection management, packet serialization/deserialization, etc. It is used by both the client and server crates.
This crate is a simple 'headless' (i.e: chat only) client frontend that connects to a server and allows the player to send and receive chat messages without having a physical character in the world. It uses the client crate.
The voxygen crate contains the official 3D frontend for Veloren. It allows players to connect to servers, play as a character within those servers, and will eventually also support single player worlds via the network abstraction within the network crate (note: this isn't implemented yet). It uses the client crate. It uses the server crate.
This crate is a simple command-line interface (CLI) server frontend. It allows the hosting of a server in a headless environment such as a dedicated server.
This crate is a graphical user interface (GUI) server frontend. It allows the hosting of a server front an ordinary desktop PC with minimal effort and is designed for use by ordinary players wanting to host a server. It uses the server crate.
-
Install Rust
Arch Linux
$ sudo pacman -S rustup $ rustup default nightly # Configure rust nightly compilerUbuntu
$ su <user> # log in to user which should build the project $ curl https://sh.rustup.rs -sSf | sh $ # select 2) Customize installation $ # select nightly toolchain, and allow modify PATH variable $ # proceed with installation $ # open a new terminal and make sure that you can type: $ cargo --version # if it cannot find it, look at the ~/.profile file and conside moving the PATH variable at the end of ~/.bashrc, open a new terminal and try again $ rustup default nightly # Configure rust nightly compiler
Windows
Install Rust from here
> rustup default nightly -
Install SFML
Arch Linux
$ sudo pacman -U https://archive.archlinux.org/packages/s/sfml/sfml-2.4.2-5-x86_64.pkg.tar.xz #needed for now, because sfml is normaly 2.5 and csfml only 2.4 $ sudo pacman -S csfmlWindows
Follow instructions from here to install SFML/CSFML libraries.
-
Compile and run a backend
Currently, the only officially supported backend is
server-cli.( cd server-cli && RUST_LOG=cargo=warning,server=debug,server-cli=debug,common=debug,region=debug,world=debug cargo run)
-
Compile and run a frontend
Currently, the only officially supported frontend is
voxygen.( cd voxygen && RUST_LOG=cargo=warning,client=debug,voxygen=debug,common=debug,region=debug,world=debug cargo run)
If you have a spare computer or vhost you can help the veloren team by providing a gitlab runner to increase test speed for developers. Follow the following steps on your machine. Keep in mind that this basically allows remote execution of any code on your machine.
- Follow all steps for comiling the project like descriped above. make sure you can compile the code as gitlab-runner user
- install gcc crosscompiler for windows and zip
sudo apt-get install gcc-mingw-w64-x86-64 zip -y(https://stackoverflow.com/a/39184296/4311928) - put in
~/.cargo/configof gitlab-runner user:
[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"
ar = "x86_64-w64-mingw32-gcc-ar"- get a Iphlpapi.dll from windows and put it here: ~/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib make sure only the I is capital. if you have no windows to get this file, ask in the discord chat
- Install gitlab runner on your host: https://docs.gitlab.com/runner/install/linux-repository.html
- register your runner https://docs.gitlab.com/runner/register/
- https://gitlab.com
- take the token from: https://gitlab.com/veloren/game/settings/ci_cd
- description: veloren
- tags: <none, just press enter>
- executor: shell
- check of your runner appears here: https://gitlab.com/veloren/game/settings/ci_cd