Как обновить генерацию мира в майнкрафт
Minecraft люди воспринимают по-разному. Для сообщества это детский сад, для игровой индустрии - феномен, простой и гениальный. Господин Нотч необычайно умен и сотворил технически шедевральную игру, о внутренностях которой я хочу поведать.
В начале я расскажу о некоторых интересностях генерации игрового мира, чем вызваны и как связаны, а потом опишу непосредственно принцип генерации.
Этот псевдо-рандом используется в огромном количестве игр и эту статью можно считать отправной точкой в мир неслучайных случайностей.
Интересности
Начнем пожалуй с того, что количество вариаций игрового мира не бесконечно, всего 281 триллион вариантов, 281 триллион возможных " seed ов", которые можно указать при генерации карты.
Майнкрафт даже спидранят, для этого раннер просто тренирует и отрабатывает стратегию в определенном мире, а на начало рана вводит его "зерно" - буквенное или численное значение.
Ограниченность связана с количеством переменных, что задаются при генерации непосредственно мира, но об этом ниже.
Сам мир тоже не бесконечен, технически. Если вы потратите 2 года реального времени и добежите до координат более 15 миллионов блоков от центра (но все предпочитают телепортироваться), то наткнетесь на так называемые "Далекие земли" :
Связано это с тем, что значение переменной, отвечающей за "границы" игрового мира для генератора, становится больше положенного и старые элементы накладываются поверх новых.
Непосредственно генерация
Начать стоит с того, что мир генерируется не по блоку, существуют так называемые чанки площадью 16 на 16 блоков площади и 256 блоков в высоту, вот как они выглядят :
Прорисовываются и генерируются они на достаточно большой площади от игрока, всё зависит от настройки дальности. Прошу заметить, что блоков в чанке 65 536, такое количество элементов способно содержать в себе 16-битная переменная, отвечающая за свой чанк. Верно полагать каждому блоку полагается координата и его айди, для движка воздух тоже имеет айди, наверно равен он нулю.
Сама геометрия генерируется с помощью шума Перлина . Крайне занятная вещь, которую в майнкрафте применили почти везде. Шум Перлина представляет из себя процедурно-генерируемую псевдо-рандомную черно-белую текстуру :
Похоже на дым, а в шутерах используется для генерации эффектов дыма, но мы сейчас о майнкрафте. Вообще стандартная восьмибитная палитра содержит в себе 255 градиентов, что между белым и черным, однако из шума Перлина обычно берут 100 значений - от 0 до 1.
Можно использовать получившуюся текстуру для генерации высот карты, здесь можно уловить связь - самый черный цвет имеет значение 255 в палитре, напомнить высоту игрового мира? 256! Однако алгоритм оптимизирован и не позволит сгенерированной горе вырасти так высоко.
Из текстуры точечно берутся значения цвета пикселей и соотносятся к блоку на карте, в случае с картой высот - видом сверху. Это пример двухмерного использования шума, но есть трехмерный и даже четырехмерный!
Программисты любят баловаться с шумом Перлина, я говорил о карте высот, взгляньте :
Изначально шум получается уж очень резким и карта может выглядеть вот так :
Однако методами линейной интерполяции, один столб образует вокруг себя гору, а глубочайший блок - озеро, так как значения высоты усредняются в зависимости от соседних блоков.
Можно всё же не усреднять, а объединять. Спавним деревенщину шумом Перлина - многовато в одном месте? Стянуть всех сюда и воткнуть город.
Это будет не сглаживание, а наоборот, группировка или уплотнение.
Так же можно нарастить лес.
Возможности использования шума Перлина и математики в целом воистину безграничны, в дальнейшем я расскажу о алгоритмах
псевдо-рандома и где еще пригодился Перлин и его шум.
Обновление генератора мира Minecraft
I thought it was time I gave you an update on the world generator changes we’ve been working on. The last time we did any major changes to the generator was back in March 2012, when the jungle biome was added.
In case you don’t know what a “biome” is, it’s a climate zone used in the game to set what kind of surface the ground has (sand? grass?), whether it should rain or snow, what trees grow there, and sometimes also what kind of animals that are allowed to spawn there. The biome is also used to determine how hilly it should be, although this is a technical solution because biomes are generated before the elevation (the old generator created the elevation first, and decided on biomes based on elevation).
One reason why we rarely do changes to the world generator is because every little change off-sets the world seed and causes noticeable borders between new and old terrain. A lot of people don’t mind about these borders, but we still want to avoid creating them. So, in order to avoid needing to change the world generator again in the nearest future, we try to do as many changes now as possible.
There have been three main problems we have wanted to address:
Too large oceans
Too uneven/random biome placement
Not enough variation
The solution to these problems have been,
Tweaks to add more islands and checks to avoid huge oceans
Biomes have been put into four main categories: snow-covered, cold, medium, and dry/warm. Biomes will avoid getting placed next to a biome that is too different to itself (sometimes this still happens, but it’s very rare now and not all over the place)
We’ve added a whole bunch of new biomes…
… and most biomes have uncommon/rare variations that you may run into
We’ve also added a bunch of new terrain features, such as new flowers and trees
Краткий перевод:
Я думаю, что настало время дать вам информацию про обновление генерации мира! Последние большие обновления были, когда мы добавили джунгли в далёком Марте 2012
Если вы не знаете что такое биом, то это климатическая зона, используемая в игре.
Одна из причин, почему мы редко делаем изменения в генераторе - незначительное изменение вызывает заметные границы между новыми и старыми биомами. Многие люди не подозревают об их существовании. Итак, для того, чтобы избежать необходимости менять генератор снова в ближайшем будущем, мы стараемся делать так много изменений сейчас, как это возможно.
Три основные проблемы:
Слишком большие океаны
Размещение биомов слишком неравномерно
Не достаточно изменений
Решение этих проблем есть. Хитрости, чтобы добавить больше островов и проверки, чтобы избежать огромных океанов
Биомы разделятся на основные категории: заснеженная, холодная, средняя и сухой. Биом не будут рамположены рядом с биомом, который слишком отличается от первого (иногда это по-прежнему происходит, но это очень редко, теперь и не повсеместно)
Мы добавили целую кучу новых биомов .
. И большинство биомов - редкость.
Мы также добавили несколько новых дополнений местности, такие как новые цветы и деревья.
Краткое содержание:
В Minecraft 1.7 будет более плавная генерация(то есть не будет пустыни рядом с тайгой), много новых биомов со своими особенностями. Всё сводится с скорому появлению первых снапшотов 1.7
И на закуску:
Генератор мира 1.6:
Генератор мира 1.7:
Как перегенерировать мир в Minecraft?
Я создал сервер в Майнкрафте (через Хамачи) и после создания поставил на него моды Thaumcraft 3 и DivineRPG. Что делать? Руды найти не могу рядом и магии из Таумкрафта 3 нет! Как обновить мир, чтоб он сгенерировался уже с этими модами? Помогите пожалуйста! (СЕРВЕР НЕ БАККИТ. )
если мир создавался ДО установки модов, то естественно на уже сгенерированных чанках в генерации мира не будет признаков этих модов - надо пойти в любую сторону, игра автоматом сгенерит новые чанки уже с "участием" новых модов.. . конечно, если они установлены правильно
чтобы перегенерить карту заново, отключи сервер и удали папку мира, при след. запуске создастся новый
при запуске смотри консоль сервера, там все подсказки
ну и подробности будут, повторюсь, в логах
Как перенести мир на новую версию майнкрафта?
В майнкрафт уже встроен алгоритм обновления данных. Достаточно всего лишь открыть один раз старый мир на новой версии, чтобы игра автоматически обновила его версию и начала применять новые алгоритмы генерации местности.
В разных версиях алгоритмы генерации отличаются, что приводит к появлению стыка генерации. Похожий эффект возникает при ошибке сохранения чанков.
Однако старая уже сгенерированная местность всё ещё имеет старый формат чанков. Он обрабатывается гораздо медленнее – мир дольше грузится и увеличивается задержка при прогрузке чанков. Но Майнкрафт не обновляет его автоматически, так как это довольно долгий процесс, и обновление формата в реальном времени привело бы к серьёзной нагрузке на процессор.
Поэтому обновление формата чанков вынесено в отдельную функцию «Оптимизировать мир» в меню настроек мира:
При нажатии на эту кнопку игра предупредит вас о том, что после завершения процедуры скорость работы игры в этом мире повысится, но его больше нельзя будет открыть на более ранних версиях и предложит создать резервную копию. Не стоит пренебрегать такой возможностью.
Стоит отметить, что при создании резервной копии майнкрафт на время зависает и перестаёт реагировать на нажатия, однако не перестаёт работать. В зависимости от размера мира это может длиться по-разному (кстати, эффективность сжатия довольно высока – примерно 1 к 10). Когда создание резервной копии завершится, Майнкрафт автоматически приступит к процессу обновления формата чанков:
Читайте также: