#crossterm #bevy #style #terminal #plugin #develop #bevy-plugin

bevy_crossterm

使用crossterm和Bevy开发终端游戏

1个不稳定版本

0.4.0 2020年12月28日

#2000 in 游戏开发

MIT许可证

2MB
1K SLoC

bevy_crossterm

什么是bevy_crossterm?

bevy_crossterm是一个使用crossterm作为渲染器的Bevy插件。它提供自定义组件和事件,使用户能够为终端开发游戏。

目录

特性

  • 带有颜色和属性的精灵和样式
    • 最多24位颜色(取决于宿主终端支持的情况)
  • 增量绘制:仅在有变化时绘制到屏幕上
  • 透明度:精灵可以有洞,因此下面的精灵不会被覆盖
  • 设置光标的位置,显示和隐藏光标
  • 设置窗口标题
  • 集成到Bevy的资产系统中,因此精灵和样式可以从磁盘加载,也可以进行热重载

演示GIF

demo

入门

请参阅示例以获取可运行的代码和详细的注释。

[dependencies]
bevy = { version = "0.4", default-features = false }
bevy_crossterm = { git = "https://github.com/octotep/bevy_crossterm", branch = "trunk" }
use bevy::prelude::*;
use bevy_crossterm::prelude::*;

pub fn main() {
    let mut settings = WindowSettings::default();
    settings.set_title("Hello, World!");

    App::build()
        // Add our window settings
        .add_resource(settings)
        // Add the DefaultPlugins before the CrosstermPlugin. The crossterm plugin needs bevy's asset server, and if it's
        // not available you'll trigger an assert
        .add_plugins(DefaultPlugins)
        .add_plugin(CrosstermPlugin)
        .add_startup_system(startup_system.system())
        .run();
}

fn startup_system(
    commands: &mut Commands,
    mut sprites: ResMut<Assets<Sprite>>,
    mut stylemaps: ResMut<Assets<StyleMap>>,
) {
    commands
        .spawn(SpriteBundle {
            sprite: sprites.add(Sprite::new("Hello, world!")),
            stylemap: stylemaps.add(StyleMap::default()),
            ..Default::default()
        });
}

在任何时候按Ctrl-c退出。

依赖项

~19–28MB
~451K SLoC