76 lines
2.5 KiB
Markdown
76 lines
2.5 KiB
Markdown
# Rust Roguelike
|
|
|
|
A rogue-like game, implemented in Rust, with the `specs` ECS library, and `rltk` roguelike toolkit.
|
|
|
|
## Rust Setup
|
|
|
|
Follow the instructions on the [Getting Started](https://www.rust-lang.org/learn/get-started) page of the Rust language
|
|
website.You should then have `rustup` and `cargo` available in your terminal. If you want to run on a Raspberry Pi, or
|
|
via WebAssembly, you will also need `make`.
|
|
|
|
## Running the game
|
|
|
|
* For most setups, `cargo run` or `make run`.
|
|
* For the Raspberry Pi: `make run-pi`
|
|
|
|
### Controls
|
|
|
|
#### Movement
|
|
|
|
Any movement commands with numbers can use the top row or numpad.
|
|
|
|
| Direction | Keys |
|
|
|:---------:|--------------------|
|
|
| ↑ | ↑, 8, k |
|
|
| ↓ | ↓, 2, j |
|
|
| ← | ←, 4, h |
|
|
| → | →, 6, l |
|
|
| ↖ | 7, u, q, Home |
|
|
| ↗ | 9, y, w, Page Up |
|
|
| ↙ | 1, b, a, End |
|
|
| ↘ | 3, n, s, Page Down |
|
|
|
|
#### Item management
|
|
|
|
| Key | Action |
|
|
|:---:|------------------|
|
|
| g | Grab an item |
|
|
| i | Inventory menu |
|
|
| d | Item drop menu |
|
|
| r | Remove item menu |
|
|
|
|
#### Ranged weapons (Not magic or scrolls)
|
|
|
|
| Key | Action |
|
|
|:---:|-------------------------|
|
|
| v | Cycle potential targets |
|
|
| f | Fire at selected target |
|
|
|
|
#### Other actions
|
|
|
|
| Key(s) | Action |
|
|
|:--------:|---------------|
|
|
| 5, Space | Skip a turn |
|
|
| Escape | Save and quit |
|
|
|
|
#### Mouse controls
|
|
|
|
By hovering over tiles, the name of item(s) on that tile will appear. For ranged scroll attacks, the left mouse button
|
|
is used to select a target.
|
|
|
|
## WebAssembly Build
|
|
|
|
* Install the WebAssembly target via rustup: `rustup target add wasm32-unknown-unknown`
|
|
* Install `wasm-bindgen`: `cargo install wasm-bindgen-cli`
|
|
* Run `make build-wasm`
|
|
* Serve the `wasm` folder with a web server (wasm will not work straight from the html file)
|
|
|
|
## Makefile
|
|
|
|
If you want to see what else you can run with Makefile, run `make help`. This will list commands and what they do.
|
|
|
|
## Changes from tutorial
|
|
* Added a macro to register components for `specs`, like was in the tutorial for saving/loading.
|
|
* Game state machine is moved to `src/state.rs`
|
|
* Colors (Bracket-lib `RGB` struct) have been converted to static values in `src/colors.rs`, to cut down on boilerplate and numbers of ways of generating color values.
|
|
* All references to `rltk` have been converted to `bracket_lib`, as `rltk` was a facade in `bracket_lib` |