parent
d2e6bfac2b
commit
287e00f8ce
1 changed files with 44 additions and 15 deletions
@ -1,23 +1,52 @@ |
|||||||
This project aims to re-create the functionality of "Minecraft Classic" 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. |
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. |
||||||
|
|
||||||
We're using [Bevy] (and thus Rust) and are going to be making heavy use of Entity Component System (ECS) design. |
|
||||||
|
|
||||||
[Bevy]: https://bevy.org/ |
[Bevy]: https://bevy.org/ |
||||||
|
|
||||||
## Goals |
## Goals |
||||||
|
|
||||||
- Creative mode editing |
- ☐ Creative mode editing |
||||||
- Basic player physics |
- ☐ Basic player physics |
||||||
- Simple cellular automaton interactions |
- ☐ Limited world size (configurable) |
||||||
- Limited world size (configurable) |
- ☐ Block definitions loaded at startup |
||||||
- Data-driven block palette loaded at startup |
- ☐ Custom block models (and textures) |
||||||
- Custom block models (and textures) |
- ☐ Simple cellular automaton interactions |
||||||
- Multiplayer |
- ☑ Multiplayer (server-authoritative) |
||||||
- Run in browser |
- ☑ Runs in browser |
||||||
|
|
||||||
## Non-goals |
## Non-goals |
||||||
|
|
||||||
- Non-player entities. |
- Non-player entities (animals, falling blocks, block entities) |
||||||
- "Infinite" terrain. It shouldn't be too difficult to support this, but this is to keep the scope of the project small. This can be explored when the game is in a playable state. |
- Modding API (other than loading block definitions) |
||||||
- More sensible liquid handling such as "waterlogging", partial liquid blocks and flow mechanics. |
- Infinite, streaming terrain (possible, but currently out of scope) |
||||||
- Modding API. Something I'd like to see, but also 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` in the following code block. |
||||||
|
|
||||||
|
```sh |
||||||
|
# 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: |
||||||
|
|
||||||
|
```sh |
||||||
|
# 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. |
||||||
|
|
||||||
|
[Bevy CLI]: https://github.com/TheBevyFlock/bevy_cli |
||||||
|
|||||||
Loading…
Reference in new issue