2014-11-29 2 views
0

Я следовал этой странице http://devmag.org.za/2009/04/25/perlin-noise/ в качестве руководства для создания моего собственного шума Перлина - это было указано в разделе комментариев, что это FBM шум, но это не имеет значения.Устранение (или обнаружение) отверстий в процедурном шуме для разработки игр

Это очень хорошо работает до сих пор, это результаты после некоторой «очистки», чтобы удалить как можно больше артефактов. http://puu.sh/dayg9/2943aca5ce.png

Теперь, когда я создал свой шум, я собираюсь использовать его как бесконечную карту для игровой платформы. Однако, как вы можете видеть, в моем шуме есть некоторые дыры.

-Пожалуйста, обратите внимание - этот шум предназначен для 2D-игры!

Мой вопрос: как я могу заполнить эти отверстия или остановить игрока от нереста внутри них? Не могу найти ответ, несмотря на множество поисковых запросов и мышление EXTRA.

Спасибо за ваше время :)

ответ

0

Кто-то упомянул, что решение имеет большое значение для алгоритмов заполнения, таких как используемые в краске Microsoft.

Я буду продолжать использовать «заполнения Scanline» алгоритм - http://en.wikipedia.org/wiki/Flood_fill

0

Просто используйте алгоритм Неевклидова http://en.wikipedia.org/wiki/Haversine_formula основанный на первый взгляд на то, где они нерест найти количество объектов в пределах размера набора зазора, а затем переместить игрок к различная область появления, если счет слишком мал.

Для скорости вы можете рассчитать это при начальном времени генерации исходной зоны и затем кэшировать результаты по каждому региону, чтобы упростить запрос.

+0

Спасибо за быстрый ответ! Я не понимаю, что вы подразумеваете под «объектами в пределах заданного размера разрыва»? – ipe369

+0

Под этим я подразумеваю подсчет объектов на заданном расстоянии от центра известного промежутка. – honestduane

+0

Я вроде как понял, но я просто не могу окунуться в голову, почему вы хотите использовать формулу haversine, которая, по моему ограниченному пониманию, предназначена для вычисления расстояний между 2 точками над поверхностью сферы. – ipe369

Смежные вопросы