8个版本
| 0.8.7 | 2022年10月4日 |
|---|---|
| 0.8.5 | 2021年7月6日 |
| 0.8.2 | 2021年2月15日 |
| 0.8.1 | 2020年4月29日 |
| 0.1.0 | 2020年2月21日 |
1098在游戏开发中排名
4,651次每月下载
在8个包中使用(直接使用3个)
2MB
19K SLoC
bracket-terminal
bracket-terminal是bracket-lib家族的一部分。它提供了一个虚拟的ASCII/Codepage-437终端(可选的瓦片图形支持和层),以及一个游戏循环。这可以帮助你避免实现困难,使编写基于网格的游戏变得容易(Roguelikes非常适合,但任何基于网格/瓦片的游戏都可以使用)。它还提供了键盘和鼠标输入的帮助。
Bracket-terminal支持多个后端
- 默认是
OpenGL,几乎在所有设备上都能运行。GL后端支持所有功能,包括后处理(复古屏幕效果)和层。 WebGL(WASM)后端在Web Assembly中运行,允许你将基于bracket-terminal的游戏编译到网络上。webgpu后端提供在Vulkan、Metal和WebGPU中的渲染。目前除了后处理效果外,支持所有功能。crossterm后端在现有的终端中本地运行。不支持图形功能。curses后端在*NIX终端中本地运行,或在Windows上的pdcurses终端模拟器中运行。不支持图形功能。
重大更改警告:如果你直接使用bracket-terminal,则crossterm功能现在是cross_term。对于bracket-lib和rltk,它仍然是crossterm。
重要:如果你正在运行webgpu后端,你需要将resolver = 2添加到你的Cargo.toml文件中。WGPU需要它来选择平台。
为什么是bracket-terminal而不是直接控制台渲染?
bracket-terminal可以进行终端渲染,但如果你唯一的目的是这个,你可能最好使用crossterm。Bracket-terminal提供了一些你在其他地方找不到的功能
- 它是基于游戏循环的,因此非常适合面向帧的游戏编程。
- Codepage-437的仿真基于图形后端,图形精灵。你可以完全确信,你的游戏将在所有平台上使用你指定的字体(字体)看起来完全一样。
- 它提供了多个图层,可以使用不同的字体/精灵文件。
- 如果您喜欢,还有一些复古的后期处理效果可供选择。
bracket-terminal努力保持简单直接,提供了一个极佳的学习环境。
最小示例
以下代码足以在屏幕上显示Hello Minimal Bracket World。
use bracket_terminal::prelude::*;
struct State {}
impl GameState for State {
fn tick(&mut self, ctx: &mut BTerm) {
ctx.print(1, 1, "Hello Bracket World");
}
}
fn main() -> BError {
let context = BTermBuilder::simple80x50()
.with_title("Hello Minimal Bracket World")
.build()?;
let gs: State = State {};
main_loop(context, gs)
}
值得注意的是,在bracket-terminal中,(0,0)是屏幕的左上角。
示例
使用以下命令运行示例:cargo run --example <name>。
hello_minimal将"Hello Minimal Bracket World"显示在屏幕上。用WASM试一试hello_terminal将带有颜色、每秒帧数(FPS)计数和帧率限制的弹跳"Hello World"显示在屏幕上。用WASM试一试sparse是相同的演示,但在第二个图层上使用VGA 8x16字体,没有帧率限制,并利用批量命令提交。用WASM试一试walking让您可以使用键盘在随机地图上移动@符号。用WASM试一试astar-mouse让您可以使用鼠标在随机地图上移动,使用A-Star路径(来自bracket-pathfinding包)来避开障碍物。用WASM试一试tiles与walking演示类似,但使用了两层图形贴图(仅图形后端)。用WASM试一试rex展示了从REX Paint加载精灵并将其渲染到终端的示例。用WASM试一试postprocess展示了库的后期处理效果——扫描线和屏幕烧灼。用WASM试一试textblock展示了TextBlock系统,为您提供了构建大型文本块的方法,包括自动换行和格式化。用WASM试一试dwarfmap展示了使用Algorithm3D与终端结合,提供Dwarf Fortress风格的3D地图(3D世界的2D“切片”)。它使用bracket-noise库进行地形生成。用WASM试一试keyboard展示了键盘扫描码输入。它主要用于调试。用WASM试一试textsprites展示了多贴图精灵。用WASM试一试native_gl展示了如何直接访问OpenGL。仅适用于opengl后端、WASM或本地。 尝试使用WASM
使用其他后端运行示例
您可以使用不同的后端运行dwarfmap示例,例如。其他后端也适用相同的原理
- OpenGL :
cargo run --example dwarfmap - WGPU:
cargo run --example dwarfmap --no-default-features --features "webgpu" - Curses:
cargo run --example dwarfmap --no-default-features --features "curses" - Crossterm: (注意特性名称为
cross_term)cargo run --example dwarfmap --no-default-features --features "cross_term"
依赖项
~5–24MB
~277K SLoC