Steam 创意工坊 · 《饥荒联机版》模组 · 独立完成

沃姆伍德大修:月裔萌芽

一次以「角色技能树」为切口的完整系统重构:把角色的被动回血改造成一套可分配的能量经济, 并以它为核心串起 6 条技能线、32 个技能节点、7 类可指挥随从与 58 条配方。 我独立完成了玩法设计、数值设计、程序实现、四语言本地化与全部线上运营。

32技能树节点(6 条线)
86,940行 Lua(168 个文件)
191次版本更新(17 个月)
250工坊评价(五星)
498工坊留言
4语言本地化
01 / 项目概览

把「角色重做」当成一次小型系统设计项目

目标不是堆内容,而是给沃姆伍德建立一套自洽的资源—技能—战力循环,并让它在《饥荒联机版》原版规则与其他大型模组的夹缝中稳定运行。

项目定位角色玩法大修(技能树重构 + 支线玩法扩展),面向已购买角色的玩家,无需额外付费
平台 / 技术《饥荒联机版》DST · Lua Modding API(api_version 10),服务端权威、全客户端同步
我的角色独立完成:玩法设计 · 数值设计 · 程序实现 · 本地化 · 美术需求定义 · 线上运营
时间跨度2025.05 – 至今(17 个月,191 次版本更新,当前 v1.17.19)
交付形态Steam 创意工坊订阅制模组(含模组内 51 项可配置选项)
内容规模32 技能节点 · 58 条配方 · 149 个动画资产包(28.1 MB)· 每种语言 813 条文案 × 中/英/德/俄 4 语言(共 3,252 条)
玩家侧成绩250 个五星评价 · 498 条留言 · 5 个讨论帖 · 被中文模组社区介绍文收录
02 / 职责与工作流

一个人如何推进 17 个月的内容管线

我的工作流是「设计文档 → 数值表 → 实现 → 本地化 → 上线 → 读反馈 → 排期」的闭环,每一环都有可交付物。

玩法设计

确定角色的核心资源(开花值 BP)与三条输出方向(生存 / 生产 / 战斗),并把 6 条技能线各自绑定一个"资源入口 + 玩法出口"。

数值设计

维护 BP_COST / DURATION / COOLDOWN 三张表(40+ 技能),并提供难度倍率预设与 51 项可配置项。

程序实现

Lua + DST 的组件 / 状态机 / 行为树体系;168 个文件,其中 prefabs 95、brains 16、stategraphs 19。

内容生产

定义动画与特效需求(149 个资产包)、编写 58 条配方、建立 813 条四语言文案表。

线上运营

按玩家反馈排期迭代,以"修复优先"为原则;17 个月内累计 487 行修复记录、96 处崩溃修复。

兼容性维护

与《永不妥协》等大型大修模组共存(priority = -20 控制加载顺序);为被覆写的官方行为设计替代钩子。

03 / 系统设计(重点)

四个可复用的系统案例

下面每一节都包含「设计目标 → 机制结构 → 平衡手段」,数值均为项目中的实际参数。

案例 0技能树结构

32 个节点按 6 条线组织,每条线都能独立成立,同时通过核心资源互相牵制:

技能线节点数设计职责
荆棘线 bramble7受击反击与近战爆发(含多种植物特质)
开花线 blooming7核心资源「开花值」的产能与转化效率
随从线 pets7把资源转化为可持续输出的伙伴系统
蘑菇线 mushroom7团队增益与范围控制(蘑菇帽/孢子)
月卫线 moonguard3中后期位面属性与守护召唤
核心 moonsprout1月裔萌芽本体(资源总入口)

28 个技能由我重新命名与定位(其余沿用官方技能框架),完整名单:

月裔萌芽月亮耕耘者月亮随光者异域收藏者月亮炽燃者 月亮驮运者异域掠食者种菇高手蘑菇野炊易爆真菌 菌林苏醒蘑菇庇护仙人掌硬刺致幻曼陀罗应激含羞草 蝎子草刺毛剑叶草锋刃高效吸收光合作用月树疗愈 顽生植物共生纽带月光造物月亮侍从弹性孢群 刺旋化身施工中月光降临

