Welcome to bracket-lib
You can read a tutorial series on writing a Roguelike with this library at: https://bfnightly.bracketproductions.com/rustbook/
Bracket-lib is the primary support library for my book, Hands-on Rust. Please consider checking out my book.
Early work has begun on writing a manual. You can find it in the manual
folder, or read it online.
BREAKING CHANGE ALERT: The crossterm
feature is now cross_term
if you are using bracket-terminal
directly. It's still crossterm
for bracket-lib
and rltk
.
IMPORTANT: If you are running the webgpu
backend, you need to add resolver = 2
to your Cargo.toml
file. WGPU requires it for platform selection.
What happened to RLTK?
This is RLTK, renamed because it is increasingly finding usage outside of just Roguelikes. It's also been divided into a number of crates, to make it easy to pick-and-choose the features you need.
rltk
crate wrapsbracket-lib
and re-exports in therltk::
andrltk::prelude
namespace. This preserves compatibility with all existing RLTK projects.bracket-algorithm-traits
exposes the traits required for the various algorithm systems in other crates.bracket-color
is my RGB/HSV color management system.bracket-geometry
exposes various geometric primitives and helpers. Supports other crates.bracket-noise
is a port of Auburn's FastNoise to Rust.bracket-pathfinding
provides a high-performance A* (A-Star) pathing system, as well as Dijkstra maps.bracket-random
is a dice-oriented random number generator, including parsing of RPG-style dice strings such as3d6+12
.
bracket-lib
Using In your Cargo.toml
file, include:
[dependencies]
bracket-lib = "~0.8"
Feature Flags
There are a few feature flags designed to aide integration with other systems:
specs
tells variousbracket-lib
sub-systems to export important primitives as having Specs'Component
type applied.serde
tells variousbracket-lib
sub-systems to support usingSerde
for serialization/de-serialization.
Performance:
threaded
enables multi-threading on some sub-systems.
Terminal mode:
By default, bracket-lib
runs in OpenGL mode (or WebGL if it detects that you are compiling for wasm32-unknown-unknown
). If you want to use other rendering back-ends, disable default features and apply one of the following feature flags:
webgpu
to use thewgpu
system as a back-end, supporting Vulkan, Metal and WebGPU.crossterm
to use the excellentCrossterm
terminal library.curses
to usepancurses
forncurses
orpdcurses
support depending upon your platform.
Sample Projects
- https://github.com/Micutio/innit
- https://github.com/amethyst/shotcaller
- https://github.com/bofh69/rouge
- https://github.com/carsin/miners
- https://github.com/baszalmstra/my-little-robots
- https://github.com/Havegum/Terrain-Generator
- https://github.com/Bobox214/rs-gliphus
- https://github.com/Maxgy/blademaster
- https://github.com/Maxgy/text-rts