跳转至

常见错误

本页汇总规则创作中最常见的几类错误。规则跑起来行为不符合预期时,可对照本页快速定位。

错误 症状 处理
条件转移的 condition 槽未连接 流程稳定走「否」分支,易误判为引擎 bug condition 槽必须接一个逻辑或比较组件
枚举存放非整数值 后端拒绝或行为异常 枚举的实际值必须是整数;显示名仅供前端展示
试图构造动态大小的集合 流程无法执行 平台只支持预定义集合(玩家集、手牌、弃牌等),设计规则时绕开
开始节点未连接下一节点 流程未推进即结束 开始节点必须连一条出边
方法调用参数未填或顺序错误 方法行为不符合预期 参数按名匹配,在方法调用组件中填写参数名
跨牌型压制方向写反 「炸弹压不过单张」之类 压制关系从进攻方视角声明:在炸弹的「可压过」中加单张
属性访问 operator 选错 取出错误内容 0 取对象属性、1 取组件结果属性、2 取集合映射结果
比较返回值 0 被误解为 false 同上 0 表示 A 胜,1 表示 B 胜
属性名使用中文 历史上遇到过乱码与兼容问题 优先使用 ASCII,如 point / suit / score
同牌型缺少 compare_flow 出牌被拒,提示无法比较 同牌型必须有 compare_flow,实在没有真实排序也要写兜底
结算流程未覆盖所有玩家 部分玩家结算结果缺失 结算流程会被平台对每个玩家执行一次,不要假设只跑一次
发牌前未洗牌 每局牌序完全相同 主流程开头加一个洗牌组件,平台不会自动洗
属性名与组件 ID 冲突 偶发取值错误 不要用纯数字或单字母给属性命名,使用描述性名字
枚举的 default 不在 config 列表中 启动时枚举初始化失败 default 必须是 config[*].value 中的某个值
跨牌型压制 DAG 出现环 配置被平台拒绝 「可压过」关系必须无环

排查顺序建议

遇到规则行为异常时,按以下顺序排查通常最快。

  1. 顺着开始节点沿 next 走一遍流程图,确认没有断点或空条件
  2. 检查每个属性访问组件的 operator 是否正确(约九成的「取值不对」问题出在这里)
  3. 检查牌型 build_flow 在匹配分支是否真的放了 匹配返回(result=1)
  4. 检查跨牌型压制方向是否在进攻方上声明
  5. 导出 JSON 与 test2.json 对比,确认整体结构无异常

仍无法定位时,在仓库提一个 issue,附上导出 JSON。