Deki 引擎本身刻意做得很小:对象、组件、生命周期和资源系统。你能看到的一切、所有和硬件打交道的东西,都是包。打开包管理器,添加一个包,它的组件就出现在检视器里。不添加,它就不会进入固件。

下面是目前已有的包。
让东西动起来
- 2d:精灵、文字(位图字体,以及在编辑器中烘焙的 TTF)、精灵表动画、渐变、九宫格面板、按钮、滚动、裁剪和滚轮选择器。
- particles:带形状、重力、阻力的发射器,以及作用于每个粒子生命周期的修改器,用节点图搭建。
- tween:30 来种缓动曲线,可以在检视器里用,也可以在代码里用。
- fsm:画在画布上的状态机,每个状态都有自己的动作流程。
- input:触摸、鼠标、按键、轨迹球和 I2C 键盘,分发给需要它们的组件。
- rendering:相机,以及其他包用来绘制的渲染器。
- 3d:实验性,软件光栅化的网格,与 2D 共用帧缓冲,支持导入
.obj。 - nodegraph:粒子和状态机所用的图画布,任何需要它的包都可以用。
- tiledmapeditor-integration:放入一张用 Tiled 做的地图,它会分块流式加载。
与外界通信
- gps:任何 NMEA 接收器。它会自己找出接收器的波特率,除了位置,还会报告卫星和海拔。
- lora:本版本新增。用 Semtech SX1262 收发数据,并强制遵守占空比限制。
- wifi 和 ble:Wi-Fi 和 Bluetooth LE 各自对应一个接口,无线电由开发板提供。
- http 和 json:获取数据,再把它读出来。
- imu、rtc、audio 和 sdcard:运动、时间、声音和存储。
- i2c、i2s、uart 和 gpio:其他包所依托的总线,每块开发板配置一次即可。
在哪里运行
- esp32-integration:在编辑器里通过 ESP-IDF 构建和烧录。
- lovyangfx-integration:SPI、并口和 QSPI 显示屏,以及它们的触摸面板。
- sdl3-integration 和 desktop-integration:Windows 和 Linux 上的窗口、输入和文件。
- tactility-integration:把 Deki 游戏作为 Tactility 固件里的一个应用,从它的主屏幕启动,而不是单独烧录。
- lilygo-boards:两块可以直接构建的开发板,T-Deck Plus 和 T-Display S3 AMOLED。开发板也是一个包,添加一块开发板主要就是描述它的硬件。
项目如何获取它们
项目列出自己用到的包,其余的由编辑器去获取:每个包都列出了自己需要什么,这些依赖也会一起装上。它们从 registry 里列出的 git 标签安装,所以一个项目明年构建出来的结果和今天一样。为设备构建时,项目中没有用到的包功能不会进入固件。
每个包都是一个独立的仓库,采用 Apache 2.0,包目录里每个包都有一页介绍。缺了什么?一个包就是一个带 package.json 和一些 C++ 代码的文件夹;现有的包就是最好的例子。
