Создание разветвлённой диалоговой системы. Часть 3: Создание диалогового дерева

Создание разветвлённой диалоговой системы. Часть 3: Создание диалогового дерева.

Автор: | Тип статьи: Перевод | Переводчик: Никита Осколков | Редактор: m00n1ight | Размещение: m00n1ight, 13:32 (обновлено: 2024-11-10 14:42) | Слов: 1590 | Время чтения: 0 ч 6 м | Аудитория: Разработчики | Уровень читателя: Начинающий | Просмотры: 9881

Александр Фрид — вольнонаёмный писатель, почти десять лет работающий над сценариями игр. Начал карьеру в этом направлении в BioWare, где был главным сценаристом Star Wars: The Old Republic и Shadow Realms, затем ушёл из компании и занялся свободным творчеством. В настоящее время работает сценаристом как для инди-игр, так и для игр AAA-класса. Рисует комиксы и пишет прозу.

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

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

Инструменты для редактирования

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

Инструментарий Dragon Age: Origins.
inklewriter.
Chat Mapper.
Примеры инструментов Dragon Age: Origins, inklewriter и Chat Mapper.

Для экспериментов и обучения лучше всего подходят бесплатные инструменты, входящие в состав Dragon Age: Origins, Neverwinter Nights и Neverwinter Nights 2. Условия лицензии, конечно, не позволяют использовать их в коммерческих целях. Слышал, что Shadowrun Returns также поставляется с похожим редактором диалогов, и у всех перечисленных инструментов немало общего. Программа inklewriter от Inkle Studios предоставляет коммерческую лицензию — её использовали для создания The Banner Saga от студии Stoic, хотя она рассчитана на более богатые текстом игры, построенные вокруг диалогов. Urban Brain Studios выпускает Chat Mapper — ещё один набор инструментов с коммерческой лицензией (сам я его не пробовал, а потому не могу оценить его достоинства и недостатки).

Без сомнения, существуют и другие общедоступные инструменты с коммерческой лицензией (разумеется, всегда можно написать свой). Я приведу примеры из патентованного редактора от Рика Бёртона из Knight Mayor.

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

  • Разветвление диалога. Не самое оригинальное и удивительное требование. Редактор должен поддерживать создание фраз персонажей и вариантов ответов игрока. Необходимо, чтобы различные фразы игрока вели к разным ответам персонажа. В идеале, с помощью редактора можно устанавливать переменные факторы и создавать диалоговое дерево на основе этих факторов, показывая различные варианты фраз игрока и персонажа в зависимости от установленных (или не установленных) для игрока переменных факторов.
  • Создание ссылок. Редактор должен уметь «связывать» фразы между собой (подобно символической ссылке в UNIX-подобной файловой системе или ярлыку в Windows). Так вы позволите игроку использовать одинаковые варианты ответов или целые диалоговые ветви в нескольких ситуациях, не переписывая их заново. Качественная система ссылок между фразами (как мы обсудим ниже) крайне важна для аккуратного, легко редактируемого диалога.
  • Визуальное представление и навигация. В редакторе должна быть функция отображения структуры диалога целиком. Очень сложно создавать диалоговое дерево, просматривая его построчно. Для поддержания хорошей структуры необходимо наблюдать за развитием диалога, его ветвлением и длиной ветвей, а также точками их слияния.

Различные инструменты по-разному представляют структуру диалогового дерева. На моих примерах структура отображается в общем стиле редактора диалогов для Neverwinter Nights — в inklewriter это выглядит иначе и требует перехода в режим просмотра «карты» диалога. У каждого сценариста свои требования к интерфейсу. Тем не менее, несложно адаптировать стиль одного инструмента под другой — основные особенности остаются неизменны.

Критический путь

Теперь мы знаем необходимые функции инструментария, а как применить их на практике?

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

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

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

Основная структура

Итак, у вас есть редактор диалоговой системы, и вы знаете, что хотите написать (в последующих частях мы рассмотрим, как выстраивать логику разговора, сейчас же мы создаём только идеально структурированный диалог без особого смысла). Как должно выглядеть диалоговое дерево?

Примерно так:

Диалог с водопадной структурой.
Диалог с водопадной структурой.

В этом диалоге используется водопадная структура. Узловая структура выглядит похоже, но «зацикливается» в нескольких местах, например, вот так:

Диалог с узловой структурой.
Диалог с узловой структурой.

Разберём эти два диалога по частям.

1. Красные и синие строки. В этом редакторе красные строки обозначают фразы персонажа (его имя показано в квадратных скобках перед текстом), а синие строки — ответы игрока.

2. Запрограммированные фразы игрока. Заметьте: у игрока нет вариантов ответа — для плавности диалога мы заставляем его назвать персонажа по имени (если диалог озвучен, скорее всего, такая фраза воспроизведётся автоматически, а не всплывёт на экране, как единственный вариант ответа).

3. Сдвоенные ответы персонажа. После фразы персонажа игрока «Стэн?» идут два ответа неигрового персонажа. Это диалоговая ветвь, но она не основана на ответе игрока.

