Minecraft World Generation: как изменить поколение мира для каждого биома? - PullRequest
0 голосов
/ 20 июня 2020

Этот вопрос, возможно, задавали раньше. Я искал «руководства» или темы, охватывающие этот аспект создания пользовательского мира, однако найденные темы / руководства часто очень старые (3-4 года), что означает, что некоторые, если не большая часть руководства, на данный момент недействительны.

Теперь вернемся к нашему вопросу. Я создал метод для замены

getDefaultWorldGenerator(String worldName, String genId)

, этот метод возвращает мой собственный генератор фрагментов. Здесь il oop через все координаты в блоке (т.е. значения x 0-15 и значения z 0-15.), Затем я использую карты шума (карты шума Perlin) для представления дождя, температуры и влажности почвы

temperatureGen = new PerlinOctaveGenerator(world.getSeed(), 16);
temperatureGen.setScale(1.0 / 1200.0);

rainfallGen = new PerlinOctaveGenerator(world.getSeed() + 1, 15);
rainfallGen.setScale(1.0 / 1200.0);

moistureGen = new PerlinOctaveGenerator(world.getSeed() + 2, 14);
moistureGen.setScale(1.0 / 1200.0);

Все с частотой 0,5 и амплитудой 0,5, затем умноженной на 100 (moistureGen.noise(realX, realZ, 0.5, 0.5) * 100.0))

* Примечание. Это скопировано из руководства, поэтому, если у вас есть предложения по разным шкалам / количеству октав, будь моим гостем.

Затем я сравниваю значение этих шумовых карт со списком Enum для всех существующих биомов Minecraft, чтобы получить биом, который лучше всего подходит для использования кубического расстояния, поскольку есть 3 измерения.

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

Вопрос: Как сгладить этот обрыв / Есть ли лучший способ создать карту на основе биома?

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