Rust rogue-like game tutorial:
Go to file
2022-02-10 15:44:46 -05:00
raws Add a big bad boss 2022-02-04 15:12:08 -05:00
resources Update tutorial resource files 2021-11-29 14:59:01 -05:00
src Only show welcome message on first level 2022-02-10 15:44:46 -05:00
wasm Some various tweaks and fixes 2022-02-03 16:14:39 -05:00
.gitignore Add FPS display, get webassembly build working 2022-02-03 11:46:29 -05:00
Cargo.toml Separate binary from game engine 2022-02-10 11:54:57 -05:00 Finish implmentation of ranged weapons, completing section 5.28 2022-01-31 15:00:00 -05:00
Makefile Separate binary from game engine 2022-02-10 11:54:57 -05:00 Separate binary from game engine 2022-02-10 11:54:57 -05:00
rustfmt.toml Finish refactoring of map builders 2021-12-15 11:36:17 -05:00

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 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



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)


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/
  • Colors (Bracket-lib RGB struct) have been converted to static values in src/, 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
  • Made the crate a library and binary, with the binary just starting and running the game engine
  • Submodules use named files as the module base, rather than