1 unstable release
0.0.0 | Feb 15, 2023 |
---|
#22 in #lets
8KB
Bevy Roguelike Toolkit (BRLTK)
An opinionated rougelike toolkit for bevy
BRLTK lets you use Bevy with various roguelike libraries. Currently, it supports doryen-rs, bracket-lib, and bevy_ascii_terminal
Compatible Bevy versions
The main branch is compatible with the latest Bevy release
Compatibility of BRLTK
versions:
BRLTK |
bevy |
---|---|
0.1.0 |
0.9 |
Getting Started
Using doryen-rs
backend:
App::build()
// Add the `BRLTKPlugin` to Bevy.
.add_plugin(BRLTKPlugin::with_backend(DoryenBackend {
// here are all the available options.
// better practice is to use default values (see other examples)
app_options: DoryenAppOptions {
console_width: CONSOLE_WIDTH,
console_height: CONSOLE_HEIGHT,
screen_width: CONSOLE_WIDTH * 8,
screen_height: CONSOLE_HEIGHT * 8,
window_title: String::from("my roguelike"),
font_path: String::from("terminal_8x8.png"),
vsync: true,
fullscreen: false,
show_cursor: true,
resizable: true,
intercept_close_request: false,
max_fps: 60,
},
..Default::default()
}))
// Add your Bevy systems like usual. Excluding startup systems, which
// only run once, these systems are run during Doryen's update phase;
// i.e. 60 times per second.
.add_startup_system(init)
.add_system(input)
// The `RenderSystemExtensions` trait lets you add systems that should
// be run during Doryen's render phase.
.add_doryen_render_system(render)
.run();
Using bracket-lib
backend:
⚠️(Default Plugins are required for the bracket-lib
backend)⚠️
App::build()
.add_plugins(DefaultPlugins)
// Add the `BRLTKPlugin` to Bevy.
.add_plugin(BRLTKPlugin::with_backend(
BracketLibBackend::simple_80x50()
.with_named_color("blue", BLUE)
.with_named_color("pink", Color::PINK),
))
.insert_resource(State {
y: 0,
going_down: true,
})
.add_system(tick)
.run();
Once set up, you can quickly try out the examples by cloning this repo and running the following commands:
# Switch to the correct version (latest release, default is main development branch)
git checkout latest
# Runs the "basic_doryen" example
cargo run --example basic_doryen
or
# Runs the "basic_bracket" example
cargo run --example basic_bracket
Libraries Used
Bevy is only possible because of the hard work put into these foundational technologies:
- bevy: a refreshingly simple data-driven game engine built in Rust
- doryen-rs: Ascii roguelike library in rust with native and wasm support
- bracket-lib: bracket-lib is a wrapper of the bracket- set of crates designed initally for roguelike development (as RLTK) and later transitioned into a general use crate.
- bevy_ascii_terminal: A simple ascii terminal integrated into bevy's ecs framework.
Thanks and Alternatives
Additionally, I would like to thank the Jice and his library doryen-rs for providing the bones to build this toolkit. This crate uses a modified version of doryen-rs
to provide a more bevy-like interface.
I would also like to thank alexschrod who started this implementation back in bevy 0.5, which allowed me to fork the repository and continue the work.
And as always, a special shoutout to thebracket for his bracket-lib game engine which began my journey into the world of roguelikes. He is my inspiration for this project.
License
BRLTK is free, open source and permissively licensed! All code in this repository is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.
The assets included in this repository (for our examples) typically fall under different open licenses, but most are free for commercial use.
See CREDITS.md for the details of the licenses of those files.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.