Как сделать генератор земли в майнкрафт

Обновлено: 06.07.2024

Давно собирался описать техническую составляющую Minecraft'а, но никак руки не доходили до этого. Но сейчас я на маленьком самолёте и отсюда некуда бежать, так что поехали!

Одна их самых главных вещей в Minecraft'e, это генерация мира. Когда я менял игру из состояния отдельных небольших карт к единому бесконечному миру, то настроить генерацию было очень сложно, поскольку новые земли должные генерироваться прямо по ходу исследований игрока, причём не должно иметь значения в какую сторону пойдёт игрок.

1) Как сделать мир бесконечным?

Сначала позвольте мне сказать пару вещей о «бесконечной» земле: она не бесконечная, но у неё нет определённого лимита. Просто чем дальше вы продвигаетесь, тем больше будет лагать. Земля генерируется, сохраняется, загружается и появляется снова с помощью чанков (один чанк это 16*16*128 блоков). Эти чанки имеют значение, которое представляет из себя 32-х битное целое число, которое хранит в себе информацию о примерно от -200 млрд. до +200 млрд. чанков. Если вы выходите за границу (а до неё, как до 1/4 пути до солнца) , то старые чанки начинают перезаписываться новыми. На 1/16 этой дистанции любые предметы, использующие целые координаты блоков будут вести себя странным и случайным образом.

Существует только два жёстких лимита.

Большое число таких вещей, как зёрна и уже существующие локации используют 64-битные числа с двойной точностью и с помощью них они делают очень много тонких штук. Например, на больших дистанциях игрок движется медленнее, чем у центра мира благодаря округлению ошибок (у координат очень большая мантисса, а амплитуда движения мала, поэтому ошибки быстрее округляются). Генератор может начать генерировать чудные структуры, например огромные кубы из одного и того же материала, но я так и не понял, что именно вызывает такие странности. Возникала одна проблема, связанная с тем, что при путешествиях на длинные дистанции физика начинала глючить и игрок мог внезапно провалиться под землю или застрять в стене, проходя мимо неё.

Большинство таких проблем решаются изменением математической модели окружения игрока и поэтому числа иногда могут иметь одинаковые значения. Для рендера Minecraft'а я использовал локальные координаты блока и координаты относительно игрока, и таким образом создаётся впечатление, что игрок движется. В основном это достигается с помощью OpenGL и 32-битных чисел с плавающей точкой для координат, но ошибки округления становятся очень очевидны, когда вы видите их в игре.

Мы пока не собираемся исправлять эти баги, потому что ещё не все игроки поняли, что нужно играть легально. Уверен, что большинство ещё довольно далеки от того, чтобы это понять. Путь до понимания этого может занять много времени. Кроме того, баги - это часть загадок Далёких Земель.

2) Как земля стала иметь такую классную форму?

В очень ранней версии Minecraft'а я использовал карту высот 2D шумов Перлина , чтобы придать миру форму. Ох, точнее я использовал множество из них. Один для общего подъёма, один для придания неровностей и один для мелких деталей. Для каждого столба из блоков высота вычислялась по формуле (подъём + (неровность*мелкие детали))*64+64. Все подъёмы и неровности были гладкими, на слишком большие добавлялся «шум», и детали были более запутаннее, чем сейчас. Этот метод имеет большое преимущество в плане скорости и в нём 16*16*(количество шумов) сэмплов для генерации в каждом чанке, но проблема была в том, что этот способ скорее был туп. Особенно тупизна видна в том, что нельзя сгенерировать нависающие склоны и арки.

Итак я предпочёл эту систему похожей, сделанной на 3-D шумах Перлина. Вместо проверки по высоте, я установил значение шума на «густоту» и теперь всё, что ниже 0 (нуля) будет воздухом, а всё, что на том же уровне или выше будет землёй. Чтобы убедиться, что дно плоское и без дыр, а верх не плоский я просто добавил высоту (исключая места под водой) в список сэмплов для генерации.

Но, к сожалению, я тут же столкнулся с проблемами производительности и игровой механики. Производительность падала из-за того, что нужно было обработать огромное количество сэмплов, а проблемы с игровой механикой были в том, что не было равнин и пологих холмов. Решением стало переключение сэмплов в более низкое разрешение (8х по горизонтали и 4х по вертикали) и использование линейной интерполяции. Внезапно игра стала генерировать равнины, пологие холмы и большинство единичных летающих блоков пропали.

Текущая формула, которую я использую довольно запутана (и секретна!), но она постепенно эволюционирует (во время работы над игрой). И да, она ещё использует 2D карту высот и шумов.

В скором времени скину видео из Майнкрафта с песней из фильма Реквием по мечте и эксклюзивный альбом с новой музыкой для игры.

Генератор камня

Чтобы при добывании камень не превратился в булыжник, надо использовать кирку, зачарованную на «Шёлковое касание».

IndustrialCraft 2/Генератор

