Как Minecraft устроена за кадром

Насколько часто встречаются руды, как устроен генератор мира и откуда взялись «Далёкие земли».

В рубрике «За кадром» редакция и пользователи DTF публикуют и переводят материалы про «закулисье» видеоигр — контент, скрытый от посторонних глаз. Сюда попадают различные геймдизайнерские и художественные приёмы, которые наглядно демонстрируют то, как разрабатываются видеоигры, — а также разного рода баги и пасхалки.

Но выпуск про Minecraft получился немного иным. В отличие от других игр в рубрике, миры в Minecraft генерируются случайным образом. В них не отыскать ни пасхалок, ни «закулисного» контента — лишь баги и интересные закономерности при создании уровней.

Поэтому данный материал вряд ли будет полезен с точки зрения геймдева. Но зато здесь вы сможете прочесть множество любопытных фактов про техническую сторону Minecraft — известных и не очень.

Начнём с главного — с руд, которые нужно добывать. Они скрыты в толще каменных пород, и зачастую игрок вынужден копать вслепую, чтобы наткнуться на нужный металл.

Впрочем, если отключить текстуры камней при помощи читов, станет видно, насколько часто руды встречаются на самом деле. Те, кто хоть раз пробовал использовать моды в духе X-Ray, сразу узнают вид.

В Minecraft чем ниже копать, тем более редкие металлы начнут попадаться. Верхние пласты зачастую занимает уголь с железом, а пониже начинают появляться редстоун, золото, лазурит и настоящая ценность — алмазы с изумрудами. Последние, кстати, спаунятся лишь в горных биомах.

Вот так выглядит примерное распределение руд по всей высоте карты.

График распределения руд по высоте для мира, созданного в версии 1.12.2. По вертикали — частота появления, по горизонтали — уровень высоты
График распределения руд по высоте для мира, созданного в версии 1.12.2. По вертикали — частота появления, по горизонтали — уровень высоты

Миры в Minecraft поделены на чанки — столбы площадью 16х16, — и, согласно статистике, как минимум три блока алмазной руды приходится на один чанк. Так что если вы за несколько часов не нашли ни один из них, скорее всего, вы просто неправильно копаете.

Популярный совет о том, что если вы нашли лавовое озеро, то где-то рядом должны быть алмазы — это заблуждение. Генерация озёр и алмазной руды никак не взаимосвязаны — просто чаще всего их можно найти на одной высоте.

При помощи того же X-Ray можно увидеть, как выглядит сеть подземных пещер.

Как Minecraft устроена за кадром

Следующие трюки можно провернуть и без читов — достаточно просто зайти в настройки генерации уровня.

Если в опциях создания плоского мира включить заброшенные шахты, но убрать слой камня, уровень будет выглядеть как-то так.

Начинаешь понимать, насколько далеко шахты могут тянуться.
Начинаешь понимать, насколько далеко шахты могут тянуться.

Таким же образом можно получить подземные Крепости в чистом виде.

Как Minecraft устроена за кадром

Вот что будет, если создать плоский мир из песка и сломать нижний блок. Когда это происходит, все сторонние блоки считывают, что песок рядом с ними сломался — в итоге срабатывает триггер, и все они устремляются вниз.

Долго это пронаблюдать не получится, так как игра крашится.

Дело в том, что падающие блоки (песок, гравий, активированный динамит) с технической точки зрения — это не блоки, а сущности, то есть мобы. И обрабатывать такое большое количество мобов одновременно становится очень сложно

В основе генерации мира Minecraft лежат шумы Перлина — алгоритм для генерации объёмных ландшафтов.

Генератором создаётся карта шумов — или, грубо говоря, карта высот. Её можно сравнить с топографической картой: там, где светлее — местность выше, там, где темнее — ниже.

Но получившаяся карта далека от идеала — большие значения могут соседствовать рядом с маленькими, из-за чего местность получается неестественно обрывистой. Что-то подобное можно было наблюдать в самой первой версии Minecraft, которая тогда ещё называлась «Cave Game».

Чтобы «сгладить» ландшафт, применяется интерполяция — находятся промежуточные значения. Генерируются горы и низины.

Затем добавляются элементы вроде деревьев, рек, озёр, деревень NPC и так далее. Получается привычный нам мир.

Как Minecraft устроена за кадром

В отличие от игрового уровня, облака в Minecraft не генерируются случайно — наоборот, у них всегда одна и та же текстура, которую можно найти в файлах игры.

Как Minecraft устроена за кадром

А если во время ливня подняться значительно выше облаков (где-то на высоту 460-470 блоков), дождь сменится снегопадом. Это касается не всех биомов — в пустыне осадков вообще никаких нет.

