#游戏引擎 #引擎 #游戏 #3d #图形

kit

一个用于3D游戏的小型游戏引擎

2个版本

0.0.2 2020年7月20日
0.0.1 2020年7月18日

#1692 in 游戏开发

MIT 许可证

88KB
2.5K SLoC

kit

** 警告:非常早期的WIP **

Kit是一个非常原始的3D游戏引擎。我制作它是为了学习游戏引擎编码,并且希望将来它能成为游戏比赛项目的合理基础。

Kit将支持2D和3D,但如果您在寻找专注于2D的引擎,我建议您查看ggez,因为它看起来非常稳定,并且在开发上已经取得了很大的进步。

待办事项

缺少的功能很多。请自行承担风险(我甚至不会说它现在可用)。我目前正在计划添加的功能

  • 游戏手柄支持
  • 完整的键盘输入支持
  • 鼠标输入支持
  • 音频
  • 可能需要文档 /s
  • 合理的(或可扩展的?可配置的?)绘制命令限制(它们目前非常任意)
  • 完整的矢量数学库(也许我会在以后切换到glam?我手动编写的版本现在有很多漏洞和不一致性)
  • 调查使用wgpu-rs而不是sokol(wgpu-rs可能是更面向Rust的方法)
  • 3D模型加载
  • 照明(可能)
  • 在绘制命令中,线、圆和点原语总是被绘制在模型之上和精灵之下 - 应该修复深度处理
  • 游戏热重载以进行快速迭代
  • 示例项目
  • 多个渲染层(例如,用于覆盖GUI)
  • 资源卸载(用于区域转换等)
  • 从某些易于编辑的通用格式加载精灵图集

入门

use kit::*;

const TITLE: &str = "My Amazing Game";

struct App {
    // game state can go here
}

impl KApp for App {
    fn new() -> Self {
        Self {}
    }
    fn init(&mut self, ctx: &mut Ctx) {
        // initialization logic goes here
    }
    fn frame(&mut self, ctx: &mut Ctx) {
        let state = &mut self.state;
        // update logic goes here
    }
}

fn main() {
    run::<App>(KAppDesc {
        window_title: TITLE.to_string(),
        ..Default::default()
    });
}

依赖项

~14MB
~73K SLoC