|
|
1 month ago | |
|---|---|---|
| .cargo | 1 month ago | |
| assets | 1 month ago | |
| client | 1 month ago | |
| common | 1 month ago | |
| .gitignore | 1 month ago | |
| Cargo.lock | 1 month ago | |
| Cargo.toml | 1 month ago | |
| README.md | 1 month ago | |
README.md
This project, written in Rust and using Bevy, aims to re-create the functionality of Minecraft "Classic" (2009) for the sake of creating a game that could be considered finished while developing code and experience that can be used in future projects that have greater ambitions.
Goals
- ☐ Creative mode editing
- ☐ Basic player physics
- ☐ Limited world size (configurable)
- ☐ Block definitions loaded at startup
- ☐ Custom block models (and textures)
- ☐ Simple cellular automaton interactions
- ☑ Multiplayer (server-authoritative)
- ☑ 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.
To compile and run it yourself, other than setting up Rust (through rustup for example), I recommend using Bevy CLI. It simplifies some tasks, such as building and testing on web. But if you don't want to use it, just replace bevy run with cargo run for the following commands.
# Run the game locally.
bevy run
bevy run -- local # same as above
bevy run --release -- local # with release optimizations
# Host a server for the game and play on it.
# When starting up, will print the "certificate digest".
bevy run -- host [PORT]
# Connect to an existing server.
bevy run -- connect <ADDRESS[:PORT]> <DIGEST>
To test the game in the browser, you can do the following:
# Run a local webserver to serve the game, and open it.
bevy run web --open
If you want to connect to a server, add ?connect=<ADDRESS[:PORT]>&digest=<DIGEST> to URL. Due to a limitation, hostnames like localhost won't work here – use an IP instead. Also note that I had no luck getting WebTransport working in Firefox, so you may want to try with a Chromium-based browser.