# bevy-bloxel-classic This project, written in Rust and using [Bevy], aims to re-create the functionality of Minecraft "Classic" from 2009, for the sake of creating a game that could be considered finished (because I've been struggling with that), while developing code and experience that can be used in future projects that have greater ambitions. [Bevy]: https://bevy.org/ ## Goals - ☐ Creative mode building - ☐ Basic player physics - ☐ Limited world size (configurable) - ☐ Block definitions loaded at startup - ☐ Custom block models (and textures) - ☐ Simple cellular automaton interactions - ☑ Multiplayer (server-authoritative) - ☐ Dedicated (headless) server - ☑ Runs in browser ### Non-goals - Non-player entities (animals, falling blocks, block entities) - Modding API (other than loading block definitions) - Infinite, streaming terrain (possible, but currently out of scope) - Sensible liquid handling (waterlogging, partial liquid blocks, flow mechanics) ## How to Launch Since the game is still way too early in development, there are no releases yet. ### Native To compile and run it yourself, just set up Rust like usual, through `rustup` for example. ```sh # Run the game locally. cargo run cargo run -- local # same as above cargo run --release -- local # with release optimizations # Host a server for the game and play on it. # When starting up, will print the "certificate digest". cargo run -- host [PORT] # Connect to an existing server. cargo run -- connect ``` ### Browser To easily build and test the game on the web, I recommend using [Bevy CLI]. ```sh # Run a local webserver to serve the game. # Automatically opens the page in your browser. bevy run --release web --open ``` - To connect to a server, add `?connect=&digest=` to the URL. - Due to a limitation, hostnames like `localhost` won't work here – use an IP instead. - Note that I had no luck getting WebTransport working in Firefox so far. For multiplayer, you may want to use a Chromium-based browser. [Bevy CLI]: https://github.com/TheBevyFlock/bevy_cli