🏭 万能工厂
数据 · 把「数据库建表」反射化的数据管理方案。
📌 技术定位
万能工厂(OmniFactory)是基于 gmvc2 框架构建的数据库管理方案,解决数值脱耦问题。 其核心设计理念是「策划师设计配方,运行时根据配方生产对象」: 工厂对应「数据库的一张表」,配方对应「一行数据」,产品是在运行时根据配方动态生产的对象。 适用规模约为 10–99 张表、500–50000 行配置、1–10 人同时编辑,这一量级可覆盖大型游戏项目的需求。
✨ 核心特性
🧬 反射化建表
用 JSON / GMF 数据动态生产其它工厂、模型与字段;允许策划师先于程序员设计配置,或程序员先于策划师制作模型。
🔗 跨表引用与反查
例:为 10 个角色配置 50 件装备和 100 条装备附加词缀。这在 Excel 难以查询、在 SQLite 方案需编写专门脚本、 在项目自有的 meta 方案中加载慢且反查弱并存在多人修改冲突。
📁 原数据即 JSON
原数据基于少量 JSON 文件,可直读直写;数据库位于本地、不部署服务器,并提供多人同时编辑的冲突处理与 Git 混合方案。
🎮 面向游戏开发的预置能力
输出数据压缩为二进制、通过 socket 与实机联调实时修改数据、导入导出多语言翻译等; 并能与 Excel / 在线表格 / SQLite / 项目自有方案兼容混用。
🤖 预考虑 AI Agent 支持
既是主动调度 AI 的入口(制作蓝图、发起调用),又是被 AI 调度的终端(对外提供 MCP), 从而形成自循环。
🖥️ G5 编辑器
万能工厂的 GUI 实现案例:Blazor Hybrid 与 Blazor Server 双宿主,除常规增删改查外, 可通过 socket 与应用本体联调实现数值实时修改,作为调试和自动化控制中心。
🔧 关键技术点
- 数据结构三层:工厂列表 → 工厂属性表(模型 mods + 字段 fields)→ 配方记录(meta + data)。
- metaId 编码规则:6 位数时,前 2 位为工厂 ID、后 4 位为产品 ID;超过 6 位时后 5 位为产品 ID;总工厂固定为 9999。
- 拆分注册:数据提供者注册在资源层,工厂本体注册在应用层,使配置结构变更可随轻量重建而生效。
- 字段类型体系:字段类型由解析器体系承载,日期时间统一 yyyy-MM-dd HH:mm:ss。
- 数据库视图:可将数据库表以只读工厂形式接入编辑器查看与检索。
- 可被外部调试:DEBUG 构建下,GUI 宿主(G5 编辑器)的 WebView2 带 --remote-debugging-port(默认 9777)启动,对外暴露 CDP 调试接口,使外部 IDE / AI 不必等专用接口即可检视与驱动界面。
🧪 结构示例
工厂列表(omniFactory)
├─ 工厂定义:alias / name / desc / mods / 绑定数据表
├─ 模型定义:name / 继承自 / fields[]
└─ 字段定义:key / type / name / desc / default / tags