案例 1核心资源循环:从「自动回血」到「能量经济」

原版沃姆伍德的光合作用只是"站着回血"。我把它改造成一条可分配的经济链: 环境光照不再直接变血,而是变成能量,能量再按优先级分配给多个出口; 施法消耗开花值,于是"回血"与"打输出"之间产生了真实的机会成本。

输入 · 环境

自然光(白天/黄昏/夜晚)· 人造光(矮星、永恒之光)· 洞穴日光 · 蘑菇帽 · 花粉(月蛾)· 月光(满月/极光)· 回血食物缓冲
↓

能量池 · 每秒结算

季节倍率 × 光照加成 × 水分加成 × 无帽加成;能量整体 ×100 提升可读性;未用能量跨秒结转
↓

负载分配 · 优先级

① 回血 ② 开花值维持/恢复 ③ 月树花·道具·随从供能 ④ 闲置产能转黄油
↓

输出 · 开花值与战力

开花值上限 3600(升级后更高)· 施法消耗 BP · 满盛开解锁全部特质

平衡手段

  • 时段缩放:自然光因子白天 1 / 黄昏 0.5 / 夜晚 0(洞穴按洞穴昼夜判定),让"夜里照样满速回血"不再成立。
  • 季节衰减:春/冬使用不同的开花衰减系数,逼迫玩家在季节转换前重新规划资源。
  • 缓冲机制:回血食物换算成缓冲开花值(3 + 0.005 × 缓冲量 每秒回吐),把"吃治疗食物"变成一种资源投资。
  • 可调难度:所有消耗/时长/冷却都支持倍率预设,方便不同服务器生态自行调整。

案例 2随从系统:把伙伴做成可指挥的单位

随从线(7 个节点)从"召唤一个宠物"扩展为可指挥的伙伴编制: 7 类直属月之朋友(另有异域树附属的哈巴狸)各自承担采集、搬运、战斗、治疗、复活、管家等分工,并共用一套指令轮盘。

伙伴编制(7 类直属 + 异域树附属)

直属:胡萝卜鼠 · 异食松鼠(9 种颜色,含家园/随从两种形态)· 球状光虫 · 沙拉蝾螈(含成熟态)· 草鳄鱼 · 利齿捕蝇草 · 曼德拉长者;附属:哈巴狸

指令轮盘

跟随/驻守 · 三种索敌(侵略/防御/回避)· 走位战术 · 潜行 · 采集许可 · 召回弱小随从 · 管家模式;每条切换型指令在 UI 上显示「当前: XXX」状态

AI 行为优先级(节选)

召回 > 高危逃离 > 拾取 > 交付(藏匿处/玩家)> 跟随 > 夜间回家 > 游走;共 16 个行为树文件

存档与跨世界

随从生命周期计时器 · 绑定/释放与归属校验 · 跨分屏(地面/洞穴)迁移时的状态重建与孤儿清理

设计取舍:为了让"指挥"有意义,我把索敌模式做成互斥状态机,而不是叠加数值 —— 玩家每次切换都在改变 AI 的目标筛选规则,而不是单纯加攻击力。

案例 3植物特质线:受击被动如何不互相打架

荆棘线上每个技能都对应一种真实植物的"特质",它们共享「受击触发」这一稀缺事件, 因此核心设计问题不是"效果多强",而是触发顺序、冷却与开关。

特质触发条件概率冷却窗口
仙人掌硬刺未穿荆棘甲时受击(含格挡)100%0.3s 内部冷却—
猪笼草陷阱被昆虫类生物攻击,且目标可入物品栏50%60s1s 捕获窗口
致幻曼陀罗完全盛开状态下受击,小范围释放花粉40%10s—
应激含羞草受击时瞬间获得 90% 减伤并提速100%30s3s 持续
蝎子草刺毛攻击虚弱目标:额外 10 点伤害20% 中毒6s 毒(每 2s 一跳)—
剑叶草锋刃使用锋利武器攻击时释放流星根须100%—8 点路径伤害
  • 防连锁:多条受击被动用"内部冷却 + 概率"错开,避免一次受击同时触发全部特效造成数值爆炸。
  • 可关闭:所有特质都能用道具(芽木绿叶)单独抑制/激活,网络变量同步到客户端,玩家可按流派自由取舍。
  • 已知待优化:猪笼草 / 曼陀罗 / 含羞草三者同时触发时存在"技能浪费"问题,已列入待办(见「反思与下一步」)。

