Сид — это число, а не код мира
Зерно генератора не содержит карту. Оно задаёт начальное состояние генераторов случайных чисел, по которым карта вычисляется заново.
Мир не хранится где-то целиком. Он вычисляется по координатам — и каждый раз одинаково.
Когда игрок подходит к новому месту, движок берёт координаты, зерно генератора и набор функций и собирает столб блоков заново. Соседние чанки стыкуются без шва потому, что функции непрерывны: координата X+1 даёт значение, близкое к X.
Белый шум для соседних точек выдаёт несвязанные числа — из него получается поле игл. Шум Перлина расставляет градиенты в узлах невидимой решётки и интерполирует между ними, поэтому значение меняется плавно. Одна и та же координата при одном и том же сиде возвращает одно и то же число. На этом держится и воспроизводимость сидов, и то, что два игрока видят одинаковые горы.
Одной частотой шума горы не сделать. Генератор складывает несколько слоёв: низкая частота отвечает за материки и хребты, средняя — за холмы, высокая — за выступы и неровности. Амплитуда каждого следующего слоя меньше, иначе детали перебили бы общую форму. Меняя число октав, их вес и частоту, получают либо широкий спокойный ландшафт, либо резкий скальный.
С 1.18 рельеф и пещеры считаются не как «высота поверхности», а как поле плотности. Значение выше нуля — в точке есть порода, ниже нуля — пустота. Пересечение нескольких таких полей даёт пещерные камеры, вертикальные разрывы и пузыри воздуха. Верхняя граница твёрдой части становится поверхностью, а дальше вступают правила биома: трава, песок, снег, вода.
Жила — не случайный набор блоков. Генератор делает несколько попыток на чанк, в каждой выбирает стартовую точку, разрастает из неё жилу заданного размера и применяет правило отбраковки по соседству с воздухом. Важнее другое: у руд разное распределение по высоте.
В равномерном распределении (uniform) вероятность встретить блок одинакова на всей высоте жилы. В треугольном (triangle) она растёт к середине диапазона и падает к краям — поэтому у таких руд «лучший слой» существует физически.
| Руда | Диапазон Y | Пик Y |
|---|---|---|
| Уголь | 0 … 320 | 45 |
| Медь | −16 … 112 | 43 |
| Железо | −64 … 72 | 14 |
| Лазурит | −64 … 64 | −2 |
| Золото | −64 … 256 | −18 |
| Редстоун | −64 … 16 | −59 |
| Алмаз | −64 … 16 | −59 |
| Изумруд | −16 … 320 | 85 |
Отсюда и привычка копать на −59: там пик алмаза и редстоуна. Золото и лазурит на этой глубине уже не встречаются — их пики выше. У изумруда своя особенность: он ставится отдельными блоками и только в горных и нагорных биомах.
Биом — не оттенок травы. Это решение о том, какие блоки ложатся в поверхность, какая растительность растёт, идут ли осадки и какие структуры здесь разрешены. Пустыня отличается от равнины составом верхних слоёв и наличием деревни, а не цветом.