本文是由 DeepSeek 生成的 DDNet 地图编辑器模块分析。仅作为方便看的存档使用。
注意
注意,本文几乎 100% 包含 AI 生成内容!
相关信息
master @ a0dfc77b8src/game/editor/,约 2.6 万行),通过 IEditor 接口注册进 engine;用配置变量 cl_editor(快捷键 Ctrl+Shift+E)在游戏内切换。它不单独起进程,也没有独立渲染器——渲染复用游戏客户端的 CRenderMap。CEditor(应用外壳 / 多标签页) → CEditorMap(一个打开的 .map 文档) → CLayerGroup(图层组,含视差/裁剪) → CLayer 子类(tiles / quads / sounds / game / tele / speedup / switch / tune / front)。std::shared_ptr,由 CEditorMap 的 vector 拥有;元素之间的引用一律是整数索引,因此每次增删都要显式 remap。IEditorAction 对象,压进 CEditorHistory 栈;连续拖拽通过 *PropTracker 的 Begin/End 模式聚合成一条 action。mapitems/map_io.cpp,保存是异步的(CDataFileWriterFinishJob 交给 engine job 队列)。CUi(void *pId 地址即身份 + hot/active 模式);工具栏/快捷键由 X-macro 表 quick_actions.h 声明(但工具栏不会自动遍历它,见 §7.5)。规模速查:editor.cpp 5205 行、popups.cpp 2855 行、editor_server_settings.cpp 2203 行、envelope_editor.cpp 2376 行、editor_actions.cpp 2119 行、map_io.cpp 1289 行、layer_tiles.cpp 1408 行;组件 10 个、具体 action 类 41 个、quick action 55 个、popup 渲染函数 30+ 个。
没想到时隔一年多我还会打开继续编辑这篇文章,这部分就记录一下栖梦端的配置过程吧。

栖梦端(QmClient)是面向中文玩家的社区客户端,在 DDNet 核心玩法之上,提供更现代的界面、清晰的信息反馈与实用的日常功能。
使用 Vanblog 也有好长一段时间了,还挺喜欢这个博客的。但是目前作者的更新不活跃,使用过程中又会遇到一些问题,只能摸索一些解决文案,并记录在这里以备不时之需。