The way we'll go about developing the game, is through prototyping and iterations. We want you to also be part of the decision process, so as you start contributing to the codebase, we'd love to hear your ideas on the next features we should implement.
To keep things simple, we have opted to go with the following parameters:
- Game will be 2D pixel art
- The view will be a side view
As for genre, we are currently aiming for a metroidvania type game, but we might mix and match elements from multiple genres as we progress.
- Language: Rust
- Framework: Bevy (ECS)
- How to use Rust
- How to use the Bevy framework
- Game design
- How to work in an ECS architecture
- Understand the different systems required to make a game
- Clone this repository
- Move into the project directory
- Run the command
cargo run game
The repo is already setup to tell the Rust compiler to use all the optimization possibles, but this mostly helps during compilation between iterations. The first time you compile, or if there are new crates added to the project, you might have to compile everything again, or compile a big part of it, which can be lengthy. But usually, compilation between iterations should only take a few seconds on average.
A way to keep compilation times short between iterations (or just get them started ahead of time), is to use a tool like bacon
. This tool allows you to set up a build/check/test/run command whenever a file is detected to have changed. This will ensure that the compilation process is completed as early as possible. To install it, simply run cargo install --locked bacon
. Then you can run it by running bacon
in the project root directory.
Please read the contribution guide.
- The Rust book: Hands-down the best resource to get started with Rust (I recommend completing through chapter 6 in the very least).
- Data modeling in Rust: Gives a good overview of structs and enums, the main building blocks for data modeling in Rust.
- Rust by example: Lots of great basic examples to use as reference.
- Bevy: A quick introduction: An introduction to basic Bevy concepts.
- Quick start guide: The official quick start guide.
- Zymartu Games' Bevy tutorial series A great tutorial series that I highly recommend to get started with Bevy.
Note
The following resource is a great starting point for any questions you might have on how to perform a specific task, or want to learn about a specific bevy feature:
taintedcoders.com's guide to Bevy
Bevy and ECS
- The Bevy GitHub repo: As you get more comfortable with Rust and Bevy, I highly recommend looking at their open issues, which often have some great beginner friendly ones. A great way to contribute to open-source software.
- The Bevy Discord: A great community if you need any help on any Bevy related topics. Also has some great examples and showcase of what Bevy can do in their Showcase channel.
- Bevy's official examples: One-stop shop for bevy code examples.
- What is an ECS: Brief overview of what is an ECS.
- The Unofficial Bevy Cheat Book: Another great resource for learning Bevy.
- A collection of other Bevy resources: A compilation of Bevy related resources.
- Good breakdown of Bevy ECS A closer look to how Bevy works.
- How Overwatch uses ECS How the popular game Overwatch uses ECS to power their game. Great watch!
- Chris Biscardi: Some tutorials, but nowadays mostly news about Bevy.
- PhaestusFox: Tutorials and concepts explainers.
- Tiny Glade A beautiful, procedural sandbox game made in Bevy (although they use a custom renderer).
- Games made in Bevy on itch.io A collection of games made in Bevy.
Learning Rust
- Rustlings: Learn Rust through small exercises: A collection of interactive exercises to familiarize yourself with Rust concepts.
- Why rust?: An overview of what makes Rust different from other languages.
- Learn Rust in 10 minutes A fast paced introduction to a lot of Rust concepts.
- Let's Get Rusty: Great channel for learning Rust concepts.
- Jeremy Chone: Great channel for learning Rust concepts.
- Jon Gjengset: Great channel that does deep dives into different Rust crates.
- No Boilerplate: Great channel for understanding the mindset needed to program Rust.