合成配方产出向上取整,所以合成成本从来不只是乘法
纸每次合成产出 3 张。需要 4 张就要消耗 6 个甘蔗,还会剩下 2 张纸。配方树的每一层都是如此,而浪费会向下逐层累积,这个向上取整会在配方树的每一层都发生,浪费也会随着层数往下逐层累积放大变多。
计算某样东西需要多少原材料,看起来像是一道乘法题。其实不是,因为一个配方产出的是固定的一批,而你无法合成出不足一批的量。
规则
craftsNeeded = ceil(needed / makes)
produced = craftsNeeded × makes
leftover = produced − needed
makes 是配方的产出量。纸由 3 个甘蔗产出 makes: 3。所以:
| 需要的纸 | 合成次数 | 甘蔗 | 剩余纸 |
|---|---|---|---|
| 1 | 1 | 3 | 2 |
| 3 | 1 | 3 | 0 |
| 4 | 2 | 6 | 2 |
| 6 | 2 | 6 | 0 |
需要 1 张纸和需要 3 张纸的花费相同。需要 4 张和需要 6 张的花费相同。成本函数是一道阶梯,而不是一条直线,而每一次你刚好越过一级台阶,都会反过来咬你一口。
它会沿着配方树向下累积
向上取整是在每一层都执行的,而不是只在最后执行一次。一本书需要 3 张纸和 1 个皮革;纸由甘蔗每次合成产出 3 张。因此一本书恰好需要合成一次纸——3 个甘蔗,没有浪费。
两本书需要 6 张纸,也就是合成 2 次,依然没有浪费。但只要把配方树中任意一个数量挪离一批的整数倍,那一层的取整就会以更大的需求量向下传播到它下面的所有东西,而它们又会依次向上取整。越深的配方树累积得越多,总量可能远远超过天真的 quantity × unit cost,而每一步单独看却都是正确的。
这正是成本计算器值得拥有的唯一理由——与其自己算,不如用它:算术很简单,而记账不是。
替代配方改变的是配方树,而不只是价格
有些物品不止一种制作方式,计算器允许你切换:
- 铁锭——在熔炉中烧炼,或在高炉中烧炼。两者都消耗 1 个粗铁并产出 1 个,所以这个选择关乎速度与燃料,而非材料。
- 金锭——同样的一对,同样等价。
- 木棍——两个真正不同的配方,这也是工具用它来演示切换的原因。
铁和金的情况值得注意,恰恰因为它们不是成本决策。一棵提供选择的配方树并不总是提供更便宜的分支,把熔炉换成高炉在购物清单上什么都不会改变。
配方树在哪里停止
有十五种物品被视为原始叶子节点——展开到此为止,不再继续深入:
橡木原木 · 圆石 · 粗铁 · 粗金 · 钻石 · 红石粉 · 沙子 · 下界之星 · 黑曜石 · 下界合金碎片 · 甘蔗 · 皮革 · 竹子 · 羊毛 · 线
其中两种值得说明。下界合金碎片实际上是远古残骸烧炼而来,但为简单起见被当作原始材料——所以下界合金的成本会少报,每块碎片少算一步烧炼。而橡木原木代表“任意原木”,这样配方树就不会分叉成十种行为完全相同的木材(以及两种下界菌柄)。
知道一棵配方树在哪里触底,和配方树本身同样重要:只有当你清楚计算把哪些材料当作原始材料时,“原材料”成本才有意义。