От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

Наглядный пример использования диаграммы Вороного.

Йорис Дорманс в блоге студии Ludomotion рассказал, как в Unexplored 2: The Wayfarer's Legacy происходит превращение грубых уровней, сгенерированных на основе тайлов, в приятные и естественные локации. Мы выбрали из текста главное.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

Карты создаются с использованием обозначений разных типов тайлов (в данном примере это трава или земля) и различных декораций.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

В этом случае есть несколько кустов (большие зелёные круги), скалы (чёрные круги), растения (маленькие зелёные круги), цветы (белые круги) и декоративные текстуры (серые квадраты). Существуют также специальные тайлы, которые играют важную роль в геймплее, такие как точка появления на уровне, отмеченная символом «s». Кроме того, тайлы могут быть помечены дополнительной информацией о высоте или особом подтипе.

Карты тайлов — это удобная структура данных для работы с генераторами, но такой подход может привести к тому, что стыки тайлов будут бросаться в глаза во время прохождения. Тем не менее в Unexplored 2 они выглядят вполне естественно.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

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

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

Для Unexplored 2 разработчики используют разные типы распределения начальных точек, но всегда одна точка — это один тайл. Благодаря этому каждый тайл можно сопоставить с определённой ячейкой на диаграмме Вороного. Если разместить начальные точки в середине каждой ячейки, получится ровная сетка, которая выглядит точно так же, как карта тайлов.

На этом этапе генерации уровня окружение  выглядит так
На этом этапе генерации уровня окружение выглядит так
А так выглядит уровень, у которого половина тайлов отрендерена жёлтым цветом. Это позволяет наглядно увидеть структуру локации 
А так выглядит уровень, у которого половина тайлов отрендерена жёлтым цветом. Это позволяет наглядно увидеть структуру локации 

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

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья
От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

Такой вариант уже выглядит лучше, но это всё ещё не похоже на плавные и приятные линии. Чтобы добиться лучшего результата, нужно провести технику «relaxing» — стандартный способ изменения диаграммы Вороного. Но даже с использованием такого метода, результат будет получаться несколько беспорядочным.

Чтобы справиться с этим, нужно сделать так, чтобы точки перемещались по какой-то системе, а не просто случайно. Разные типы перемещения дают разные эффекты. Например, использование Шума Перлина может создавать интересные тайлмапы с естественными формами. Или можно превратить всё это в шестиугольные тайлы, переместив каждый второй ряд начальных точек влево.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья
От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

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

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

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

Игра использует эту информацию для смещения начальных точек диаграммы Вороного — каждый закруглённый угол смещает местоположение начальной точки. Кроме того, он также сдвигает начальные точки своих четырёх соседних ячеек. Всё это — кумулятивный процесс: начальные точки могут быть сдвинуты несколько раз, если они находятся рядом с несколькими углами.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

Однако после обработки всего смещения начальные точки немного рандомизируются (около 10% от ширины тайла в любом направлении), а окончательное смещение ограничено 40% ширины тайла.

На этом этапе уровень уже выглядит отлично. Но есть ещё несколько действий, которые нужно сделать.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья
От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

В целом форма окружения выглядит хорошо, но края всё ещё очень прямые и немного беспорядочные. Чтобы исправить это, достаточно наложить curved-ассеты по краям каждого типа поверхности. Однако реальная хитрость заключается в том, что одна кривая часто накрывает оба края и использует их углы для определения собственного направления.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья
От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

Далее применяются 3D-ассеты, чтобы добавить скалам дополнительную текстуру.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

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

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

В игре применяются и другие способы смещения точек. Например, рядом с искусственными сооружениями важно добиться того, чтобы края были более прямыми.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья

Разработчики могут легко достичь этого эффекта — достаточно просто ввести другое правило смещения, которое гарантирует, что тайлы с искусственными конструкциями не смещаются. Генератор использует меньшие квадраты, чтобы пометить эти тайлы, поэтому с ними ничего не происходит.

От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья
От грубых форм к естественной среде: создание уровней в Unexplored 2 — часть третья
7070
3 комментария

Выглядит круто, но - справедливости ради - вот такие моменты довольно неестественны

4
Ответить

Нужно добавить ещё один слой обработки

Ответить

Комментарий недоступен

1
Ответить