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