Skip to content

配置驱动与脚本驱动 ​

Category ​

system / 脚本与热更子树。节点定位:配置驱动与脚本驱动的分界——配置越做越像脚本、脚本变成万能补丁是两条常见越界,边界判断要前置,配置系统本身也要工程化。

Definition ​

项目需要更灵活时,很多团队会同时想到两种手段:把更多行为写进配置,或者把更多逻辑放进脚本。两者都能提升迭代速度,但它们解决的不是同一类问题。配置更擅长表达规则参数和静态组合,脚本更擅长表达流程、分支和运行时行为。把两者混为一谈,通常会得到一种既难维护又难校验的中间态。

所以这里真正要回答的,不是“配置和脚本谁更先进”,而是“什么变化适合被数据化,什么变化必须保留成可执行逻辑”。

Problem ​

配置越做越像脚本,是因为业务复杂度从脚本层漏了下来;脚本变成「万能配置补丁」,是因为没有建立准入判断。两条越界都会让改动成本失控——分界必须是显式判断,不能靠习惯。

配置驱动真正值钱的地方 ​

配置驱动最有价值的,是把变化从代码发布链路中拆出来,让规则参数、内容组合和部分静态结构可以更快调整。它特别适合:

  • 数值和规则参数
  • 掉落、任务、活动条件
  • UI 布局或页面组合关系
  • 文本、多语言、资源映射
  • 有限状态下的静态分支

配置的优势不只是“改得快”,更是它更容易被审核、校验、比对和回滚。

脚本驱动更适合解决什么 ​

脚本更适合那些已经超出“参数表述”范围的问题,例如:

  • 复杂流程编排
  • 动态条件分支
  • 需要运行时状态判断的行为
  • 高频变化但又不值得全量发版的逻辑

换句话说,脚本适合表达“怎么做”,配置更适合表达“有哪些输入和约束”。

为什么很多项目会把配置越做越像脚本 ​

这是非常常见的失控路径。项目初期配置只承载参数,后面为了避免改代码,团队不断往配置里加:

  • 条件表达式
  • 嵌套规则
  • 事件回调名
  • 执行顺序描述
  • 小型 DSL

到最后,配置表面上还是数据,实际上已经变成了缺乏调试器和类型系统的脚本语言。这类系统前期看着灵活,后期最容易制造线上事故。

反过来,脚本也不该变成“万能配置补丁” ​

如果任何数据问题、表现问题、流程问题最后都靠脚本临时修,常见结果是:

  • 脚本层越来越像业务垃圾回收站
  • 配置和脚本的职责越来越模糊
  • 同一个规则一半在配置一半在脚本
  • 排障时很难判断究竟是哪一层出错

所以真正重要的不是“谁能做”,而是“谁应该默认做”。

一个更稳妥的边界判断 ​

可以先用下面几个问题来判断:

  • 这次变化是参数变化,还是行为变化
  • 能不能通过静态校验提前发现错误
  • 是否需要复杂的运行时上下文
  • 是否需要调试、断点和执行追踪

如果答案更偏参数和静态组合,就更适合配置;如果答案更偏流程、条件和运行时判断,就更适合脚本。

为什么配置系统本身也必须被工程化 ​

很多团队把配置系统想得过于轻量,觉得只要能编辑表格和导出文件就够了。真实项目里,配置系统往往是事故高发入口,因为它连接着策划、客户端、服务端和发布链路。一个成熟的配置系统通常需要:

  • 类型校验
  • 引用校验
  • 差异审查
  • 灰度发布
  • 历史追踪和回滚

也就是说,配置驱动不是“把研发工作交给表格”,而是把规则变化纳入正式工程治理。

常见误区 ​

最常见的错误,是把配置系统无限扩展成一门隐形脚本语言。第二类错误,是把所有高变逻辑都推给脚本层,配置退化成松散的数据仓库。第三类错误,是只看编辑体验,不补类型校验、审计和回滚能力,结果配置和脚本都变成高风险入口。

Used By ​

配置与脚本的准入评审;配置系统工程化建设。

关系链:配置价值 → 脚本适合面 → 配置越界 → 脚本越界 → 边界判断 → 配置工程化 → 常见误区。上游:scripting/02(集成面)、production/05(配置管线)。下游:scripting/04(热更的对象与节奏)。

Reference ​

本页为工程经验归纳。

游戏知识体系