E引擎

以嵌入式为先的模块化引擎

Deki 是一款免费、模块化的 C++ 引擎,带可视化编辑器。每个功能、每个平台都是一个软件包,所以什么都能做:游戏、界面、工具,甚至完全没有屏幕的服务。它首先为嵌入式设备而做,也能在桌面上运行。

Deki 是一款模块化的 C++ 引擎。核心很小,从渲染到 Wi-Fi,再到平台本身,其余的一切都是可以加入或去掉的软件包。所以你需要什么都能做:游戏、设备的界面、工具,或者完全没有屏幕的服务。

它首先为嵌入式设备而做:掌机、徽章、仪表盘、小玩意、传感器。它有一个像桌面游戏引擎那样的可视化编辑器,按下 Build 按钮就会把项目变成板子的固件并烧录进去,同一个项目也能在桌面上运行。

你能得到什么

  • 可视化编辑器(Windows 和 Linux):场景、检查器、和板子画得一模一样的 Play 视图、撤销以及热重载。
  • 用 C++ 写行为。 组件是一个小小的 C++ 类。它的字段会出现在检查器里,随场景保存,也能撤销,不需要额外注册任何东西。
  • 开箱即用的 2D: 精灵和动画、任意字体的文字、渐变、按钮、滚动列表、滚轮选择器、Tiled 地图、粒子、补间和状态机。简单的 3D 有软件 3D 软件包。
  • 小芯片上的速度。 演示中的每个场景在 LilyGO T-Deck Plus 和 T-Display S3 AMOLED 上都以每秒 60 帧运行,画面不撕裂。屏幕大部分静止时,只绘制并发送变化的部分。
  • 平台就是软件包。 一个项目可以构建到每个有软件包的平台。新的芯片或操作系统是一个新的平台软件包,而不是一个新引擎。
  • 每个功能也是软件包。 渲染、输入、音频、Wi-Fi、BLE、HTTP、GPS、LoRa、SD 卡、I2C、SPI、GPIO:游戏用什么就加什么,其余的不要,构建里只装你放进去的东西。
  • 免费开源, 采用 Apache 2.0 许可证。

能在哪里运行

目前的平台ESP32 系列(ESP-IDF)、Tactility 操作系统、Windows、Linux
可直接使用的板子LilyGO T-Deck、T-Deck Plus、T-Display S3 AMOLED
你自己的板子在编辑器里描述它的屏幕、引脚和总线
新的芯片或操作系统它自己的平台软件包
已在硬件上运行ESP32-S3;构建也支持 ESP32、ESP32-S2、-C3、-C6 和 -H2
屏幕ILI9341、ILI9488、ST7735、ST7789、ST7796、GC9A01、SSD1351 以及两种 AMOLED 控制器,SPI、四线 SPI 或并行;桌面上为窗口

Deki 大量使用浮点运算,所以有硬件 FPU 的芯片运行效果最好。

与其他方案的区别

  • LVGL 是用户界面库:用 C 编写的控件、布局和主题,为菜单和仪表盘而做。Deki 是带场景编辑器的游戏引擎:每一帧都可以摆放和移动的对象、精灵、地图和粒子,界面只是其中一部分。在 Tactility 上,Deki 作为应用与 LVGL 并存运行。
  • Arduino 显示库,例如 TFT_eSPI、LovyanGFX 和 Adafruit GFX,负责画线、文字和图片;游戏循环、场景和资源都要你自己写。Deki 是建立在其上的引擎,对它不直接驱动的屏幕可以使用 LovyanGFX。
  • 桌面引擎,例如 Unity 和 Godot,和 Deki 的工作方式一样,有场景、检查器和组件,但它们不能在单片机上运行。Deki 把这种工作方式带到了嵌入式设备上,同时也保留桌面。

开始使用

下载编辑器,打开演示或新建项目,然后按下 Play。指南和 API 见文档,软件包列表见软件包,有问题欢迎到 Discord 来问。

常见问题

有没有带可视化编辑器、面向单片机的游戏引擎?

有。Deki 有一个桌面编辑器,像桌面游戏引擎一样有场景、检查器和 Play 视图,按下 Build 按钮就会把项目变成板子的固件并烧录。同一个项目也能构建到桌面。

Deki 能在哪些硬件上运行?

任何有对应软件包的平台都可以,因为每个平台都是一个软件包。目前有:通过 ESP-IDF 支持的 ESP32 系列、Tactility 操作系统、Windows 和 Linux。可以直接使用的板子有 LilyGO T-Deck、T-Deck Plus 和 T-Display S3 AMOLED,你也可以在编辑器里描述自己的板子(屏幕、引脚和总线)。新的芯片或操作系统是一个新的平台软件包,而不是一个新引擎。Deki 大量使用浮点运算,所以有硬件 FPU 的芯片运行效果最好。

Deki 支持 ESP32 吗?

支持,ESP32 系列是 Deki 的平台之一。构建通过 ESP-IDF 支持 ESP32、ESP32-S2、ESP32-S3、ESP32-C3、ESP32-C6 和 ESP32-H2;目前在真实硬件上运行过的是 ESP32-S3,包括 LilyGO 的板子和 Tactility。

支持哪些屏幕?

Deki 自己驱动屏幕:ILI9341、ILI9488、ST7735、ST7789、ST7796、GC9A01、SSD1351 以及两种 AMOLED 控制器,可通过 SPI、四线 SPI 或 8 位和 16 位并行总线连接,并能读取常见触摸控制器的触摸。帧的发送不会撕裂,Deki 还不认识的屏幕可以用 LovyanGFX 软件包。在桌面上则画在窗口里。

Deki 免费吗?

免费。编辑器、引擎和软件包都以 Apache 2.0 许可证免费开源,也可以用于商业游戏和产品。

需要会 C++ 吗?

要编写自己的行为就需要:组件是一个小小的 C++ 类,它的字段会自动出现在编辑器的检查器里。场景、精灵、文字、界面、地图、粒子和动画都可以在编辑器里不写代码地拼装出来。

除了游戏,也能做应用和界面吗?

能。2D 软件包有按钮、滚动列表、滚轮选择器和任意字体的文字,还有 Wi-Fi、BLE、HTTP、GPS、LoRa、SD 卡、I2C、SPI 和 GPIO 软件包。项目也可以完全不带屏幕运行。

在单片机上有多快?

演示中的每个场景在 LilyGO T-Deck Plus 和 T-Display S3 AMOLED 上都以每秒 60 帧运行,画面不撕裂。当屏幕大部分静止时,Deki 只绘制并发送变化的部分,所以静止的画面几乎没有开销。

没有板子能试用吗?

能。编辑器的 Play 视图会以板子屏幕的尺寸和颜色格式运行游戏,同一个项目也能构建到 Windows 和 Linux。