20 KiB
下面是按你最新判断重新整理后的 MetaCore 完整任务计划 v2。 核心调整是:Runtime UI MVP 提前到 Build Settings / 项目打包之前。
MetaCore 当前总路线
P0 迁移基线:Panda3D 清理 / JSON 资产链路稳定
↓
P1 渲染主链路:ECS → SceneRenderSync → Filament
↓
P2 编辑器基础闭环:Hierarchy / Inspector / Gizmo / Save Reload
↓
P3 编辑器生产力:Project / Import / Prefab / Material / Launch Player
↓
P4 Runtime UI MVP:RmlUi 最小运行时 UI 闭环
↓
P5 Build Settings:项目打包入口
↓
P6 Cooked Runtime:真正发布期运行
↓
P7 多平台 / 国产化 / Web
↓
P8 稳定化 / 文档 / 示例项目 / 版本发布
当前状态
已完成
P0 迁移基线:已完成
P1 渲染主链路:已完成
P2 编辑器基础闭环:已完成
也就是现在 MetaCore 已经具备:
JSON Scene
→ ECS Scene
→ SceneRenderSync
→ Filament 渲染
→ Editor Hierarchy
→ Inspector
→ Gizmo
→ Save / Reload
→ Player 主相机运行
接下来正式进入 P3 编辑器生产力阶段。
P0:迁移基线【已完成】
目标
清理 Panda3D 历史层,确立 Filament + JSON 资产路线。
已完成
P0.1 移除 Panda3D / simplepbr 构建引用
P0.2 删除 MetaCorePandaSceneBridge
P0.3 删除 cmake/MetaCorePanda3D.cmake
P0.4 清空 PANDA3D_ROOT 后可独立 configure
P0.5 Release 构建 Editor / Player / SmokeTests 通过
P0.6 默认场景切到 .mcscene.json
P0.7 Prefab 切到 .mcprefab.json
P0.8 .mcmeta 不再被 ImportPipeline 当成源资产
P0.9 Cook 支持 JSON 场景 / Prefab / Material / UI
仍建议补充
P0-T01 整理 SandboxProject 历史模型资源改动
P0-T02 确认 Library/Cooked 是否进入 .gitignore
P0-T03 给当前迁移状态打 milestone commit
建议里程碑:
milestone: remove Panda3D backend and stabilize JSON asset pipeline
P1:渲染主链路【已完成】
目标
让 Filament 真正由 ECS 场景数据驱动,而不是只跑 Demo。
已完成
P1.1 新增 SceneRenderSync 快照层
P1.2 收集 MeshRenderer / Camera / Light / WorldMatrix
P1.3 Filament bridge 读取 SceneRenderSync 快照
P1.4 Scene Light 同步到 Filament Light
P1.5 Player 优先使用场景主相机
P1.6 Editor Gizmo 保持 ImGui / ImGuizmo overlay
P1.7 Smoke test 通过
P1.8 Editor / Player / Tests Release 构建通过
后续技术债
T-DEP-001 解决 Filament Debug / Release runtime mismatch
当前可以先明确支持:
Release
RelWithDebInfo
Debug 链接失败暂时不要阻塞主线。
P2:编辑器基础闭环【已完成】
目标
让 MetaCoreEditorApp 具备最小 Unity-like 场景编辑能力。
已完成
P2.1 Hierarchy 显示实体
P2.2 Entity Selection
P2.3 Inspector 编辑 Transform
P2.4 Inspector 编辑 Camera
P2.5 Inspector 编辑 Light
P2.6 SceneView 渲染 ECS 场景
P2.7 Gizmo 操作 Transform
P2.8 保存 .mcscene.json
P2.9 关闭重开后恢复场景
P2.10 Player 使用主相机场景运行
P2 验收标准
打开 Editor
→ 打开 Main.mcscene.json
→ 选择实体
→ Inspector 修改 Transform / Camera / Light
→ Gizmo 移动物体
→ 保存场景
→ 关闭 Editor
→ 重新打开 Editor
→ 场景恢复
→ 启动 Player
→ Player 使用主相机渲染
建议里程碑:
milestone: complete editor authoring loop
P3:编辑器生产力【下一阶段重点】
阶段目标
让编辑器从“能编辑场景”升级为“能组织项目资产、导入资源、创建 Prefab、编辑材质、一键运行”。
P3 不做正式打包,不做 cooked-only runtime。
P3.1 Project 面板增强
任务
P3.1-T01 显示 Assets 目录树
P3.1-T02 显示 Scenes / Prefabs / Models / Materials / Textures / UI
P3.1-T03 识别 .mcscene.json
P3.1-T04 识别 .mcprefab.json
P3.1-T05 识别 .gltf / .glb
P3.1-T06 识别材质 JSON
P3.1-T07 识别贴图 png / jpg / ktx / hdr
P3.1-T08 支持刷新 Project 面板
P3.1-T09 支持右键菜单
P3.1-T10 支持重命名资产
P3.1-T11 支持删除资产
P3.1-T12 支持双击打开 Scene
验收标准
Project 面板能浏览 Assets
双击 .mcscene.json 可打开场景
右键可刷新、重命名、删除基础资产
P3.2 资产导入体验
任务
P3.2-T01 拖入 glTF / GLB 到 Assets
P3.2-T02 自动生成 .mcmeta
P3.2-T03 自动分配 AssetGuid
P3.2-T04 Project 面板自动刷新
P3.2-T05 导入后可在 Inspector 查看资产信息
P3.2-T06 模型资产可拖入 Scene
P3.2-T07 拖入 Scene 后生成 Entity + Transform + MeshRenderer
P3.2-T08 MeshRenderer 引用模型 AssetGuid
P3.2-T09 导入失败时 Console 输出错误
P3.2-T10 防止 .mcmeta 被重复导入
验收标准
把 GLB 放入 Assets/Models
→ 自动生成 .mcmeta
→ Project 面板出现模型
→ 拖到 Scene
→ Hierarchy 出现实体
→ SceneView 显示模型
→ 保存重开后恢复
P3.3 Prefab 最小工作流
任务
P3.3-T01 选中 Entity 后支持 Create Prefab
P3.3-T02 保存为 .mcprefab.json
P3.3-T03 Prefab 保存 Entity 层级、Transform、MeshRenderer、Camera、Light
P3.3-T04 Project 面板显示 Prefab
P3.3-T05 从 Project 拖 Prefab 到 Scene
P3.3-T06 实例化 Prefab Entity
P3.3-T07 Prefab Instance 保存 prefabGuid
P3.3-T08 Inspector 显示 Prefab Instance 状态
P3.3-T09 支持 Apply Prefab
P3.3-T10 支持 Revert Prefab
P3.3-T11 支持断开 Prefab 连接
暂不做
Prefab Variant
Nested Prefab 深度编辑
Prefab Override 可视化 Diff
多人协作冲突解决
验收标准
Entity → Save as Prefab
→ 删除原 Entity
→ 从 Project 拖 Prefab 回场景
→ 修改 Transform
→ Apply
→ 重新拖一个 Prefab 实例
→ 应用后的数据正确
P3.4 Material 基础编辑
任务
P3.4-T01 定义 Material 资产格式
P3.4-T02 支持创建 Material
P3.4-T03 保存为 .mcmaterial.json 或当前已有材质 JSON
P3.4-T04 Inspector 编辑 BaseColor
P3.4-T05 Inspector 编辑 Metallic
P3.4-T06 Inspector 编辑 Roughness
P3.4-T07 支持 BaseColor Texture 引用
P3.4-T08 MeshRenderer 可绑定 Material AssetGuid
P3.4-T09 SceneRenderSync 收集 Material 引用
P3.4-T10 Filament bridge 应用 MaterialInstance
P3.4-T11 保存重开后材质恢复
暂不做
Shader Graph
材质节点编辑器
复杂透明排序
完整 PBR 参数集
验收标准
创建 Material
→ 修改 BaseColor / Roughness / Metallic
→ 绑定到模型
→ SceneView 更新
→ 保存重开恢复
P3.5 一键 Launch Player
任务
P3.5-T01 菜单增加 Run / Launch Player
P3.5-T02 Launch 前自动保存当前场景
P3.5-T03 启动 MetaCorePlayer
P3.5-T04 传入 project path
P3.5-T05 传入 scene path
P3.5-T06 Player 加载当前场景
P3.5-T07 Player 使用主相机运行
P3.5-T08 Console 显示启动日志
P3.5-T09 Player 启动失败时 Editor 输出错误
验收标准
Editor 中编辑场景
→ 点击 Run / Launch Player
→ 自动保存
→ 打开 Player
→ Player 显示同一个场景
P3 完成标志
Project 面板可用
资产导入可用
Prefab 最小闭环可用
Material 基础编辑可用
Editor 可一键启动 Player
建议里程碑:
milestone: editor asset prefab material workflow
P4:Runtime UI MVP【提前到打包前】
阶段目标
先让 MetaCore 运行时具备最小 UI 能力。 不做完整 UI 编辑器,只做能显示、保存、加载、响应基础输入的 RmlUi 运行时闭环。
P4.1 RmlUi 基础集成
任务
P4.1-T01 接入 RmlUi 依赖
P4.1-T02 初始化 RmlUi Context
P4.1-T03 建立 RmlUi 渲染后端
P4.1-T04 建立输入事件转发
P4.1-T05 Player 中显示第一个 .rml 页面
P4.1-T06 支持字体加载
P4.1-T07 支持图片资源加载
验收标准
启动 Player
→ 3D 场景正常渲染
→ 屏幕上显示一个 RmlUi 面板
P4.2 UI 资产识别
任务
P4.2-T01 Project 面板识别 .rml
P4.2-T02 Project 面板识别 .rcss
P4.2-T03 生成 UI .mcmeta
P4.2-T04 UI 资产拥有 AssetGuid
P4.2-T05 ImportPipeline 不误处理 UI 依赖文件
P4.2-T06 双击 .rml 可预览或打开外部编辑器
验收标准
Assets/UI/MainHUD.rml
Assets/UI/MainHUD.rcss
→ Project 面板正确显示
→ 有 GUID
→ 不被误导入成模型/场景
P4.3 UIComponent
任务
P4.3-T01 新增 UIComponent
P4.3-T02 UIComponent 引用 RML AssetGuid
P4.3-T03 UIComponent 支持 Visible
P4.3-T04 UIComponent 支持 SortOrder
P4.3-T05 Inspector 可编辑 UIComponent
P4.3-T06 场景保存 UIComponent
P4.3-T07 场景重开恢复 UIComponent
P4.3-T08 Player 加载 UIComponent 并显示 UI
建议结构:
struct UIComponent
{
AssetGuid Document;
bool Visible = true;
int SortOrder = 0;
};
验收标准
创建 Entity
→ 添加 UIComponent
→ 指向 MainHUD.rml
→ 保存场景
→ Launch Player
→ UI 显示
P4.4 UI 输入与基础事件
任务
P4.4-T01 鼠标移动输入
P4.4-T02 鼠标点击输入
P4.4-T03 键盘输入
P4.4-T04 Button click 回调
P4.4-T05 Console 输出 UI 事件
P4.4-T06 可通过简单事件名触发 Runtime Action
P4.4-T07 UI 可向 ECS/EventBus 派发事件
暂不做
完整脚本系统
复杂数据绑定
可视化 UI Designer
UI 动画系统
主题编辑器
控件库市场
验收标准
Player 显示 HUD
→ 点击按钮
→ Console 输出事件
→ 或派发一个 UIEvent 到 Runtime EventBus
P4 完成标志
RmlUi 能在 Player 中显示
.rml / .rcss 作为资产被 Project 面板识别
UIComponent 能随场景保存和加载
Player 能响应基础鼠标键盘输入
按钮点击能触发基础事件
建议里程碑:
milestone: runtime UI MVP with RmlUi
P5:Build Settings / 项目打包入口
阶段目标
在编辑器中提供正式打包入口,把场景、资产、UI、Player 组合成一个可运行发布目录。
P5.1 Project Settings
任务
P5.1-T01 新增 ProjectSettings.json
P5.1-T02 保存项目名称
P5.1-T03 保存默认启动场景
P5.1-T04 保存窗口大小
P5.1-T05 保存公司名 / 应用名
P5.1-T06 保存目标平台配置
P5.1-T07 保存默认 UI / 启动 UI 配置
P5.1-T08 Editor 可读写 Project Settings
P5.1-T09 Player 可读取 Project Settings
验收标准
Project Settings 可编辑
关闭重开后配置保持
Player 可读取项目名、默认场景、窗口大小
P5.2 Build Settings 面板
任务
P5.2-T01 新增 File / Build Settings 菜单
P5.2-T02 显示 Scenes In Build
P5.2-T03 可添加当前场景到 Build
P5.2-T04 可移除 Build 场景
P5.2-T05 可设置主启动场景
P5.2-T06 显示 UI Assets / Runtime UI 依赖
P5.2-T07 可选择目标平台 Windows
P5.2-T08 可选择输出目录
P5.2-T09 可勾选 Development Build
P5.2-T10 可勾选 Use Cooked Assets
P5.2-T11 点击 Build 触发打包流程
验收标准
打开 Build Settings
→ 添加 Main.mcscene.json
→ 确认 UI 资源依赖
→ 选择 Windows
→ 设置输出目录
→ 点击 Build
P5.3 Build Pipeline 第一版
任务
P5.3-T01 Build 前保存所有 dirty scene
P5.3-T02 扫描 Scenes In Build
P5.3-T03 收集模型 / 材质 / 贴图依赖
P5.3-T04 收集 .rml / .rcss / 字体 / UI 图片依赖
P5.3-T05 调用已有 Cook 流程
P5.3-T06 生成 CookManifest
P5.3-T07 拷贝 MetaCorePlayer.exe
P5.3-T08 拷贝 Filament 运行时依赖 DLL
P5.3-T09 拷贝 RmlUi 运行时依赖 DLL
P5.3-T10 拷贝 cooked 资产
P5.3-T11 生成 RuntimeConfig.json
P5.3-T12 可将 MetaCorePlayer.exe 重命名为项目名.exe
P5.3-T13 输出 Build 日志
输出目录建议
Builds/Windows/MyProject/
MyProject.exe
RuntimeConfig.json
Data/
CookManifest.bin
Assets/
*.mccooked
UI/
*.rml
*.rcss
Fonts/
Textures/
Plugins/
Logs/
验收标准
点击 Build
→ 生成 Builds/Windows/MyProject
→ 双击 MyProject.exe
→ 主场景正常显示
→ Runtime UI 正常显示
P5.4 Development Build
任务
P5.4-T01 Development Build 显示 Console 日志
P5.4-T02 输出 runtime log 文件
P5.4-T03 支持命令行参数覆盖主场景
P5.4-T04 支持窗口大小配置
P5.4-T05 支持显示 FPS / frame time
P5.4-T06 支持 UI debug overlay
P5 完成标志
Editor 中有 Build Settings
可以选择场景、UI、平台和输出目录
点击 Build 能生成可双击运行的 Windows 发布目录
发布目录中 3D 场景和 Runtime UI 都能运行
建议里程碑:
milestone: build settings and first packaged runtime
P6:Cooked Runtime 深化
阶段目标
让发布期 Player 真正脱离编辑期 JSON 源资产,依靠 CookManifest + RuntimeAssetRegistry + .mccooked 运行。
P6.1 CookManifest 稳定化
任务
P6.1-T01 明确 CookManifest 数据结构
P6.1-T02 记录 AssetGuid
P6.1-T03 记录 AssetType
P6.1-T04 记录 SourcePath
P6.1-T05 记录 CookedPath
P6.1-T06 记录 ContentHash
P6.1-T07 记录 Dependencies
P6.1-T08 支持 UI 依赖记录
P6.1-T09 支持 JSON manifest 调试格式
P6.1-T10 支持 binary manifest 发布格式
P6.2 RuntimeAssetRegistry
任务
P6.2-T01 新增 RuntimeAssetRegistry
P6.2-T02 LoadManifest
P6.2-T03 GetCookedPath
P6.2-T04 GetAssetType
P6.2-T05 GetDependencies
P6.2-T06 HasAsset
P6.2-T07 Resolve UI Asset
P6.2-T08 Resolve Material / Texture / Model Asset
P6.2-T09 运行时错误日志
P6.3 Cooked Scene Runtime Data
任务
P6.3-T01 Scene JSON 转 RuntimeSceneData
P6.3-T02 保存实体列表
P6.3-T03 保存 Transform
P6.3-T04 保存 MeshRenderer
P6.3-T05 保存 Camera
P6.3-T06 保存 Light
P6.3-T07 保存 Prefab Instance
P6.3-T08 保存 UIComponent
P6.3-T09 保存资产依赖 GUID
P6.3-T10 Player 从 cooked scene 构建 ECS
P6.4 Cooked-only Player
任务
P6.4-T01 Player 支持 --cooked 参数
P6.4-T02 Player 支持 --main-scene-guid 参数
P6.4-T03 Player 启动时加载 CookManifest
P6.4-T04 Player 不扫描 Assets 源目录
P6.4-T05 Player 不读取 .mcscene.json
P6.4-T06 Player 不读取 .mcprefab.json
P6.4-T07 Player 不读取 .rml 源路径,除非以 loose file 模式运行
P6.4-T08 Player 只通过 cooked asset 启动
验收标准
删除或重命名 Assets 源目录
保留 Builds/Windows/MyProject/Data
双击 MyProject.exe
3D 场景和 UI 仍然可以正常运行
P6.5 增量 Cook
任务
P6.5-T01 基于 ContentHash 判断是否需要重 Cook
P6.5-T02 修改场景只 Cook 场景
P6.5-T03 修改材质只 Cook 材质和依赖
P6.5-T04 修改模型只 Cook 模型相关依赖
P6.5-T05 修改 UI 只 Cook UI 相关依赖
P6.5-T06 输出 Cook 统计信息
P6 完成标志
Build 后的 Player 可以完全脱离 Assets 源目录运行
CookManifest / RuntimeAssetRegistry 成为运行期资产入口
Scene / Prefab / Material / Model / Texture / UI 都能通过 cooked 资产加载
建议里程碑:
milestone: cooked-only runtime
P7:多平台 / 国产化 / Web
阶段目标
从 Windows 原型走向跨平台和国产化环境适配。
P7.1 Windows 稳定化
P7.1-T01 Release / RelWithDebInfo 构建稳定
P7.1-T02 DLL 拷贝规则稳定
P7.1-T03 打包目录稳定
P7.1-T04 日志系统稳定
P7.1-T05 安装包或压缩包发布策略
P7.2 Linux 支持
P7.2-T01 Linux CMake configure
P7.2-T02 Linux build Editor / Player
P7.2-T03 Filament Linux 后端验证
P7.2-T04 RmlUi Linux 输入和字体验证
P7.2-T05 Linux 打包目录
P7.3 国产系统适配
P7.3-T01 统信 UOS 构建验证
P7.3-T02 麒麟系统构建验证
P7.3-T03 国产 CPU 环境兼容性检查
P7.3-T04 国产 GPU / OpenGL / Vulkan 兼容性检查
P7.3-T05 字体 / 输入法 / 路径编码问题处理
P7.3-T06 RmlUi 中文字体和输入验证
P7.4 Web / B/S 方向
P7.4-T01 评估 Filament WebGPU / WebGL 路线
P7.4-T02 Player Web 版本技术验证
P7.4-T03 Web 资产加载方式调整
P7.4-T04 浏览器 UI 与 RmlUi 关系梳理
P7.4-T05 明确 Web Runtime 是否复用 RmlUi
P7 完成标志
Windows 可发布
Linux 可运行
国产桌面系统有验证路线
Web 方向完成技术预研
P8:稳定化 / 文档 / 示例项目 / 版本发布
阶段目标
让 MetaCore 从快速开发状态进入可维护、可演示、可交付状态。
P8.1 测试体系
P8.1-T01 SmokeTests 分类
P8.1-T02 AssetPipeline 测试
P8.1-T03 SceneSerialization 测试
P8.1-T04 Prefab 测试
P8.1-T05 Material 测试
P8.1-T06 RmlUi UIComponent 测试
P8.1-T07 Cook 测试
P8.1-T08 RuntimeAssetRegistry 测试
P8.1-T09 Editor authoring loop 手动验收清单
P8.2 日志系统
P8.2-T01 Editor Console 日志统一
P8.2-T02 Player 日志文件
P8.2-T03 Cook 日志
P8.2-T04 Import 日志
P8.2-T05 UI 日志
P8.2-T06 错误分级 Info / Warning / Error / Fatal
P8.3 崩溃与错误恢复
P8.3-T01 场景加载失败 fallback
P8.3-T02 资产缺失 fallback
P8.3-T03 材质缺失 fallback
P8.3-T04 模型导入失败提示
P8.3-T05 UI 文件缺失 fallback
P8.3-T06 JSON 解析失败定位到文件和字段
P8.4 文档
P8.4-T01 README 更新
P8.4-T02 Architecture/Rendering.md
P8.4-T03 Architecture/SceneRenderSync.md
P8.4-T04 Architecture/AssetPipeline.md
P8.4-T05 Architecture/SceneSerialization.md
P8.4-T06 Architecture/Prefab.md
P8.4-T07 Architecture/Material.md
P8.4-T08 Architecture/RuntimeUI.md
P8.4-T09 Architecture/CookedRuntime.md
P8.4-T10 Roadmap/MetaCore_v0.1.md
P8.4-T11 DeveloperGuide/Build.md
P8.4-T12 UserGuide/Editor.md
P8.5 示例项目
P8.5-T01 清理 SandboxProject
P8.5-T02 新增 MinimalProject
P8.5-T03 新增 GLB Viewer 示例
P8.5-T04 新增 Industrial Dashboard 示例
P8.5-T05 新增 Runtime UI Demo
P8.5-T06 新增 Digital Twin Demo 雏形
推荐版本节点
v0.1:编辑器最小可用版
包含:
P0 Panda3D 清理
P1 ECS → Filament
P2 编辑器基础闭环
状态:你现在基本已经达到。
目标:
能打开编辑器
能编辑场景
能保存重开
能启动 Player 看场景
v0.2:资产与 Prefab 工作流版
包含:
P3 Project 面板增强
P3 资产导入体验
P3 Prefab 创建 / 实例化 / Apply
P3 Material 基础编辑
P3 一键 Launch Player
目标:
具备 Unity-like 最小编辑体验
v0.3:Runtime UI MVP 版
包含:
P4 RmlUi 集成
P4 .rml / .rcss 资产识别
P4 UIComponent
P4 Player 显示 UI
P4 基础输入和按钮事件
目标:
3D 场景 + 运行时 UI 可以同时运行
能做简单业务界面和演示面板
v0.4:项目打包版
包含:
P5 Project Settings
P5 Build Settings
P5 Build Pipeline
P5 拷贝 Player
P5 打包场景、模型、材质、贴图、UI
目标:
能从 Editor 打包出可双击运行的 Windows 项目
v0.5:Cooked Runtime 版
包含:
P6 RuntimeAssetRegistry
P6 CookManifest
P6 Cooked-only Player
P6 增量 Cook
P6 运行时完全脱离源资产
目标:
形成真正发布期运行架构
v0.6:平台化与演示版
包含:
P7 Windows 稳定
P7 Linux 验证
P7 国产化预研
P8 示例项目
P8 文档和测试体系
目标:
可以对外演示、交付 Demo、验证行业场景
现在最推荐的执行顺序
你当前 P2 已完成,建议接下来严格按这个顺序:
1. P3.1 Project 面板增强
2. P3.2 资产导入体验
3. P3.3 Prefab 最小闭环
4. P3.4 Material 基础编辑
5. P3.5 一键 Launch Player
6. P4.1 RmlUi 基础集成
7. P4.2 UI 资产识别
8. P4.3 UIComponent
9. P4.4 UI 输入与基础事件
10. P5.1 Project Settings
11. P5.2 Build Settings 面板
12. P5.3 Build Pipeline 第一版
13. P6 Cooked Runtime 深化
一句话总结:
新路线应该是:先把编辑器生产力做好,再补 Runtime UI MVP,然后再做 Build Settings 打包。这样 MetaCore 打包出来的不是一个单纯 3D 场景播放器,而是一个能展示模型、材质、场景和业务 UI 的真正运行时应用。