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