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

в 9:15, , рубрики: dungeon crawlers, roguelike, Дизайн игр, процедурная генерация, процедурная генерация уровней, разработка игр, рогалики
image

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: PatientZero

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js