В качестве топлива принимает горючие предметы.

Содержание

Автоматический генератор

Требуемые материалы

  • 17 единиц твёрдого, не горючего и не подверженного гравитации блока.
  • 1 ведро лавы.
  • 1 ведро воды.
  • 5 повторителей;
  • 1 поршень;
  • 6 красной пыли
Инструкция в картинках


Постройте обычную версию генератора.


Нужно достроить к ней механизм, как показано на картинке.


Далее следует запустить механизм. Ваш генератор готов!

Крафт [ ]

Старая версия рецепта:

Возобновление с помощью репликации исходных материалов [ ]
Картинка Название предмета Требуемое количество жидкой материи
Красная пыль 1.221 мВ
Оловянный слиток 1.082 мВ
Резина 100.7 мВ
Железный слиток 1.066 мВ
Булыжник 10 мкВ

Генератор булыжника, камня и базальта


Эффективность [ ]

Генератор вырабатывает 10 еЭ/т. Ниже приведена таблица с суммарной энергией, запасённой в различных видах топлива:

Вид топлива Энергия
Угольное топливо (для старых версий) 76440
Угольный блок 40000
Биотопливо (для старых версий) 26040
Коксовый уголь (Railcraft) 16000
Смолистый торф (Forestry) 10500
Коробка утильсырья 7870
Огненный стержень 6000
Торф (Forestry) 5000
Уголь 4000
Древесный уголь
Утильсырьё 870
Древесина 750
Доски
Книжный шкаф
Деревянные ступени
Сундук
Верстак
Проигрыватель
Музыкальный блок
Деревянный забор
Флаг
Деревянная нажимная пластина
Деревянный люк
Ворота
Датчик дневного света
Леса
Блок огромных грибов
Деревянные инструменты 500
Деревянная плита 370
Саженцы 250
Палка 250
Кактус 120
Сахарный тростник 120

Генератор имеет встроенный аккумулятор на 4000 EU.

Использование утильсырья в генераторе можно отключить в файле конфигураций. Для этого замените в строке

Содержание

Обычная версия

Требуемые материалы

  • 8 единиц твёрдого, не горючего и не подверженного гравитации блока.
  • 1 блок ступеней любого вида.
  • 1 ведро лавы.
  • 1 ведро воды.
Инструкция в картинках


Для начала поставьте блоки на расстоянии 1 метра друг от друга (стекло использовано для наглядности).


Затем расположите блоки, как показано на картинке.


Залейте воду и лаву, ваш генератор готов!

Торфяная ферма

Теперь. мне захотелось сделать гайды про индустриальные моды. Данную тему я бы хотел посветить форестри моду. Мод очень разнообразный, если вам что-то не по душе, можно другим заняться. Сначала, я бы хотел сосредоточить своё внимание на фермах. Возможно, если мне удастся получить разрешение на выкладывание видео, я выложу полноценный видео-гайд =)

Первой по очереди будет ферма торфа.
Вид фермы сверху:

Торфяная ферма

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

Итак, приступим к постройке.
Для начала нам надо скрафтить следующие предметы:
1. Торфяник;
2. Сборщик торфа;
3. 2 Торфяных двигателя;
4. 4 стака болотной земли на первое время;
5. Трубы, передающие энергию (из мода Build craft);
6. 1 железная труба и пару каменных (из мода Build craft);
7. Место для посадки.

Вот скриншот, чтобы было понятно, как всё ставить:

Торфяная ферма

Торфяник и сборщик запитываются энергией. Как только торфяник получил энергию, он начинает высаживать болотную землю. Вода автоматически заливается. Для созревания торфа необходима вода и 1 блок воздуха . Когда созревает торф, его собирает сборщик. Торф идёт по трубе, а вместо болотной земли появляется грязь. Спустя некоторое время, торфяник проверит рабочую зону на наличие грязи. Определив блок грязи, он вместо него поставит болотную землю, а грязь "выплюнет” в трубу. Открываем сундук, а там лежат торф и земля.

Ферму можно увеличить, т.е. вручную достроить 2 поля болотной земли. Но надо добавить 1 торфяной двигатель, чтобы система работала быстрей. Также, надо немного перестроить систему.

Торфяная ферма


Если вам понравилась статья, поблагодарите. В следующем гайде я расскажу, как сделать ферму пшеницы, а также мы рассмотрим увлажнитель. =)

Четырёхсторонняя версия

Требуемые материалы

  • 17 единиц твёрдого, не горючего и не подверженного гравитации блока.
  • 4 блока ступеней любого вида.
  • 1 ведро лавы.
  • 4 ведро воды.
Инструкция в картинках


Для начала нужно поставить 5 блоков: один в центре, остальные вокруг него на расстоянии 1 метра друг от друга.


Далее следует повторить действия из обычной версии генератора, но со всеми сторонами.


Затем залить лаву на центральный блок, воду в ступени. Ваш генератор готов!

Читайте также: