@svyatoslav_sem

Каким образов процедурно расставлять объекты в 2d мире?

Имеется конечный 2d мир, состоящий из чанков, каждый из которых содержит в себе 16x16 тайлов. Размер мира - до 32к на 16к тайлов. Для генерации использую шум перлинга. Мир генерируется не весь сразу, а по мере передвижения игрока. Существуют различные биомы, у каждого из которых имеется некоторый набор тайлов. Например: почва тундры, песок пустыни и так далее.
Пример карты биомов
h_1514608153_5492193_e7817852b2.png
И необходимо на определённых тайлах расставить объекты с какой-то минимальной дистанцией между друг другом, да так, что бы в определённых участках, задаваемых специальной картой плотности, эту дистанцию можно было менять. Для этих целей вполне себе может подойти алгоритм Poisson Disk, и я даже его реализовал:
Poisson Disk
5a4715c06dbcb699756718.png
Однако, есть проблема. Для работы алгоритма необходимо задать ширину и высоту рабочей области, а я не могу себе позволить генерировать poisson disk для всей карты, потому что она достаточно большая и на генерацию уйдёт непростительно много времени. Мне же необходимо генерировать маленькие кусочки карты, да так, чтобы при повторной генерации одного куска, результат не изменился, и между данным куском и остальными не было заметно швов. Можно ли модифицировать алгоритм Poisson Disk для решения этой задачи, или необходимо искать другой вариант? Если да, то какой?
  • Вопрос задан
  • 236 просмотров
Решения вопроса 1
@svyatoslav_sem Автор вопроса
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Для расстановки деревьев с разной плотностью можно использовать дизеринг. Вы же генерируете карту плотности деревьев, берите её и просто семплируйте согласно правилам дизеринга, большинство алгоритмов разрабатывались для GPU и рассчитаны на параллельность и максимальную независимость от соседних ячеек.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы