bracket-lib
bracket-lib copied to clipboard
The Roguelike Toolkit (RLTK), implemented for Rust.
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.
rltkcrate wrapsbracket-liband re-exports in therltk::andrltk::preludenamespace. This preserves compatibility with all existing RLTK projects.bracket-algorithm-traitsexposes the traits required for the various algorithm systems in other crates.bracket-coloris my RGB/HSV color management system.bracket-geometryexposes various geometric primitives and helpers. Supports other crates.bracket-noiseis a port of Auburn's FastNoise to Rust.bracket-pathfindingprovides a high-performance A* (A-Star) pathing system, as well as Dijkstra maps.bracket-randomis a dice-oriented random number generator, including parsing of RPG-style dice strings such as3d6+12.
Using bracket-lib
In your Cargo.toml file, include:
[dependencies]
bracket-lib = "0.7"
Feature Flags
There are a few feature flags designed to aide integration with other systems:
specstells variousbracket-libsub-systems to export important primitives as having Specs'Componenttype applied.serdetells variousbracket-libsub-systems to support usingSerdefor serialization/de-serialization.
Performance:
threadedenables 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:
webgputo use thewgpusystem as a back-end, supporting Vulkan, Metal and WebGPU.crosstermto use the excellentCrosstermterminal library.cursesto usepancursesforncursesorpdcursessupport 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