Процедурная генерация карты в Covenanted
Привет, на связи Coscom art group. Мы продолжаем развивать проект, о котором писали ранее. Сегодня расскажем о том, как процедурно генерируемая карта в нашей игре отвечает за rogue-like механики.
Механика карты в играх с rogue-like элементами — это основной инструмент, с помощью которого генерируются условия под каждый забег. Опытные игроки знают правила генерации и выбирают свой путь более оптимально. Комната с боссом уровня, как правило, самая удаленная от старта игрока. Даже расположение тайных комнат опытный игрок узнает без подсказок.
В нашем проекте мы столкнулись с рядом трудностей с процедурной генерацией. Мы хотели, чтобы карта выглядела так, будто была вручную отрисована под каждый забег. Вот как она выглядела в прототипе.
Вводные такие: каждый уровень игры — это отдельная карта. На карте генерируются биомы, в биомах локации. Под каждый биом пул локаций уникальный. В рамках каждой локации существуют варианты наполнения — некоторые локации с большей вероятностью предложат игроку сразиться с монстром, другие чаще содержат в себе мирные события или торговца. Вероятность наткнуться на противника при посещении, примеру, рынка. должна быть довольно низкая, но и такие шансы нужно вводить в игру, если мы хотим достигнуть высокого уровня реиграбельности.
При всем при этом в нашей концепции главная героиню игры преследует инквизиция. На карте это преследование отображается в виде портрета протагониста, блокирующего локацию. Каждый ход ведьмы инквизиция в биоме блокирует все больше локаций. Встреча с инквизицией сулит героине битву, за которую она не получит наград. Таким образом игрок постоянно находится в дилемме: отправиться в следующий биом или рискнуть своим HP и задержаться подольше на этапе исследования биома, локации в котором заняты инквизицией.
Учтя все вводные, мы перешли к работе над картой. Перебрав несколько вариантов программной генерации мы решили, что нарисуем несколько шаблонов карты, расставим заранее на ней точки генерации локаций, а наполнение и тип этих локаций оставим за кодом. Так мы рассчитываем избежать корявой генерации по секторам или гексам — место для каждого спрайта локации заранее определено. Вот как это выглядит в движке.
Каждый шаблон может быть отражен вертикально, горизонтально, или обоими способами. Выходит что нарисовав один шаблон мы получаем четыре варианта генерации. Таким образом, карта каждый раз выглядит по-новому.
Локации в соседних биомах, куда ведьма перемещается накопив достаточно маны на заклинание, на карте скрыты облаками. Это сделано для того, чтобы игрок не знал ничего о наполнении биома до того момента, как переместился туда. Прогресс инквизиции сохраняется в каждом биоме, то есть если ведьма решит вернуться в биом в котором уже была — движение инквизиции там начнется с того хода, на котором остановилось.
Игра Covenanted в steam сейчас доступна для добавления в wish-list. Какие интересные механики работы с картой в играх вы помните?