Версия Minecraft
1.7+
Здравствуйте. Добрый день. Думаю, достал уже Вас с вопросами) Но помогите, пожалуйста)
Я снова попытался разобраться в генерации биомов и, покопавшись в коде игры, мало, что понял. Моя цель - разобраться, как же игра выбирает, где, какой биом расположить и как она устанавливает размеры.

Что я понял?
Эту роль на себя точно берет ChunkManager (он же BiomeProvider в новых версиях). Казалось бы, уже нашел, как это происходит, но нет: этот класс оказывается "самозванцем", он просто обращается к какому-то странному классу под названием GenLayer, в основном к таинственной функции getInts (Forge дает непонятное объяснение, но я полагаю, что она уже возвращает готовые ID биомов, а сама функция содержит непонятный код). Хорошо, тогда я решил разобраться, откуда появляются эти странные GenLayer'ы. И прокрутил до конструктора, зашел в код метода GenLayer.initializeAllBiomeGenerators(seed, worldTypeIn, settings), и был поражен:1531249554455.png
До чего же непонятный и страшный код! Какая-то система наследования (переменная parent в каждом GenLayer'е говорит об этом), каждый GenLayer вызывает своего "отца" и на основе результатов "отцовского" GenLayer'а что-то делает. В общем, я так и ничего не понял. Причем где-то даже обнаружил еще один таинственный класс: BiomeCache... Но он хоть оказался более понятным, чем GenLayer, однако я не понял, для чего он.

Прошу ответить на несколько вопросов, если не сложно:
1) Что за GenLayer? Вообще, что означает его название: "генераторный слой"? Что он делает? Как работает его функция getInts?
2) Для чего BiomeCache? Я хоть понял, что он делает, но зачем?
3) Как Minecraft понимает, что рядом, например, пустынный биом и надо сгенерировать поэтому саванну или другой жаркий биом именно, а не, например, тайгу?
4) Как вообще работает распределение биомов в Minecraft? На каком алгоритме?
Или киньте, пожалуйста, гайд на 1.7-1.12, где объясняется, что делает этот GenLayer и т. д.
 
Решение
@Garik совершенно прав! В коем то веки )
То, что ты ищешь, находится в оффтопе, а именно тут )
Сам, когда-то задавался этим вопросом, всё оказалось до невозможного просто и понятно...
@fewizz всё очень дельно объяснил. Спасибо ему за это )))
4,046
63
645
@Garik совершенно прав! В коем то веки )
То, что ты ищешь, находится в оффтопе, а именно тут )
Сам, когда-то задавался этим вопросом, всё оказалось до невозможного просто и понятно...
@fewizz всё очень дельно объяснил. Спасибо ему за это )))
 
То, что ты ищешь, находится в оффтопе, а именно тут )
Большое спасибо! Мне эти сведения нужны, чтобы сделать 2 версию собственного генератора мира WorldEngine. В первой версии этого генератора использовался примитивный алгоритм с шумом Перлина, поэтому было много ограничений здесь, например, сложно было создать редкий биом. Во второй версии я хочу все это поменять, поэтому я решил изучить Майнкрафтовский метод, но, так и ничего не узнав, я решил придумать свой новый метод, и так совпало (!!! СОВПАЛО, КАРЛ !!!), что он тоже будет выбирать расположение биомов послойно. Только я все-таки буду использовать не числа и сглаживание, а свой шум Перлина, все-таки им гораздо проще управлять, чем GenLayer'ами.
 
Сам, когда-то задавался этим вопросом, всё оказалось до невозможного просто и понятно...
А вот с ChunkGenerator'ом (он же в старых версиях ChunkProvider) все одновременно и понятно, и непонятно. Я 1 год (или 2) назад по названиям сразу же понял, какой алгоритм он использует - шум Перлина (тогда не понял только то, как Minecraft выбирает позиции для биомов). А дальше он производит с ним какие-то странные и непонятные расчеты (настолько замудренные, что шум уже уродуется). Я тогда активно делал свой мод на химический мир под названием Chemical World и из-за незнания методов распределения биомов в игре Minecraft так и не смог добавить второй биом в свой мир... Тогда я и решил сделать WorldEngine (на фоне обсуждения кастомизации Галактического Конструктора из Galaxy Additions) - свой генератор мира, как говорится, с блекджеком и ш****** :). Решил создать внутренную систему распределения биомов WE, а Майнкрафту лишь сказать, что весь мир - это 1 биом: WorldEngine. :):):) Кстати, потом оказалось, что эта случайная фича очень полезная для разработчиков Galaxy Space и Galaxy Additions на фоне ограничения в 256 биомов в ванильном регистре.
 
Последнее редактирование:
А рельеф-то видел?
Только по снимкам могу судить о рельефе (обычный рельеф в стиле Minecraft). Сам не запускал этот мод, ибо лень) Мне больше понравилось красивое сочетание биомов.
 
Сверху