McEx is a Minecraft server written in Elixir and Rust. All the networking and logic is implemented in Elixir, while the low level chunk data handling is done in Rust.
It is written with distribution in mind. It will take advantage of all cores on the machine by default. In the future it should be possible to offload the computationally heavy parts (like chunk generation, chunk servers, even anticheat) to other machines, while keeping the core parts that require more swift communication on a single machine.
- Joining (compression, encryption, packet handling)
- Player movement
- World (chunk loading, world generation)
- World interaction (only block destruction for now)
- Rustler - For making interaction between the Elixir and Rust code easy.
- voxel_worldgen - World generation.
- Rust - Safe systems-level programming language. Chunk code is written in rust.
- Elixir - Ruby-like language on top of Erlang/OTP. Networking, logic, etc is written in Elixir.
- Erlang/OTP - The platform it all runs on.
# install elixir and other dependencies
sudo dpkg -i <(curl https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb)
sudo apt-get update
sudo apt-get install esl-erlang elixir file git libssl-dev
# install rust
curl -sf https://raw.githubusercontent.com/brson/multirust/master/blastoff.sh | sh
multirust update nightly-2016-04-05
# get the project sources
git clone git://github.com/mcex/mcex
cd mcex
mix deps.get
# run the server in an interactive session
iex -S mix