Как я могу создать случайный «мир» в движке плиток?

22

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

lezebulon
источник
5
Об этом много раз спрашивали, попробуйте поискать здесь: генерирование случайного мира Редактировать: Вот один из них для движка тайлов.
Ричард Марскелл - Дракир
2
-1: этот вопрос без ответа в его нынешнем виде. Это слишком расплывчато, только утверждая, что это «карта мира», сделанная из плиток. Хорошо, что вид плитки? Что эти плитки делают с точки зрения игрового процесса? Это может быть что угодно, от Final Fantasy до Civilization, и «лучший способ» создать ландшафт для этих двух игр совершенно другой . Невозможно дать ответ, который обеспечит хороший игровой процесс, ничего не зная о том, как вы планируете его использовать. Прежде чем вы сможете говорить о процедурной генерации чего-либо, вы должны быть в состоянии вручную сделать хорошую версию этого самостоятельно.
Николь Болас

Ответы:

34

Ваш вопрос ведет вас в область генерации процедурного контента.

Плитное мировое поколение, полученное из непрерывных / аналоговых методов

Под непрерывным я подразумеваю что-то, что не является плитками, что-то, что является аналогом, например, векторизованная карта. Вы можете использовать любую непрерывную технику для генерации, а затем количественно ее оценить. Например, создайте изображение шума Перлина с высоким разрешением, затем уменьшите его разрешение, чтобы оно соответствовало размеру вашего мозаичного изображения, и сэмплируйте пиксели, чтобы получить карту высот. (Карты высот могут быть отличной отправной точкой для вашего мира.) Это потому, что вы упомянули источники, которые не показали вам, что делать в отношении того, как применять его к плиткам.

Плитное мировое поколение, использующее «тупой» подход к резьбе

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

Поколение мира на основе плитки, используя более широкий взгляд на мир, сверху вниз

Это требует более разумного подхода к построению тайла мира по тайлам, поскольку сначала он будет строиться по регионам. Таким образом, вы получаете контроль над, например. различные биомы, политические регионы и т. д., как это сделал Тарн Адамс в Крепости Гномов. Конечно, это требует от вас немного подумать о том, как бы вы хотели разделить свой мир. Есть много способов, вам придется провести собственное исследование.


Процедурная генерация контента - это довольно широкая тема, поэтому вам нужно хорошо почитать, прежде чем получить четкое представление о том, что вы на самом деле хотите и как это сделать - дьявол всегда в деталях . По этой причине некоторыми хорошими источниками для этого являются список рассылки rec.games.roguelike.development (тонна информации о процедурных мирах на основе тайлов), страницы программирования игр AmitP (см. «Другие темы») и, наконец, что не менее важно , Процедурный Content Generation Wiki .

инженер
источник
Ни один из этих методов не принимает во внимание игровое назначение карты. Любой из этих методов может генерировать ужасные игровые карты. Конечно, ОП не сказал, как будет выглядеть хорошая карта, так что ...
Никол Болас,
6
@NicolBolas Точно. ОП нужно что-то продолжать. Мне не нужно писать полное эссе для каждого ответа (хотя факты показывают, что я делаю это достаточно часто).
инженер
Согласен, "играбелен" - это эвристический вариант, оставленный для ОП. «Воспроизводимый» - это один слой над фактическим поколением «случайного мира», и он не требуется для исходного вопроса.
Патрик Хьюз
6

Процедурное поколение - огромная тема. Как глубоко вы готовы пойти?

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

Шум Перлина предлагает отличный способ создать сглаженную случайность и отлично подходит для всех видов местности. Имитация эрозии может дать реалистичное представление о высоте (хотя вам это может и не понадобиться, поскольку вы играете на плитке)

Многие методы, обсуждаемые в статьях, подобных этой, созданной Oddlabs , создателем Tribal Trouble, хорошо работают в 2D и при низких разрешениях. Если вам больше нравится такой подход, изучение этих методов может стоить вашего времени.

Centigonal
источник