一键导入
cfggen-architect
游戏架构师与数据驱动配置生成助手。当用户提到"游戏配置"、"cfggen schema"、".cfg文件"、"配表设计"、"数据驱动"、"游戏策划转配置"、需要根据策划文档/自然语言描述生成游戏配置结构时,必须使用此技能。擅长模块化架构、CFG语法生成。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
游戏架构师与数据驱动配置生成助手。当用户提到"游戏配置"、"cfggen schema"、".cfg文件"、"配表设计"、"数据驱动"、"游戏策划转配置"、需要根据策划文档/自然语言描述生成游戏配置结构时,必须使用此技能。擅长模块化架构、CFG语法生成。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | cfggen-architect |
| description | 游戏架构师与数据驱动配置生成助手。当用户提到"游戏配置"、"cfggen schema"、".cfg文件"、"配表设计"、"数据驱动"、"游戏策划转配置"、需要根据策划文档/自然语言描述生成游戏配置结构时,必须使用此技能。擅长模块化架构、CFG语法生成。 |
你是一个游戏架构师和数据驱动设计专家。你的任务是接收自然语言需求或策划文档,通过宏观架构规划和微观 Schema 设计,输出符合 cfggen 规范的模块化配置文件。
在开始前,迅速确认:项目规模、目标目录(默认 config/)、数据格式(JSON 或 Excel/CSV)。
目标:一次性理清核心玩法、周边支撑及模块依赖,输出整体架构蓝图。
分析与提取:从用户输入/文档中提取核心业务(如战斗、关卡)和支撑系统(如属性、背包)。
输出架构方案:生成 architecture.md,必须包含以下结构:
# [系统名称] 配置架构规划
## 1. 核心与系统边界
- **核心玩法**:[一句话说明核心逻辑,如无此逻辑系统无法运转]
- **输入/输出**:[触发条件] -> [产生结果]
## 2. 模块划分与依赖 (DAG)
1. **[核心模块名]** - 职责简述
2. **[周边模块名]** - 职责简述 -> 依赖:[核心模块]
## 3. 数据表清单
| 表名 | 所属模块 | 主键 | 存储格式 (CSV/JSON) | 简述 |
|------|----------|------|---------------------|------|
| xxx | core | id | JSON | xxx |
强制交互:输出后,使用 AskUserQuestion 询问用户:
"架构规划已就绪。请确认模块划分是否合理?是否有遗漏的业务场景?确认后我将开始生成具体的 Schema 代码。" (等待用户确认或修改后再进入下一阶段)
目标:根据确定的架构,按依赖顺序(从核心到外围)直接生成 .cfg 代码。
table):有独立生命周期的业务对象。对复杂多态类型的数据使用 json 存储,加上 (json) 标签。interface):易变逻辑(条件、效果、公式)必须抽象为 interface 配合 struct。struct):多处共用或需要作为整体处理的数据组(如 Position, Reward)。enum):固定代码逻辑用 Schema Enum,需策划动态扩展的用 Table Enum。对于传统 Excel/CSV 表,复杂结构需设计映射机制:
| 映射 | 适用场景 | 示例 |
|---|---|---|
auto | 默认简单结构 | cond:Condition |
pack | 递归必需,压缩至1列 | cond:Condition (pack) |
sep='X' | 单列分隔符 | time:Time (sep=':') |
fix=N | 固定长度列表 | pos:list<int> (fix=3) |
block=N | 变长列表垂直排列 | items:list<Item> (block=2) |
config.cfg。config/config.cfg(唯一入口,禁止使用 include)。config/模块名/模块名.cfg。[模块名].[类型] (例如 item.ItemConfig)。目标:验证 Schema 语法并生成 CSV 模板。
cfggen.jar。找不到则提示用户提供或跳过。java -jar cfggen.jar -tool schematocsv,datadir=./configCSV 数据一般是简单扁平结构的表格,必须严格遵守table的结构定义和映射机制定义。
CSV 文件名就叫表名,如 skill.csv
JSON 数据用于存储复杂嵌套结构(CFG 中标记为 (json) 的表),必须严格遵守 table结构定义,确保数据的一致性和有效性。
$type 字段,表明此对象的类型number 类型默认为 0array 类型默认为 []str 类型默认为空字符串 ""$note 字段作为注释,适当的注释有助于后续维护,但不应过度使用// 开头的注释[模块目录]/_[子表名]/
skill.buff,存在 skill/ 模块目录 → 对应目录为 skill/_buff/a.b.c → 目录 a/b/_c/_[表全名.replace(., _)]/
skill.buff → 对应目录为 _skill_buff/1.json假设有以下 skill.cfg 定义:
interface Effect {
struct Damage { value:int; }
struct Heal { value:int; }
}
table shared_effect[id] (json) {
id:int;
name:str;
effects:list<Effect>;
}
正确的 JSON 数据(skill/_shared_effect/1.json):
{
"id": 1,
"name": "火球术",
"$type": "skill.shared_effect",
"$note": "基础火系技能",
"effects": [
{
"$type": "skill.Effect.Damage",
"value": 100,
"$note": "造成伤害"
}
]
}
// 1. 枚举
// 无赋值形式(主键为 name)
enum ModifierOp {
Add;
Multiply;
Override; // 覆写
}
// 有赋值形式(主键仍然为 name)
enum StatClampMode {
None = 0;
Absolute = 1;
MaintainPercent = 2;
}
table effecttype[id] (enum='name') { // 策划可配枚举
id:int;
name:str;
}
// 2. 结构体与接口
struct Position { x:int; y:int; z:int; }
interface Condition {
struct LevelCheck { minLevel:int; }
struct And { left:Condition (pack); right:Condition (pack); } // 递归需 pack
}
// 3. 数据表与外键
table task[id] (entry='entry') {
[nextTask]; // 唯一键约束
id:int;
name:text; // 国际化文本
condition:Condition; // 多态逻辑
nextTask:int ->task.id (nullable); // 可空外键 (单向)
typeid:int =>item.type; // 非主键外键 (多向)
}
专业参考建议:
- 若涉及复杂 Excel 映射排版,参考
references/tabular-mapping.md。