제작 결과물은 올림 처리되므로, 제작 비용은 단순한 곱셈이 아니다
종이는 제작 1회당 3개가 나온다. 4개가 필요하면 사탕수수 6개를 쓰고 종이 2개가 남는다. 제작 트리의 모든 단계에서 이런 일이 벌어지고, 낭비는 아래로 갈수록 누적된다. 15가지는 원재료로 취급돼 안 쪼개진다.
어떤 물건의 원재료 비용을 계산하는 건 곱셈 문제처럼 보인다. 하지만 아니다. 레시피는 정해진 묶음 단위로 결과물을 만들고, 그 일부만 제작할 수는 없기 때문이다.
규칙
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개로 만들고, 종이는 사탕수수로 제작 1회당 3개가 나온다. 따라서 책 1권에는 종이 제작 1회가 정확히 필요하다 — 사탕수수 3개, 낭비 없음.
책 2권에는 종이 6개가 필요하고, 이는 제작 2회이므로 여전히 깔끔하다. 하지만 트리 안의 어떤 수량이든 묶음 경계에서 벗어나면, 그 단계의 올림이 아래의 모든 것에 더 큰 요구량으로 전파되고, 그것이 다시 올림된다. 트리가 깊어질수록 이런 누적이 쌓여서, 각 단계는 다 맞아 보이는데도 총합이 단순한 quantity × unit cost를 크게 웃돌 수 있다.
이것이 비용 계산기를 직접 계산하는 대신 써야 할 단 하나의 이유다: 산수는 쉽지만 장부 정리는 그렇지 않다.
대체 레시피는 가격이 아니라 트리를 바꾼다
어떤 아이템은 만드는 방법이 하나 이상 있고, 계산기에서 전환할 수 있다:
- 철 주괴 — 화로에서 제련하거나, 용광로에서 제련한다. 둘 다 철 원석 1개를 소모해 1개를 만들므로, 선택 기준은 재료가 아니라 속도와 연료다.
- 금 주괴 — 같은 짝이고, 같은 등가 관계다.
- 막대기 — 진짜로 다른 두 가지 레시피가 있으며, 그래서 이 도구가 전환 기능을 시연할 때 쓰는 항목이다.
철과 금의 경우는 비용 결정이 아니라는 점에서 정확히 눈여겨볼 만하다. 선택지를 제공하는 트리가 항상 더 싼 가지를 제공하는 건 아니며, 화로를 용광로로 바꿔도 쇼핑 목록에는 아무 변화가 없다.
트리가 멈추는 지점
15개 아이템은 원재료 잎으로 취급된다 — 더 이상 확장하지 않고 거기서 멈춘다:
참나무 원목 · 조약돌 · 철 원석 · 금 원석 · 다이아몬드 · 레드스톤 가루 · 모래 · 네더의 별 · 흑요석 · 네더라이트 파편 · 사탕수수 · 가죽 · 대나무 · 양털 · 실
그중 둘은 짚고 넘어갈 만하다. 네더라이트 파편은 사실 고대 잔해를 제련한 것이지만, 단순화를 위해 원재료로 취급된다 — 따라서 네더라이트 비용은 파편 하나당 제련 1단계씩 과소 계산된다. 그리고 참나무 원목은 "모든 원목"을 대표하므로, 트리가 똑같이 동작하는 열 가지 나무 종류(그리고 두 가지 네더 줄기)로 갈라지지 않는다.
트리가 어디서 바닥을 치는지 아는 것은 트리 자체만큼 중요하다: "원재료" 비용은 계산이 무엇을 원재료로 부르는지 알고 나서야 비로소 의미가 있다.