- PVSM.RU - https://www.pvsm.ru -

Циклическая генерация подземелий на примере Unexplored

image

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

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

В dungeon crawler'е Unexplored [1] использован фундаментально иной подход (см. рисунок 1). Вместо линейных путей в качестве самой базовой структуры он изначально использует циклы. Разница оказывается поразительной: при старом подходе хорошие и интересные циклы могли возникать случайно, а в Unexplored [1] они являются запланированной особенностью результата работы генератора.

https://i1.wp.com/ctrl500.com/wp-content/uploads/2016/07/basic-cyclic-explantion.png

Рисунок 1 — циклы против деревьев.

Как же это работает? Когда Unexplored [1] начинает генерировать подземелье, она стартует с произвольной начальной точки на карте. Но вместо создания ветви к целевой точке она создаёт цикл, состоящий из двух путей, соединяющих вход и конечную точку. Такие циклы гораздо лучше подходят к стандартным паттернам дизайна уровней, чем линейные пути.

Каждый цикл имеет путь A, ведущий от входа к конечной точки, и путь B, ведущий назад. В зависимости от абсолютной и относительной длины путей A и B можно превращать каждый цикл в паттерн дизайна (см. Рисунок 2). Например, когда A короткий, а B длинный, можно разместить в конечной точке цикла закрытую дверь, а ключ расположить в конце B, прямо перед тем, как можно будет вернуться к основному пути. Так будет создан уровень, где игрок сначала видит запертую дверь, а когда он находит подходящий ключ, то ему не нужно идти далеко, чтобы найти открываемую им дверь. Очевидно, что для этого требуется, чтобы игрок не мог достичь B прямо из входа в цикл, хотя может оказаться интересно, если он сможет сразу видеть B и ключ.

Ещё один пример, хорошо работающий с длинным A и коротким B — можно поместить между входом и B потайную дверь, создавая скрытый срез. Или B может просто быть более рискованным маршрутом, чем A, потому что на нём находится опасный враг или комната со множеством ловушек. Существует множество возможностей, на рисунке 2 показаны некоторые из них.

Циклическая генерация подземелий на примере Unexplored - 3

Рисунок 2 — примеры паттернов циклического дизайна.

Результаты оказываются потрясающими. На рисунке 3 показан уровень, сгенерированный игрой Unexplored [1]. Он состоит из большого цикла «замок-ключ» с циклом, заполненным большой пропастью. Чтобы добавить немного интересности, добавлен небольшой цикл гамбита. Конструкция проста, но эффективна. На самом деле, мы осознали, что для большинства уровней часто достаточно всего пары циклов; уже при паре циклов уровни приобретают уникальную структуру и характер.

https://i1.wp.com/ctrl500.com/wp-content/uploads/2016/07/the-ring-level.png

Рисунок 3 — прохождение уровня.

Благодарности: идея циклического создания подземелий возникла во время исследовательского воркшопа в канадском Banff Center [2]. Я не могу присвоить себе авторство этой идеи, поэтому делюсь этой честью со всеми, кто был в нашей рабочей группе.

Автор: PatientZero

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka-igr/331412

Ссылки в тексте:

[1] Unexplored: https://store.steampowered.com/app/506870/

[2] Banff Center: https://www.banffcentre.ca/visual-and-digital-arts

[3] Источник: https://habr.com/ru/post/468957/?utm_source=habrahabr&utm_medium=rss&utm_campaign=468957