B博客

盒子里有什么:29 个包

精灵、粒子、状态机、GPS、LoRa、Wi-Fi,还有开发板本身。Deki 核心之外的每一部分都是包,项目只带上自己用到的那些。

发布于
作者
DevKirbyrawr
阅读
约 3 分钟
一个发射器,以及从它飞出的粒子。

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

其中 12 个包的插图:2d、particles、tween、fsm、input、rendering、gps、lora、wifi、imu、esp32-integration 和 sdl3-integration

下面是目前已有的包。

让东西动起来

  • 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++ 代码的文件夹;现有的包就是最好的例子。

← 全部文章