レシピの産出数は切り上げられるため、クラフトコストは単純な掛け算にはならない
紙は1回のクラフトで3個できる。4個必要ならサトウキビ6個を消費し、紙が2個余る。レシピツリーの各階層でこれが起き、無駄は下流に向かって複合していく。必要数は切り上げ(ceil)で計算され、余りが生まれます。
何かを作るのに必要な原材料を計算するのは、掛け算の問題のように見える。しかしそうではない。レシピは決まった個数を一度に生産するものであり、その一部だけをクラフトすることはできないからだ。
ルール
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個必要なときも同じだ。コスト関数は直線ではなく階段状であり、段を1つ越えるたびにその分が跳ね返ってくる。
ツリーを下って複合する
切り上げは各階層で適用される。最後に一度だけではない。本は紙3個と革1個。紙はサトウキビから1回のクラフトで3個できる。したがって本1冊には紙のクラフトがちょうど1回分必要で、サトウキビ3個、無駄なし。
本2冊なら紙6個、クラフト2回で、これもきれいだ。しかしツリー内のどこかで個数がロットの境界から外れると、その階層での切り上げが下のすべてに対してより大きな必要量として伝播し、それがまた切り上げられる。深いツリーではこれが積み重なり、個々のステップは正しく見えるのに、合計は素朴な quantity × unit cost を大きく超えることがある。
これこそが、自分で計算するよりもコスト計算ツールを使う価値がある唯一の理由だ。算数は簡単だが、帳簿付けはそうではない。
代替レシピは価格ではなくツリーを変える
一部のアイテムには複数の作り方があり、計算ツールでは切り替えられる:
- 鉄インゴット — かまどで製錬するか、溶鉱炉で精錬するか。どちらも鉄の原石1個を消費して1個できるので、選択は素材ではなく速度と燃料の問題だ。
- 金インゴット — 同じ組み合わせで、同じ等価性。
- 棒 — 本当に異なる2つのレシピがあり、だからこそツールは切り替えのデモにこれを使っている。
鉄と金のケースは、コストの判断ではないというまさにその点で注目に値する。選択肢を提示するツリーが常に安い枝を提供するとは限らず、かまどを溶鉱炉に替えても買い物リストは何も変わらない。
ツリーが止まる場所
15種類のアイテムは原材料の葉として扱われる — それ以上展開せず、そこで止まる:
オークの原木 · 丸石 · 鉄の原石 · 金の原石 · ダイヤモンド · レッドストーンダスト · 砂 · ネザースター · 黒曜石 · ネザライトの欠片 · サトウキビ · 革 · 竹 · 羊毛 · 糸
このうち2つには注釈が必要だ。ネザライトの欠片は実際には古代の残骸を製錬したものだが、簡略化のため原材料として扱われる — つまりネザライトのコストは欠片1個につき製錬1工程分だけ過少に報告される。そしてオークの原木は「任意の原木」の代表であり、同じ挙動をする10種類の木材(およびネザーの2種類の幹)にツリーが分岐しないようになっている。
ツリーがどこで底を打つかを知ることは、ツリーそのものと同じくらい重要だ。「原材料」でのコストは、計算がどの素材を原材料とみなすかを知って初めて意味を持つ。