Зачем она? В этом примере персонаж игрока может быть «Филиппом» или «Элизабет» (выбор при создании персонажа). Эти строки должны быть подкреплены сценарием, проверяющим переменный фактор — «игрок — Филипп?» Если ответ «да» — воспроизводится первый вариант, если «нет» — персонаж перескакивает к следующему варианту (подразумевающему, что игрок выбрал роль Элизабет).

Даже для проверки простейшего переменного фактора необходимо всё выстроить логично! Сценаристу диалогов не нужны навыки программиста, но хорошая логика не повредит.

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

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

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

6. Ответы игрока. Первый набор ответов игрока на фразу «Теперь я точно хочу узнать...». Поскотльку мы рассчитываем на озвучение и кинематографическое оформление диалога, в этом примере используются сокращения (указаны в круглых скобках).

7. Дополнительные запрограммированные фразы. Для реалистичного обмена репликами необходимо несколько запрограммированных фраз игрока. Представьте, как выглядел бы диалог, если бы мы останавливали игру для выбора варианта ответа после каждой реплики персонажа. Разумеется, придётся пожертвовать контролем над персонажем.

8. Слияние диалоговых ветвей. После обмена репликами мы снова ставим диалоговую ветвь со ссылкой. Можно продлить эту диалоговую ветвь ещё одним набором ответов игрока, но помните, что каждая ветвь является второстепенной частью основного диалога. Всегда обдумывайте, стоит ли выстраивать длинную диалоговую ветвь — растрачиваемое вами (и вашими коллегами) время на обработку не столь важной ветви диалога можно использовать для улучшения и полировки критического пути.

Star Control 2.
(1. Кто из вас Фот? 2. Мы — «Путешественник», флагман Нового Альянса Свободных Звёзд с Земли. Каковы ваши намерения? 3. МОЛЧАТЬ, БОЛТЛИВЫЕ ПАРАЗИТЫ! Мы ваши новые хозяева!).
Определённые диалоговые ветви, несомненно, приведут к катастрофе, но приятно осознавать, что их можно выбрать (из Star Control 2).

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

Определение подходящего места для ветвления диалогового дерева — одна из основных сложностей составления интерактивных диалогов. Мы ещё рассмотрим эту тему в следующих частях.

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

10. Видеовставка. Визуальное отображение зависит от используемого редактора и движка игры. Я отметил её только для удобства чтения (невидимые для конечного пользователя строки очень удобны для обмена комментариями и заметками между разработчиками).

11. Конец диалога. После убийства персонажа разговор продолжать не с кем. Предположительно, скрытые ветви от второго набора ответов игрока ведут к иному исходу диалога.

12. Узловой диалог. Второй разговор построен иначе, с использованием узловой структуры. Каждая фраза игрока (кроме последней, заканчивающей диалог) возвращает к одному и тому же набору ответов, за исключением уже использованных.

Также стоит отметить, что в этом диалоге нет сокращений — узловые структуры выглядят более искусственно по сравнению с водопадными, поэтому, в этом случае, я рассчитываю на игру без озвучения (что значительно уменьшает пользу сокращений).

В следующей главе

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

Оригинальная статья: Gamasutra.

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

Поиск по сайту

Категории материалов

Сообщения на форуме | новые

Бордель услаждения интеллектуальных страстей на форуме Оффтопик - Разное.
Последнее сообщение оставил m00n1ight (2024-11-22 в 13:02). Ответов: 9141.
Colony Ship RPG на форуме Colony Ship RPG.
Последнее сообщение оставил Хоттабыч (2024-11-22 в 10:53). Ответов: 957.
Fallout: New Vegas на форуме Fallout: New Vegas.
Последнее сообщение оставил Чума (2024-11-22 в 04:40). Ответов: 484.
[В разработке] Avowed на форуме Avowed.
Последнее сообщение оставил m00n1ight (2024-11-22 в 00:54). Ответов: 78.
Ещё две студии от выходцев из ZA/UM на форуме [Архив] Новостной форум | Инди.
Последнее сообщение оставил Бобёр (2024-11-21 в 20:18). Ответов: 7.
[В разработке] Flint: The Treasure of Oblivion на форуме Тактические и стратегические.
Последнее сообщение оставил Хоттабыч (2024-11-21 в 17:33). Ответов: 17.
Expeditions: Rome на форуме Всё остальное | Инди.
Последнее сообщение оставил Хоттабыч (2024-11-21 в 14:11). Ответов: 108.
[В разработке] Urban Strife на форуме Всё остальное | Инди.
Последнее сообщение оставил m00n1ight (2024-11-21 в 13:21). Ответов: 49.
Возвращение во Врата Балдура на форуме Baldur’s Gate.
Последнее сообщение оставил FromLeftShoulder (2024-11-20 в 18:10). Ответов: 14.
[В разработке] Blades for Hire на форуме Тактические и стратегические.
Последнее сообщение оставил m00n1ight (2024-11-20 в 12:13). Ответов: 0.

Ожидаемое | таблица

Новости C.O.R.E.

Статьи C.O.R.E.

Новости RPG Codex

Новости RPG Watch

Новости RPG Nuke

Оставьте свой отзыв: QR-код для отзывов в «Яндексе».