配方如何存储材料与产物
配方定义把材料放在 needItems,把产物放在 chanceOutputItems 里——这就是为什么一个配方可以产出多个物品,以及产物为什么可以是概率性的。
- 攻略
- 正式版 1.0
- 已核验
- 核对于 2026-09-25
事实
- 配方定义数量
- 827
- 至少有一个材料
- 584
- 至少有一个产物
- 468
- 材料结构
- 物品 id 加一个数量表达式
- 产物结构
- chanceOutputItems 数组,因此一个配方可以有多个产物
数字从哪来
游戏在 resources.assets 里随包发布一个 GameBalance 对象,其中 craftDefs 数组有 827 条。每条包含消耗用的 needItems 与产出用的 outputItems。本页数字不是估算,而是直接从该对象读出。
材料列表是扁平的
needItems 是扁平列表,每一项是「物品 id + 数量」。827 个配方中有 584 个至少有一项。需要两种材料的配方会表现为两条记录,而不是一条含两个数量的记录。
产物是嵌套的——这是最容易踩坑的地方
outputItems 不是列表,而是一个对象,其 chanceOutputItems 字段才是产物。由于字段名带有 chance,一个配方可以带多个可能产物;而把 outputItems 当扁平数组读的实现,会在全部 827 个配方上都报出零产物。改读 chanceOutputItems 才能找到 468 个有产物的配方。
如何推出基础材料
推出基础材料的做法是:反复把每一项替换成「能产出它的配方」的材料,并累加数量。当某个物品没有任何配方能产出时,它就是基础材料。递归必须记住当前路径上已经出现过的物品,因为生产链可能绕回自身;没有这层保护,展开不会终止。
本页不声称的内容
上述数量读自随包数据,但「配方在哪个工作站提供」以及「产物是必得还是概率」仍需复核后才能作为事实发布。这些字段已记录,但有意未写入本页的结论。
相关条目
- Graveyard Keeper 2related to
关于中文文本
中文名称为本站翻译,尚未与游戏内官方中文本地化逐条核对,因此中文页面在核对前不视为权威命名。
来源
Read directly from the GameBalance object in the shipped build through scripts/gb_reader.py, cross-checked against the handover snapshot.