In an effort to teach myself Rust I've decided to follow along with
the excellent youtube playlist reconstructing cavestory.
This project uses rust-sdl2 which binds to SDL2.
This project uses Cargo to fetch dependencies and drive compilation.
Make sure you have a recent version of rustc and cargo.
To build simply run: cargo build from the root of the project.
The project is structured as follows:
-- assets/ (assets linked to in the youtube playlist notes)
-- src/ (.rs files used to build the game)
For the most part this program reads much like it's C++ and C++11 counterparts.
-
Traitsare used instead of extending abstract classes.- These are similar to
interfacesin Go, Java, etc.
- These are similar to
-
Pattern matching is leveraged where appropriate
- For a fun head-scratcher: look at
Player::load_sprite()- The rust compiler requires exhaustive patterns, so:
- For every combination of
(Movement, Looking, Facing)load_sprite()must return some sprite. - (Obviously the compiler cannot guarantee that we load the correct sprite.)
- For a fun head-scratcher: look at
-
Reference counting is used for safely sharing pointers.
Some areas that could be improved:
- Needless copying and allocation, espcially w.r.t using strings for map keys.
- Remove unnecessary boxes
- Re-evaluate usages of trait objects
