Axıs
技能目录

29 · MOD、UGC 与可扩展性

29 · MOD、UGC 与可扩展性

MOD 支持是乘法级的生命周期延长,也是乘法级的维护负担。 关键不是"支不支持",而是支持到哪一层。

1. 先决策:支持到哪一层

层级 内容 玩家门槛 你的成本 风险
L0 不支持 — — 零 无
L1 数据 MOD 改数值/配置/贴图/文本 极低 低 ✅ 低
L2 脚本 MOD 写逻辑、加机制 中 中 中(崩溃归因)
L3 引擎级 MOD 改底层、反编译 高 高 高(兼容噩梦)
L4 官方 UGC 内置编辑器 + 分享平台 低 很高 中(审核、法律)

独立游戏建议:

  • 默认做 L1(数据外置的副产品,几乎零成本)
  • 有余力做 L2(需要 API 设计与沙箱)
  • L3 顺其自然(不主动支持,但别刻意封堵)
  • L4 只有明确需要时才做(关卡编辑器是很大的工程)

判断依据:你的游戏是否天然是平台? 关卡制/模拟/沙盒类做 L4 收益高;线性叙事类做 L4 收益低。

2. 数据驱动程度 = MOD 能力的前提

MOD 能力不是后来加的,是架构决定的。

架构选择 MOD 友好度
所有数值在外部数据源(JSON/表格) ✅ L1 免费获得
数值硬编码在代码里 ❌ 无法做 MOD
内容用统一数据结构(卡牌/物品/敌人同构) ✅ 易扩展
每类内容都是特例代码 ❌ 扩展成本高
有事件/钩子系统 ✅ L2 前提
逻辑与表现分离 ✅ 必要

反向要求(写进 templates/02 系统规格单):

  • 参数外置
  • 内容数据同构(同类内容结构一致)
  • 无硬编码的"特例"
  • 逻辑与表现分离
  • 有稳定的事件钩子

这些要求在 systems/08(参数外置)与 production/24(可测试性)里已经要求过 —— MOD 友好是它们的副产品,不是额外工作。

3. 官方 API 设计原则

原则 说明
稳定 已发布的 API 不轻易破坏性变更
版本化 API 带版本号,MOD 声明兼容版本
最小面 只暴露必要的接口(暴露越多,兼容负担越大)
文档 + 示例 没有示例的 API 等于不存在
沙箱 脚本 MOD 不能访问文件系统/网络/任意内存
错误隔离 MOD 崩溃不能拖垮游戏(捕获异常,禁用该 MOD)
可调试 MOD 开发者需要日志与错误提示

版本化策略:

api_version: 2.1
min_game_version: 1.3

游戏启动时校验,MOD 不兼容则禁用并提示(而非崩溃)。

4. UGC 内容管线(若做 L4)

[编辑器] → [本地测试] → [导出文件] → [分享] → [发现] → [游玩] → [评分/举报]
环节 要求
编辑器 必须比"写代码"简单 10 倍;有实时预览
本地测试 一键从编辑器进入试玩
导出格式 单一文件、自包含、可版本化
分享 支持本地文件 + 平台创意工坊
发现 排序、筛选、标签、推荐(否则 UGC 会沉没)
审核 举报 + 自动扫描 + 人工抽查
兼容 游戏更新后旧 UGC 不能全废(版本标记 + 降级)

UGC 的死亡原因:不是编辑器难用,是没有发现机制。 做了 1000 个 UGC 但没有排序与推荐 → 玩家只看前 10 个 → 创作者失去动力。

5. UGC 的经济与法律

项 要点
内容归属 在 EULA 里明确:玩家创作内容的授权范围
是否允许收费 通常不允许(会引入支付、税务、退款问题)
审核责任 平台需承担一定的内容审核责任
年龄分级 UGC 内容可能改变游戏分级(需标注)
IP 风险 玩家可能上传侵权内容 → 需要举报与下架机制
创作者激励 比赛、官方推荐、署名(而非分成)

独立游戏建议:UGC 用署名 + 官方推荐激励,不用金钱分成。 金钱分成会引入税务、支付、争议处理,成本远超收益。

6. 可扩展性对系统设计的反向要求

要求 原因
内容同构 新内容能复用同一套系统(否则每个 MOD 都要改代码)
无特例 特例无法被 MOD 覆盖,且是涌现的敌人(见 principles/04)
数据与逻辑分离 数据可替换,逻辑可复用
事件钩子 MOD 需要在关键节点插入行为
可观测 MOD 需要读取状态
失败隔离 MOD 的错误不能污染主逻辑
存档兼容 移除 MOD 后存档不能损坏(或明确提示)

存档兼容是最容易忽略的:玩家装了 MOD 玩 50 小时,移除 MOD 后存档崩了 → 差评。 方案:存档记录依赖的 MOD 列表,加载时校验并提示。

7. 反模式

症状 修法
数值硬编码还想支持 MOD 先做参数外置
主动做 L4 但无发现机制 编辑器 + 排序 + 推荐 缺一不可
API 频繁破坏性变更 版本化 + 兼容层
脚本 MOD 无沙箱 安全风险;必须沙箱
MOD 崩溃拖垮游戏 异常隔离 + 自动禁用
无 MOD 冲突检测 提示冲突的 MOD 列表
移除 MOD 后存档损坏 存档记录依赖列表 + 校验
无 API 文档与示例 等于没有 API
UGC 收费分成 引入税务/支付/争议,不值
游戏更新后旧 UGC 全废 版本标记 + 降级策略
用 L3 支持作为卖点 反编译级支持无法承诺

8. 交付物

  1. MOD 层级决策(L0–L4 + 理由)
  2. 架构友好度自检(六项:参数外置/同构/无特例/逻辑分离/钩子/可观测)
  3. API 规格(版本化、最小面、沙箱、错误隔离、文档示例)
  4. 若做 UGC:编辑器规格 + 分享格式 + 发现机制 + 审核流程
  5. EULA 相关内容条款要点

9. 参考

  • systems/08-numbers-and-formulas.md(参数外置)
  • production/24-testing-and-qa.md(确定性、隔离、可观测)
  • 案例:Stardew Valley(大型 MOD 生态)、Rimworld(官方支持)、Factorio(API 文档标杆)、Baba Is You(关卡编辑器)