Из-за дальности прорисовки, если подняться на большую высоту, солнце можно увидеть даже ночью, а луну — днём.

Если применить зелье невидимости на пауках, в воздухе останутся видны их глаза. Разработчики смогли это реализовать в том числе благодаря тому, что глаза с технической точки зрения — это отдельная текстура.

С Эндерменами та же история.

Сейчас многие модификации и программы позволяют посмотреть на то, как тот или иной сгенерированный мир выглядит сверху. Ниже — несколько примеров со снимками.

Ярко-зелёный цвет — болота, рыжий — месы, ярко-фиолетовый — грибные острова
Ярко-зелёный цвет — болота, рыжий — месы, ярко-фиолетовый — грибные острова
Как Minecraft устроена за кадром
Как Minecraft устроена за кадром

Вот тут показана карта мира со всеми адскими крепостями, на которые можно наткнуться, если активировать портал в Нижний мир. Видно, что они генерируются полосами с юга на север.

То есть, если вы нашли адскую крепость в Нижнем мире, достаточно проследовать на юг или север, чтобы найти ещё одну
То есть, если вы нашли адскую крепость в Нижнем мире, достаточно проследовать на юг или север, чтобы найти ещё одну

А на снимке ниже по краям отчётливо видно, что с генератором происходит что-то не то.

Это называется «Далёкие земли» (Far Lands) — искажения в генераторе мира после того, как игрок пересекает координату в 12 550 824 блока от центра. Эффект уже пофиксили в Java Edition на ПК, но на мобильных платформах и консолях он всё ещё существует.

Угловые Далёкие земли  <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fminecraft.gamepedia.com%2FFar_Lands&postId=202337" rel="nofollow noreferrer noopener" target="_blank">Minecraft Wiki</a>
Угловые Далёкие земли  Minecraft Wiki
Соприкосновение Далёких земель в пустыне и месе 
Соприкосновение Далёких земель в пустыне и месе 

Причина генерации «Далёких земель» следующая. Как уже было сказано ранее, генератор миров использует трёхмерный шум Перлина, чтобы создать мир.

Карта шума покрывает значения в интервале [−2^31, 2^31) — поэтому, грубо говоря, последнее значение, которое учитывается картой, это число, меньшее 2^31 или 2 147 483 648.

При этом на каждый блок отводится 171,103 значений шума. И если разделить 2^31 на это число, получается 12 550 824 — место прохождения границы Далёких земель. На этих координатах с генератором начинают происходить ошибки.

Вот так они выглядят в Эндере.

А вот так — в Java Edition до того, как их пофиксили в версии Beta 1.8. На каждой платформе они смотрятся по-разному.

Кстати, недавно один из стримеров дошёл до «Далёких земель» вручную. На это у него ушло около девяти месяцев. <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fyoutu.be%2FqL52LUdlYJU&postId=202337" rel="nofollow noreferrer noopener" target="_blank">Здесь</a> можно посмотреть на его реакцию, когда он впервые увидел слоистый ландшафт на границе дальности прорисовки 
Кстати, недавно один из стримеров дошёл до «Далёких земель» вручную. На это у него ушло около девяти месяцев. Здесь можно посмотреть на его реакцию, когда он впервые увидел слоистый ландшафт на границе дальности прорисовки 

В Java Edition на ПК для того, чтобы «Далёкие земли» не появлялись в принципе, их сначала «отодвинули» при помощи фикса на расстояние свыше 30 миллионов блоков, а затем ограничили генерацию мира дальше этих значений.

Теперь, как только игрок попытается добраться до туда, на координате 29 999 983 он увидит мерцающую стену — границу мира.

За ней можно увидеть пару чанков, но все они ложные — сквозь них можно провалиться

Ну и напоследок немного типичного контента для рубрики. У снежного голема под тыквенным шлемом скрыто лицо снеговика.

Раньше в игре не было легального способа это увидеть, но недавно в обновлении добавили возможность снять тыкву с помощью ножниц
335335
40 комментариев

Зря они миру четкие границы сделали. Изюминку такую убрали (

113

Я помню на каком-то серве как раз в дальних землях поселился, ваще каефно было

20

Комментарий недоступен

1

Если применить зелье невидимости на пауках, в воздухе останутся видны их глаза. Разработчики смогли это реализовать в том числе благодаря тому, что глаза с технической точки зрения — это отдельная текстура.

68

Комментарий недоступен

33

Да, кажется, что зря убрали далекие земли - это же баг покруче иных фич

31

То-есть другими словами ты срезаешь лицо ножницами бедному голему? Дизлайк за это тебе! 

19