2D процедурная генерация - PullRequest
0 голосов
/ 24 ноября 2018

В настоящее время я пытаюсь реализовать сгенерированные процедурным способом карты тайлов для загробного мира.Я до сих пор генерирую шум и строю мозаичные карты, используя разные диапазоны в пределах генерируемого шума.Тем не менее, они очень грубые, так как каждый отдельный «биом» - это всего лишь одна плитка.Каков наилучший способ реализовать детализацию и края каждого биома?например, цветы / деревья / и т. д., раскинувшиеся в лесном биоме, плитки перехода от пляжа к воде между пляжем и океаном и т. д. и т. д.

Для некоторых целей я создал движок в MonoGame с моим другом.Мы внедрили систему загрузки фрагментов для динамической генерации и бесконечной прокрутки без экранов загрузки (я знаю, что это не совсем современный уровень, но я гордился этим).Каждый фрагмент имеет размер 50x50, и в каждый момент времени загружается 9 блоков.Когда игрок перемещает порции в любом направлении, порции в противоположном углу выгружаются, а новые загружаются в направлении, в котором движется игрок.Так как игрок начинает с противоположной стороны, где генерируются чанки, это не было проблемой, поскольку карты достаточно велики, чтобы их можно было сгенерировать к тому времени, когда игрок доберется до них.Я не уверен, собирается ли нынешний метод, который я имею в виду, изменить это или нет.

В любом случае, я думаю, что мне нужно определить в каждом биоме определенный набор плиток и генерировать шум длякаждый экземпляр биома, чтобы определить размещение «подробных» плиток, специфичных для этого биома.Для краев я бы просто прошел по каждой соседней плитке, чтобы определить, является ли это другим биомом.Если это так, используйте плитку перехода.Однако сама идея кажется очень неэффективной, так как генерируется тонна шума, а также проходит по 7500 тайлам каждый раз, когда игрок перемещает куски.Я пытался придумать лучший метод, но это мой первый набег на процедурное поколение, и я не смог найти много онлайн-разговоров о чем-то более глубоком, чем генерация шума и использование этого шума для генерации кусковземли.Есть ли более эффективный метод, который я должен использовать, или мой следующий шаг будет оптимизировать?Я не могу себе представить, что мой метод будет очень эффективным или практичным из-за того, сколько я буду проходить по каждой клетке.У кого-нибудь есть идеи или предложения?Заранее спасибо.

1 Ответ

0 голосов
/ 26 ноября 2018

Одна идея:

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

Это должно генерировать плавные границы между биомами итакже разные куски с одинаковым биомом могут иметь различное ощущение.

...