案例 4把「种植」变成可配置的配方管道

树桶(可移植培育容器)不是简单换皮:我用一张诱导模式表驱动 4 种树种子的产出, 让"种什么、长成什么"成为数据配置而非硬编码逻辑,方便后续扩展新种子而不动主流程。

  • 模式表定义:输入标签(treeseed)、卡片类型、输出预制物 → 同一套配方/卡牌/界面自动生成。
  • 产出侧兼容官方"月树花"体系,使新种子能接入既有资源循环,而不是另起一套经济。
04 / 数值设计

三张表管住全部主动技能

所有主动技能共用 BP_COST(消耗)· DURATION(持续)· COOLDOWN(冷却)三张独立表, -1 表示不使用该维度,0 表示无冷却。三表分离让"贵但短"与"便宜但长冷却"成为两种可调的设计语言。

技能BP 消耗持续 (s)冷却 (s)设计意图
范围收获5—0日常高频动作,成本压到最低,避免打断节奏
装填弹药25—0战斗准备动作,可连续使用但成本累积
仙人掌 / 蜂蜜 / 橡果 / 常春藤50–10060120中频功能技,统一 2 分钟冷却形成"轮换使用"节奏
荆棘封锁200120240战场分割,长冷却强调"时机型大招"
迷幻花粉20010240强控制但极短窗口,收益取决于释放位置
蘑菇雷20048030可预埋的长时间场控,允许叠加布场
月树1200—240高价基建型技能,一次投入长期收益
作物系(单发→齐射)250 → 1600—25 → 160同一玩法内做"成本—冷却"双曲线,形成武器升级感
作物:灭绝3000—300上限级清场技,用价格而非冷却做限制
随从召唤(通用)30060–120120所有伙伴同价,避免出现"必练随从"
异食松鼠(特例)2400——唯一高价随从:定位为后期资源型伙伴
位面随从强化600120100中后期战斗投资,与月卫线衔接

刻度与可读性

能量整体 ×100 显示(旧制 1.0 → 100),使"每秒回多少"在 UI 上可被玩家直观比较;开花值 BP 保持原始刻度,避免打乱官方数值体感。

可配置性

除三张表外,模组开放 51 项配置(难度、语言、标签优化、UI、世界规则、与其他模组联动掉落等),并支持对三张表整体套用倍率预设。

上限与溢出

开花值上限 3600(升级后提高),接近上限时消耗补偿衰减;高出上限部分按分段加速回落,避免"挂机溢出"。

失败保护

能量不足时按优先级降级执行(先保命、再保命开花、最后放弃输出),而不是直接施法失败。

05 / 迭代与运营

17 个月 · 191 个版本 · 以修复优先

上线不是终点:我把更新日志当作产品看板,按月复盘发布密度,并按"修复 : 新增 ≈ 17 : 1"的比例控制节奏。

1
20
15
15
11
11
10
11
10
9
4
6
8
18
13
16
13
25/0506070809101112 26/010203040506070809

纵轴为当月发布的版本数(个)。首月 1 版为立项上线,随后进入高频迭代期;2026-06 的 18 版对应一次较大的内容批次。

更新内容结构(按日志关键词统计)

修复
487
崩溃修复
96
优化
91
新增
28
平衡
14
兼容
6

我的运营策略

  • 修复优先:崩溃类问题单独标记(96 处),优先于新内容排期。
  • 小步快跑:单版本平均改动量小,便于玩家反馈定位与快速回滚。
  • 可复现优先:所有玩家反馈先落到更新日志的"挂起事项"(待观察 / 待验证 / 待研究),确认后再排入"待办事项"。
  • 公开路线图:更新日志随模组一起分发,玩家可以看到哪些内容在计划中、哪些在考虑移除。
06 / 工程与兼容性

策划也需要能把想法落地

系统设计的复杂度最终会变成工程复杂度,下面是这个项目里我实际处理的几类问题。

模块文件数职责
prefabs95实体定义(技能道具、随从、树、容器、特效等)
stategraphs19动作状态机(施法、随从行为、生物攻击等)
brains16行为树(随从指令、BOSS、植物行为)
components6自定义组件(能量、技能书等)
widgets3UI(能量面板、开花值轮盘)
languages4中 / 英 / 德 / 俄文案与技能树文本覆写
合计16886,940 行 Lua

大文件的可维护性

最大的逻辑模块(随从系统 3,233 行、荆棘系统 1,990 行)用"章节横幅 + 单一职责局部函数 + 明确挂载点"组织;每个改动都过一遍脚本级语法校验,避免线上崩溃。

状态同步

特质开关、模式切换等全部走网络变量(net_bool)同步,服务端权威计算、客户端只做表现,避免不同步导致的"看起来生效但实际没生效"。

与其他模组共存

通过 priority = -20 让自己在《永不妥协》等大修模组之后加载,从而在对方改写技能设置后再覆盖,避免"谁后加载谁说了算"的随机性。

被覆写行为的替代方案

曾遇到"官方施法函数被其他模组整体覆写、导致我的效果完全失效":最终不再抢占函数,而是改为监听目标端的 ondeconstructstructure 事件做等价补偿,从根本上免疫加载顺序问题。

引擎约束

角色标签数量存在上限(社区经验值约 63 个),技能树本身也会消耗标签,因此新增特质必须评估标签预算,并在必要时提供"标签优化"配置项。

跨世界(地面/洞穴)

能量系统的时段判定、随从的归属重建都需要区分分片(地面用 isday/isdusk,洞穴用 iscaveday/iscavedusk),否则会出现"洞穴里永远算夜晚"这类隐蔽 bug。

07 / 玩家反馈

上线后的真实数据

250创意工坊评价(五星)
498留言
5讨论帖
9官方预览截图

工坊预览图(点击查看原图)

月裔萌芽 预览图 1 月裔萌芽 预览图 2 月裔萌芽 预览图 3 月裔萌芽 预览图 4 月裔萌芽 预览图 5 月裔萌芽 预览图 6
08 / 反思与下一步

一个诚实的设计 backlog

下面摘自项目更新日志的「挂起事项 / 待办事项」——我把没解决的问题公开写进日志,让玩家也知道哪些是已知问题。 面试时我很乐意展开讲其中任何一条。

架构收敛:家园松鼠与随从松鼠目前共用一个行为树,导致"回家"与"跟随"优先级互相干扰 —— 计划拆成两个 brain,从结构上消灭这类冲突。
经济一致性:惊喜异食松鼠作为后期随从却只产出前期物品,定位与成本不匹配 —— 计划降级召唤材料并改为按探索进度提供不同品质的补给。
性能治理:模组大量复用官方通用 prefab(月树、极光等),潜在性能开销偏高 —— 计划替换为自定义 prefab,减少全局实体扫描压力。
Buff 模型简化:随从增益目前需要持续待在随从身边 —— 计划改为"一次性长效"(参考火荨麻),降低玩家的站位负担。
触发优先级:猪笼草 / 曼陀罗 / 含羞草三条受击被动同时命中时存在收益浪费 —— 需要为它们定义一套统一的触发顺序与互斥规则。
覆盖补齐:批量收获尚未覆盖杂草类;部分生物(海草)死亡表现异常 —— 已排入后续版本。

我从这个项目里得到的三条方法论

  • 先定资源,再定技能:技能只是资源的出口。先把能量/开花值的产出与消耗算清楚,技能数值才有一致的锚点。
  • 被动效果要按"事件稀缺度"排队:受击、击杀、进食这些事件是稀缺资源,多条被动共享同一事件时,冷却与概率是比数值更重要的设计杠杆。
  • 把已知问题写进产品文档:公开 backlog 既是对玩家的诚实,也让自己的迭代有据可依 —— 191 个版本里,487 行修复记录就是这套机制的产物。