Динамический нарратив в Pendragon — как устроено повествование, учитывающее контекст игровой ситуации

В этой игре персонажи не будут повторять фразу про стрелу в колене.

Нарративный директор студии inkle Джон Ингольд на сайте Gamasutra опубликовал текст о создании динамической системы повествования в тактической игре Pendragon. Разработчик рассказал о нескольких уровнях нарратива, который учитывает контекст локаций, отношений между героями и общей сюжетной линии.

В предыдущей игре inkle, Heaven's Vault, нарратив отличался от прохождения к прохождению — в его основе лежала динамическая диалоговая система, которая учитывала контекст ситуации. В Pendragon разработчики решили развить эту идею — они привязали её к процедурно-сгенерированной игре, напоминающей шахматы.

Диалоговая система Heaven’s Vault состоит из огромного количества коротких бесед, которые появляются в зависимости от контекста — система сперва подбирает релевантные реплики, соответствующие ситуации, а затем выбирает один из вариантов.

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

Динамический нарратив в Pendragon — как устроено повествование, учитывающее контекст игровой ситуации

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

Первый этаж: реакция на состояние игры

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

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

  • play ( HEROES, ATTACK) — герой атакует кого-то;
  • play ( HEROES, (ATTACK, EXCHANGE) ) — нервный герой атакует кого-то, но его вот-вот захватят в плен;
  • play_not ( (NERVOUS, HEROES), ( ATTACK, EXCHANGE), LAST_PIECE) — нервный герой атакует кого-то, его вот-вот захватят в плен, но он не последний в команде героев.

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

Динамический нарратив в Pendragon — как устроено повествование, учитывающее контекст игровой ситуации

Надстройка: зависимость от окружения

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

  • play(HEROES, ATTACK) && is(victim(), BEAR) — рыцарь продвигается вперёд, убивая медведя;
  • play(WOLF, RETREAT) && isLocation(FOREST) — волк отступает, прячась за деревьями.

Вместе эти два слоя создают вариативные ситуации.

  • Ход 1. Ланс идёт вперёд. Ланс: «Между деревьями волк. Я не думаю, что он меня видел».
  • Ход 2. Волк двигается вперёд. Волк: «Грррр...».
  • Ход 3. Ланс занимает позицию и достаёт меч. Ланс: «Спокойно. Следите за его взглядом…».
  • Ход 4. Волк обездвиживает Ланса. Волк прыгает, и Ланселот падает на землю. Гвиневра: «Ланселот! Нет!».

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

Динамический нарратив в Pendragon — как устроено повествование, учитывающее контекст игровой ситуации

Второй этаж: что сейчас произошло?

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

  • Ход 1. Ланс идёт вперёд. Ланс: «Между деревьями волк. Я не думаю, что он меня видел».
  • Ход 2. Волк двигается вперёд. Волк: «Грррр...». Гвиневра: «Я думаю, что он видел тебя, Ланселот».
  • Ход 3. Ланс занимает позицию и достаёт меч. Ланс: «Я не боюсь…».
  • Ход 4. Волк обездвиживает Ланса. Волк прыгает, и Ланселот падает на землю. Гвиневра: «Ланселот! Нет! Может ты и храбрый, но почему ты такой глупый?».

По словам Ингольда, этот уровень повествования отвечает на вопрос: «Что я только что сказал?». При этом систему можно назвать универсальной, так как она работает в большинстве ситуаций и не требует чётко прописанного сценария. Разработчик добавил, что описанный пример может появиться в одном прохождении из 100, поэтому не стоит беспокоиться о повторении вариантов.

Третий этаж: динамические отношения

Следующий уровень связан с динамическим сюжетом и отношениями героев. Тип отношений имеет большое значение, но при этом он может меняться со временем. Например, в начале игры Гвиневра любит Артура и Ланселота, а Артур и Ланселот любят Гвиневру. Эти отношения превращаются в «ярлыки» — Гвиневра в состоянии «конфликта», у Артура «предательство», Ланселот «обесчещен». И все несчастливы.

Динамический нарратив в Pendragon — как устроено повествование, учитывающее контекст игровой ситуации

Игра использует эти теги для реагирования на события. Например:

  • безответно влюблённый персонаж спасает объект своей привязанности, за что получает неловкую благодарность;
  • гадкий персонаж, которому изменили, обрекает свою возлюбленную на верную смерть;
  • нервный и конфликтующий персонаж не может выбрать, кому помочь.

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

Остальная часть здания: генерация сюжета

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

Динамический нарратив в Pendragon — как устроено повествование, учитывающее контекст игровой ситуации

Разработчик признался, что впервые студия столкнулась с этим при создании боевой системы Sorcery!. Для решения проблемы команда добавила элемент «tells» — фраза оппонента, на основе которой можно было выстроить предположение о его следующих действиях. Тем не менее многие игроки всё равно не читали текст, из-за чего назвали бой «слишком рандомным».

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

Этажи с первого по двухсотый: сцены

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

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

Динамический нарратив в Pendragon — как устроено повествование, учитывающее контекст игровой ситуации

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

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

7171
6 комментариев

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

18
Ответить

Эй, кончай рушить стереотипы о комментаторах DTF

9
Ответить

Можно дополнить, что в жизнь этот механизм реализует их текстовый движок Ink - удобный редактор для написания диалогов/текстовых квестов с акцентом на state трекинг и вариативность + хорошая интеграция в юнити . Он есть в бесплатном доступе на гитхаб.

3
Ответить