#graphics #opengl #2d-game #cross-platform #hardware-accelerated #font-rendering #framework

tge

使用纯Rust编写,基于OpenGL 3.3+的轻量级跨平台2D游戏框架。

5个版本

0.0.4 2021年10月20日
0.0.3 2020年8月21日
0.0.2 2020年8月7日
0.0.1 2020年3月6日
0.0.0 2019年2月1日

#1312 in 游戏开发

MIT/Apache

190KB
5K SLoC

TakWolf的游戏引擎(tge)

Crates.io Docs.rs License

使用纯Rust编写,基于OpenGL 3.3+的轻量级跨平台2D游戏框架。

灵感来源于 LÖVE

tge目前处于非常早期的开发阶段。API可能会更改。直到版本 0.1.0

功能

  • 仅2D,使用像素单位。
  • 基于OpenGL的硬件加速渲染。
  • 自动处理渲染批处理。
  • 支持动态字体渲染和文本布局。
  • 支持高DPI。
  • 处理键盘、鼠标、触摸、触摸板和游戏手柄输入。
  • 音频播放。(待完成)

非目标

  • 3D。
  • 视觉编辑器。

以下不包含,但可以轻松与其他crate协同工作

  • 实体组件系统(ECS)。
  • 物理引擎和碰撞检测。
  • 网络。

使用方法

将依赖项行添加到您的 Cargo.toml 文件中

[dependencies]
tge = "0.0.4"

为了提高性能,请添加以下配置

[profile.dev]
opt-level = 3

然后创建一个基本模板。以下是最小示例,它将创建一个窗口

use tge::prelude::*;

struct App {}

impl App {
    fn new(_: &mut Engine) -> GameResult<Self> {
        // load assets
        Ok(Self {})
    }
}

impl Game for App {
    fn update(&mut self, _: &mut Engine) -> GameResult {
        // handle logic
        Ok(())
    }

    fn render(&mut self, engine: &mut Engine) -> GameResult {
        engine.graphics().clear(Color::BLUE);
        // draw sprites
        Ok(())
    }
}

fn main() -> GameResult {
    let mut engine = EngineBuilder::new()
        .window_config(WindowConfig::new()
            .title("My Game")
            .inner_size((1024.0, 600.0)))
        .build()?;
    let mut app = App::new(&mut engine)?;
    engine.run(&mut app)
}

就这样!

您还可以查看 examples/ 目录以了解其他示例。

性能

请参阅示例 bunny_markhare_mark

待完成

以下正在开发中

  • 混合
  • 程序统一
  • 截图
  • 虚拟资产路径
  • 异步加载资产
  • 音频
  • 文档

许可证

MITApache-2.0

依赖项

~18MB
~358K SLoC