В настоящее время я нахожусь в процессе кодирования процедурного генератора ландшафта для игры. Для этого я делю свой мир на куски одинакового размера и генерирую их один за другим по мере того, как игрок прогуливается. Пока ничего особенного.
Теперь я специально не хочу, чтобы мир был постоянным, т.е. если кусок выгружается (может быть, потому что игрок переместился слишком далеко), а затем снова загружается, он не должен быть таким, как раньше.
Насколько я понимаю, неявные подходы, такие как обработка 3D-симплексного шума в качестве входных данных функции плотности для марширующих кубов, не подходят для моей проблемы. Это потому, что мне нужно было бы повторно заполнить генератор, чтобы получить разные возвращаемые значения для одной и той же точки в пространстве, что привело бы к разрывам вдоль границ фрагментов.
Я также изучил Midpoint Displacement / Diamond-Square. Заполнив карту высот каждого фрагмента значениями границ соседних фрагментов и рандомизировав углы фрагментов, у которых нет других фрагментов поблизости, я смог создать мозаичный ландшафт, который демонстрирует желаемое поведение. Тем не менее, результаты выглядят довольно скучно. В частности, поскольку этот метод основан на картах высот, в нем отсутствуют выступы и тому подобное. Более того, даже при рандомизации углов особенности рельефа, как правило, ограничены небольшими участками, т. е. отсутствуют многоуровневые холмы или подобные ориентиры.
Теперь мне было интересно, есть ли другие подходы к этому, о которых я еще не слышал/не думал. Любая помощь высоко ценится! :)
Ваше здоровье!