Deki Editor

基于 Dear ImGui、SDL3 和 OpenGL 的 C++ 场景编辑器。由反射驱动的检视器、热重载、运行模式,以及能把固件烧录到开发板的构建面板。

打开了演示项目的 Deki 编辑器

它是什么

一个用来打开、编辑、运行和发布 Deki 场景的桌面应用。它在进程内承载引擎,所以你用 C++ 写的组件会被编译进一个插件 DLL,并立即出现在检视器里。包也以同样的方式加载。

目前支持 Windows;Linux 也能运行,带原生文件对话框。

下载

编辑器免费且开源(Apache 2.0)。每个版本为每个平台提供一个压缩包,编译器就在里面:解压到任意位置,运行 DekiEditor 即可。不需要再安装任何东西,连 C++ 工具链都不用。

平台压缩包
Windows x86-64DekiEditor-<version>-windows-x86_64.zip
Linux x86-64DekiEditor-<version>-linux-x86_64.tar.gz

在 GitHub 上获取最新版本,每个压缩包旁边都附有它的 SHA-256。

Windows 版本还没有代码签名,所以首次启动时会弹出 SmartScreen 的“Windows 已保护你的电脑”对话框:点击 更多信息,然后点击 仍要运行。如果想自己构建,源代码和配置指南在 github.com/dekiengine/deki-editor。

面板

层级面板:演示场景的对象树

层级是一棵支持多选的树。拖动即可更改父级或调整顺序,结构编辑和数值编辑共用同一份撤销历史。

面板作用
检视器 (Inspector)多对象属性编辑器,由反射生成。不一致的值显示为 ---。
场景视图 (Scene View)带 gizmo、平移、缩放和选择的 2D 画布。
资源浏览器 (Asset Browser)以 GUID 为键、带预览的资源。
控制台 (Console)来自引擎、包和你的插件的日志,可筛选。
构建 (Build)构建固件、导出资源、烧录设备。
性能分析器 (Profiler)层级、平铺和火焰图视图,外加内存。
帧捕获 (Frame Capture)把运行模式下的帧保存为 PNG。
字体导入器 (Font Importer)导入 TTF / OTF,或使用预烘焙的位图字体。
开发板管理器 (Boards Manager)每块开发板的 MCU、内存、显示和外设。
包管理器 (Package Manager)安装、移除和更新包。

检视器自己生成

给字段加上 DEKI_EXPORT 标记。C++26 静态反射代码生成会在构建时识别它,并生成属性描述符及其序列化代码。不需要再注册任何东西。

DEKI_CATEGORY("Demo")
DEKI_DESCRIPTION("Bobs the object up and down on a sine wave.")
class Bobber : public Deki::Component
{
public:
    DEKI_EXPORT DEKI_SLIDER(0, 64)
    float amplitudePx = 12.0f;

    DEKI_EXPORT DEKI_SLIDER(0, 4)
    float speedHz = 0.6f;

    void Awake() override;
    void Update() override;
};

显示 Bobber 组件的检视器

控件也由描述符决定:有范围的 float 用滑块,颜色用取色器,AssetRef<T> 用资源选择器,枚举用下拉框。

其他属性:DEKI_TOOLTIP、DEKI_GROUP、DEKI_UNIT(px)(以像素编辑以米为单位的值)、DEKI_VISIBLE_WHEN(在另一个字段允许之前隐藏该字段),以及 DEKI_EDITOR_ONLY(让字段不进入构建)。

所见即设备所绘

场景视图:显示演示场景的 320x240 画布

运行模式通过与硬件相同的 RenderToBuffer() 路径运行场景,使用屏幕的实际尺寸。编辑模式、运行模式和开发板上的画面一致,因为它们用的是同一个渲染器,而不是某个渲染器的预览。

热重载

修改后切回编辑器,HotReloadService 会对比源码树,卸载包和插件的 DLL,通过 CMake 重新构建,再重新注册组件编辑器,整个过程中场景一直在运行。

靠得住的撤销

每次编辑都是一条命令,而且命令会合并:拖动滑块只算一条撤销记录,而不是几百条。多选编辑会合并成一条命令,作用于所有选中的对象。

构建与烧录

构建面板读取开发板配置,把工具链从头到尾跑一遍:生成平台的 CMake,构建固件(ESP32 通过 ESP-IDF),把资源导出到 storage/,格式为 .tex、MessagePack .scene 和预烘焙字体,然后通过 USB 烧录。同样的导出也可以写入 SD 卡,用于离线启动。

用脚本驱动

编辑器自带一个 MCP 服务器。用 --mcp 启动后,场景、资源、包管理器、构建和截图都可以通过 JSON-RPC 访问,足以把一个项目从零做到截出一张图。本站所有编辑器截图都是这样制作的。