Процедурная генерация в гейм-дизайне [1 ed.] 9785970608609, 9781491954461

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

6,289 225 27MB

Russian Pages 344 Year 2020

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Процедурная генерация в гейм-дизайне [1 ed.]
 9785970608609, 9781491954461

  • Commentary
  • Vector PDF

Table of contents :
Титульный лист
Предисловие от издательства
Вступительное слово от дирекции образовательных программ по игровой индустрии Высшей школы бизнес-информатики НИУ ВШЭ
Вступление
О редакторах
Составители
Часть I. Введение
Глава 1. Начало работы с генераторами
Создание вашего «художника в коробке»
От правил к методам генерирования
Как могут сбоить генераторы
Глава 2. Не усложняйте процедурную генерацию
Два примера из Spelunky
Восприятие vs реальность
Использование контекста для перехода от тривиальной работы к впечатляющей
Проблема может быть не в процедурной генерации
Заключение
Глава 3. Генерация от души
Глава 4. Адаптация контента к выбору игрока
Выбор деталей для адаптации
Комбинирование битов
Создание правильных битов
Склеивание швов
Контроль над специфичностью
Принципиально новый способ создания контента
Широкая картина
Глава 5. Этика процедурной генерации
Разговор в коде
Выход в необъятный мир
Что проглотил, то и выдал
Не просто слова
Наши перспективы
Часть II. Структура и системы
Глава 6. Ретроспектива: Murder on the Zinderneuf (1983)
Глава 7. Создание повествовательного импульса
Вперед и только вперед
Открытие потока
Дизайн языка Ink
Структура плетения
Контент как условные обозначения
Последовательности и петли
Повествовательный импульс в графическом контексте
Знание как направленный ациклический граф
«Паутина знаний»
Использование модели знаний
Заключение
Глава 8. Управляющий нарратив в Duskers
Исследуйте, адаптируйтесь, выживайте
Когда в твоем распоряжении только молоток
Порядок имеет значение
Предоставьте инициативу игроку
Повествование как приманка
Компилируя все подряд
Глава 9. Впечатляющий текст: смешение статического и процедурного контента
Southern Monsters
Battlecakes
Игровой текст
The Domovoi
Memory Blocks
Matul Remrit
Перспективы
Глава 10. Драматический гейм-плей в The Sims
Примеры дизайна в The Sims
Драматические приемы в играх других жанров
Глава 11. Памятные истории о простых правилах: The Curious Expedition
Три уровня абстракции
Одно событие – разные интерпретации
Яблоки в NetHack
Сюжетная арка
Глава 12. Дизайнерские темы и эмоции в игре
Triple Town: эмоции завоевателя
Настройка темы
Использование тем для усиления эмоций
Triple Town как провальный эксперимент
Проблемы коммуникации
Недочеты в плане этики
Заключительные соображения
Продолжаем разговор
Глава 13. Эмерджентное повествование в Dwarf Fortress
Проектирование событийного нарратива
Перспектива и видение игрока
Глава 14. Авторское динамическое повествование в The Church in the Darkness
Мотивация
Вдохновение
Основная система
Выбор игрока
Вывод: зачем все это строить?
Часть III. Миры и контекст
Глава 15. Генерация историй
Сущности и события
Субъективизм в истории
Генерация истории в Caves of Qud
Заключение
Глава 16. Процедурные описания планет в Voyageur
Обстановка
Инструмент Improv
Фильтрация, реинкорпорация и источники истины
Откуда берутся модели мира
Заключение
Глава 17. Генерация в реальном мире
Как аналоговые работы используют процедурность?
Зачем привносить цифровизацию в реальный мир?
Эксперимент
Пример: Computational Flâneur
А почему бы не работать просто с «цифрой»?
Глава 18. «Грязное» процедурное повествование в We Happy Few
У тебя есть суперсила!
Интеллектуальная работа создает эмоциональную вовлеченность
Тяни vs толкай
Опасности «грязного» повествования
Святой Грааль
Глава 19. Frostpunk: не только забава
Осмысление окружающего мира
Разработка Frostpunk
Прототип 1: общество
Прототип 2: Пророк
Прототип 3: вовлеченность игрока
Выход на финишную прямую
Глава 20. Процедурное повествование в Dungeons & Dragons
Действия
Опасности
Ошибки, движущие игру вперед
Часть IV. Персонажи
Глава 21. Сила обаяния сгенерированных персонажей
Совет 1: определите процесс интерпретации игрока
Совет 2: поосторожнее с тонкими штрихами
Совет 3: используйте комическое
Совет 4: обеспечьте возможность анализа
Совет 5: реакции ≥ действия
Совет 6: изменение – мощное средство
Заключение
Глава 22. Процедурные персонажи в State of Decay 2
Посредственность
Противоречия
Последовательность выбора
Исправленная последовательность выбора
Заключение
Глава 23. Генераторы сюжета
Глава 24. Генерация персонажей в The Shrouded Isle
Генерация персонажей
Взаимодействие
Модификация характеристик
Заключение
Глава 25. Диалог
Вариант использования
Контекстно-зависимое озвучивание
Автоматические триггеры
Память
Остроумие
Сложные ответы
Контекст, управляемый данными
Удобство
Структуры данных и их реализация
Авторский инструмент
Заключение
Часть V. Ресурсы
Глава 26. Таро как процедурное повествование
Глава 27. Что можно делать с твиттер-ботами
Глава 28. Создание инструментов процедурного сторителлинга
Что могут сделать авторские инструменты для процедурного повествования?
О чем нужно думать при планировании нового инструмента
Пока вы строите

Citation preview

Процедурная генерация в гейм-дизайне

Procedural Storytelling in Game Design

Edited by Tanya X. Short Tarn Adams

Процедурная генерация в гейм-дизайне

Под редакцией Тани X. Шорт и Тарна Адамса

Москва, 2020

УДК 681.3.07 ББК 32.973.26–018.2.75 А19

А19

Под редакцией Тани X. Шорт и Тарна Адамса Процедурная генерация в гейм-дизайне / пер. с англ. М.  С.  Рыжиковой. – М.: ДМК Пресс, 2020. – 344 с.: ил. ISBN 978-5-97060-860-9 Книга представляет собой сборник статей, посвященных приемам процедурного повествования в играх и не только. Процедурная генерация – не новое, но пока еще малоизученное явление, и каждый проект преподносит свои вызовы. Подчас разработчикам сложно оценить, какую часть игры лучше написать вручную, а какую доверить процедурному генератору. Авторы материалов, вошедших в сборник, расскажут о том, как оформить сложное нелинейное повествование в игре, как продумать интересных персонажей, диалоги и описания, которые будут генерироваться произвольно или в зависимости от действий игрока, и как средствами компьютерных технологий донести до игроков непростые философские и этические идеи. Помимо игр методы процедурной генерации рассматриваются на примере настройки твиттер-ботов, гадания на картах таро и даже некомпьютерных видов активности наподобие интерактивных прогулок. Издание адресовано разработчикам компьютерных игр и приложений, предназначенных для широкого круга пользователей. УДК 681.3.07 ББК 32.973.26–018.2.75

Original English language edition published by CRC Press is an imprint of Taylor & Francis Group. Copyright © 2019 by Taylor & Francis Group, LLC. All rights reserved. Russian-language edition copyright © 2020 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

ISBN 978-1-49195-446-1 (англ.) ISBN 978-5-97060-860-9 (рус.)

© 2019 by Taylor & Francis Group, LLC. © Оформление, перевод на русский язык, издание, ДМК Пресс, 2020

Оглавление Предисловие от издательства ................................................................................... 10 Вступительное слово от дирекции образовательных программ по игровой индустрии Высшей школы бизнес-информатики НИУ ВШЭ................................. 11 Вступление .................................................................................................................... 12 О редакторах ................................................................................................................ 15 Составители................................................................................................................... 16

Часть I. Введение ....................................................................................................... 17 Глава 1. Начало работы с генераторами .................................................................. 18 Д-р Кейт Комптон Создание вашего «художника в коробке» ......................................................................... 19 От правил к методам генерирования ................................................................................ 20 Как могут сбоить генераторы ............................................................................................. 28

Глава 2. Не усложняйте процедурную генерацию ................................................. 31 Дариус Каземи Два примера из Spelunky .................................................................................................... 32 Восприятие vs реальность .................................................................................................. 33 Использование контекста для перехода от тривиальной работы к впечатляющей ....... 34 Проблема может быть не в процедурной генерации ....................................................... 35 Заключение.......................................................................................................................... 35

Глава 3. Генерация от души ........................................................................................ 37 Джилл Мюррей

Глава 4. Адаптация контента к выбору игрока........................................................ 48 Юрие Хорнеман ..............................................................................................................................................48 Выбор деталей для адаптации ........................................................................................... 49 Комбинирование битов ...................................................................................................... 53 Создание правильных битов .............................................................................................. 54 Склеивание швов ................................................................................................................ 55 Контроль над специфичностью ......................................................................................... 56 Принципиально новый способ создания контента .......................................................... 56 Широкая картина ................................................................................................................ 58

Глава 5. Этика процедурной генерации ................................................................... 59 Д-р Майкл Кук Разговор в коде .................................................................................................................... 59 Выход в необъятный мир ................................................................................................... 62 Что проглотил, то и выдал .................................................................................................. 65

6

 Оглавление Не просто слова ................................................................................................................... 67 Наши перспективы ............................................................................................................. 70

Часть II. Структура и системы ..................................................................................... 71 Глава 6. Ретроспектива: Murder on the Zinderneuf (1983) .................................... 72 Джимми Мейер

Глава 7. Создание повествовательного импульса ................................................... 80 Джон Ингольд Вперед и только вперед ...................................................................................................... 81 Открытие потока ................................................................................................................. 82 Дизайн языка Ink ................................................................................................................ 84 Структура плетения ............................................................................................................ 84 Контент как условные обозначения .................................................................................. 85 Последовательности и петли .............................................................................................. 86 Повествовательный импульс в графическом контексте .................................................. 87 Знание как направленный ациклический граф ................................................................ 88 «Паутина знаний» ............................................................................................................... 90 Использование модели знаний .......................................................................................... 91 Заключение.......................................................................................................................... 93

Глава 8. Управляющий нарратив в Duskers ............................................................. 94 Тим Кинан и Бенджамин Хилл Исследуйте, адаптируйтесь, выживайте ............................................................................ 94 Когда в твоем распоряжении только молоток................................................................... 95 Порядок имеет значение .................................................................................................... 95 Предоставьте инициативу игроку...................................................................................... 99 Повествование как приманка .......................................................................................... 101 Компилируя все подряд .................................................................................................... 103

Глава 9. Впечатляющий текст: смешение статического и процедурного контента....................................................................................................................... 104 Кевин Сноу Southern Monsters.............................................................................................................. 104 Battlecakes .......................................................................................................................... 106 Игровой текст .................................................................................................................... 107 The Domovoi ....................................................................................................................... 109 Memory Blocks.................................................................................................................... 109 Matul Remrit ....................................................................................................................... 110 Перспективы...................................................................................................................... 111

Глава 10. Драматический гейм-плей в The Sims .................................................. 112 Даниэль Клайн Примеры дизайна в The Sims ........................................................................................... 114 Драматические приемы в играх других жанров ............................................................. 123

Оглавление  7 Глава 11. Памятные истории о простых правилах: The Curious Expedition..... 125 Риад Джемили Три уровня абстракции..................................................................................................... 126 Одно событие – разные интерпретации ......................................................................... 129 Яблоки в NetHack............................................................................................................... 129 Сюжетная арка .................................................................................................................. 130

Глава 12. Дизайнерские темы и эмоции в игре .................................................... 132 Даниэль Кук Triple Town: эмоции завоевателя ..................................................................................... 132 Настройка темы................................................................................................................. 135 Использование тем для усиления эмоций ...................................................................... 136 Triple Town как провальный эксперимент ...................................................................... 138 Проблемы коммуникации ................................................................................................ 139 Недочеты в плане этики ................................................................................................... 140 Заключительные соображения......................................................................................... 141 Продолжаем разговор ....................................................................................................... 142

Глава 13. Эмерджентное повествование в Dwarf Fortress.................................. 144 Тарн Адамс Проектирование эмерджентного нарратива .................................................................. 144 Перспектива и видение игрока ........................................................................................ 149

Глава 14. Авторское динамическое повествование в The Church in the Darkness .................................................................................... 153 Ричард Раус III Мотивация ......................................................................................................................... 154 Вдохновение ...................................................................................................................... 155 Основная система ............................................................................................................. 159 Выбор игрока ..................................................................................................................... 164 Вывод: зачем все это строить? ......................................................................................... 167

Часть III. Миры и контекст ........................................................................................ 169 Глава 15. Генерация историй .................................................................................... 170 Джейсон Гринблат Сущности и события ......................................................................................................... 170 Субъективизм в истории .................................................................................................. 172 Генерация истории в Caves of Qud ................................................................................... 173 Заключение........................................................................................................................ 182

Глава 16. Процедурные описания планет в Voyageur .......................................... 183 Бруно Диас Обстановка ........................................................................................................................ 184 Инструмент Improv ........................................................................................................... 186 Фильтрация, реинкорпорация и источники истины ...................................................... 189

8

 Оглавление Откуда берутся модели мира ........................................................................................... 191 Заключение........................................................................................................................ 194

Глава 17. Генерация в реальном мире .................................................................... 196 М. Лейзер-Уокер Как аналоговые работы используют процедурность? .................................................... 196 Зачем привносить цифровизацию в реальный мир? ..................................................... 201 Эксперимент...................................................................................................................... 202 Пример: Computational Flâneur ........................................................................................ 205 А почему бы не работать просто с «цифрой»? ................................................................ 210

Глава 18. «Грязное» процедурное повествование в We Happy Few .................. 212 Алекс Эпштейн У тебя есть суперсила!....................................................................................................... 213 Интеллектуальная работа создает эмоциональную вовлеченность ............................. 215 Тяни vs толкай ................................................................................................................... 215 Опасности «грязного» повествования ............................................................................. 221 Святой Грааль .................................................................................................................... 222

Глава 19. Frostpunk: не только забава .................................................................... 225 Марта Фиджек и Якоб Стокальски Осмысление окружающего мира ..................................................................................... 225 Разработка Frostpunk ........................................................................................................ 226 Прототип 1: общество ....................................................................................................... 227 Прототип 2: Пророк .......................................................................................................... 229 Прототип 3: вовлеченность игрока .................................................................................. 232 Выход на финишную прямую .......................................................................................... 236

Глава 20. Процедурное повествование в Dungeons & Dragons......................... 239 Стивен Лампкин Действия ............................................................................................................................ 240 Опасности .......................................................................................................................... 242 Ошибки, движущие игру вперед ...................................................................................... 245

Часть IV. Персонажи ................................................................................................... 250 Глава 21. Сила обаяния сгенерированных персонажей ...................................... 251 Таня Х. Шорт Совет 1: определите процесс интерпретации игрока .................................................... 252 Совет 2: поосторожнее с тонкими штрихами ................................................................. 254 Совет 3: используйте комическое .................................................................................... 257 Совет 4: обеспечьте возможность анализа ...................................................................... 258 Совет 5: реакции ≥ действия ............................................................................................ 258 Совет 6: изменение – мощное средство .......................................................................... 260 Заключение........................................................................................................................ 260

Оглавление  9 Глава 22. Процедурные персонажи в State of Decay 2 ........................................ 262 Джеффри Кард, Йорген Тжерно, Мэтью Бозарт Посредственность ............................................................................................................. 263 Противоречия .................................................................................................................... 264 Последовательность выбора ............................................................................................. 269 Исправленная последовательность выбора .................................................................... 270 Заключение........................................................................................................................ 271

Глава 23. Генераторы сюжета .................................................................................. 272 Адам Зальцман

Глава 24. Генерация персонажей в The Shrouded Isle ......................................... 279 Йонгву Ким Генерация персонажей ..................................................................................................... 280 Взаимодействие ................................................................................................................ 282 Модификация характеристик .......................................................................................... 286 Заключение........................................................................................................................ 289

Глава 25. Диалог ......................................................................................................... 292 Элан Раскин Вариант использования .................................................................................................... 293 Контекстно-зависимое озвучивание ............................................................................... 294 Автоматические триггеры ................................................................................................ 296 Память................................................................................................................................ 297 Остроумие.......................................................................................................................... 299 Сложные ответы ................................................................................................................ 300 Контекст, управляемый данными .................................................................................... 301 Удобство ............................................................................................................................. 301 Структуры данных и их реализация ................................................................................ 303 Авторский инструмент ..................................................................................................... 306 Заключение........................................................................................................................ 308

Часть V. Ресурсы ......................................................................................................... 309 Глава 26. Таро как процедурное повествование .................................................. 310 Кэт Мэннинг

Глава 27. Что можно делать с твиттер-ботами ...................................................... 320 Джордж Бакенгэм

Глава 28. Создание инструментов процедурного сторителлинга ...................... 329 Эмили Шорт Что могут сделать авторские инструменты для процедурного повествования? ......... 329 О чем нужно думать при планировании нового инструмента ...................................... 337 Пока вы строите ................................................................................................................ 338

Предисловие от издательства Отзывы и пожелания Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете об этой книге – что понравилось или, может быть, не понравилось. Отзывы важны для нас, чтобы выпускать книги, которые будут для вас максимально полезны. Вы можете написать отзыв на нашем сайте www.dmkpress.com, зайдя на страницу книги и оставив комментарий в разделе «Отзывы и рецензии». Также можно послать письмо главному редактору по адресу dmkpress@gmail. com; при этом укажите название книги в теме письма. Если вы являетесь экспертом в какой-либо области и заинтересованы в написании новой книги, заполните форму на нашем сайте по адресу http://dmkpress.com/authors/publish_book/ или напишите в издательство по адресу [email protected].

Скачивание исходного кода примеров Скачать файлы с дополнительной информацией для книг издательства «ДМК Пресс» можно на сайте www.dmkpress.com на странице с описанием соответствующей книги.

Список опечаток Хотя мы приняли все возможные меры для того, чтобы обеспечить высокое качество наших текстов, ошибки все равно случаются. Если вы найдете ошибку в одной из наших книг – возможно, ошибку в основном тексте или программном коде, – мы будем очень благодарны, если вы сообщите нам о ней. Сделав это, вы избавите других читателей от недопонимания и поможете нам улучшить последующие издания этой книги. Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите о них главному редактору по адресу [email protected], и мы исправим это в следующих тиражах.

Нарушение авторских прав Пиратство в интернете по-прежнему остается насущной проблемой. Издательства «ДМК Пресс» и CRC Press очень серьезно относятся к вопросам защиты авторских прав и лицензирования. Если вы столкнетесь в интернете с незаконной публикацией какой-либо из наших книг, пожалуйста, пришлите нам ссылку на интернет-ресурс, чтобы мы могли применить санкции. Ссылку на подозрительные материалы можно прислать по адресу электронной почты [email protected]. Мы высоко ценим любую помощь по защите наших авторов, благодаря которой мы можем предоставлять вам качественные материалы.

Вступительное слово от дирекции образовательных программ по игровой индустрии Высшей школы бизнес-информатики НИУ ВШЭ Астрологи объявили месяц процедурной генерации! Признаюсь, я ждал этого момента уже давно. Будучи большим поклонником автоматизации труда и машинных алгоритмов в гейм-дизайне, я был приятно удивлен выходу этой книги. Интересные мысли и тезисы, насыщенные примерами из любимых игр (The Sims, We Happy Few, Dwarf Fortress и др.), дали мне повод задуматься о том, насколько на самом деле глубокую тему поднимают авторы книги. Мне приходилось как самому пользоваться алгоритмами процедурной генерации в левел-дизайне и повествовании историй, так и изучать их работу в других играх. Несомненно, здесь нельзя не вспомнить Diablo c ее подземельями или любую гиперказуальную игру из лидеров рейтинга 2020 года. Важность и практическая востребованность поднимаемой темы для меня очевидны. Процедурное повествование в гейм-дизайне – это неотъемлемая часть современной игровой разработки. Книга представляет собой сборник кейсов, рассказывающих нам о разных задачах и их решении в конкретных играх. Это, несомненно, ее сильная и слабая сторона. Никто не будет отрицать, что все мы жаждем практических кейсов. Однако тема процедурной генерации настолько глубока, настолько не систематизирована, что даже наиболее опытным в этом вопросе специалистам было бы трудно говорить о системном подходе к ее применению и изучению. Думаю, именно по этой причине авторы выбрали такой формат книги. Изучая предложенные материалы, ты понимаешь, что они пытались раскрыть тему с разных сторон, подтолкнуть читателя к дальнейшему погружению в тему, дать ему направления и научить четче формулировать свою задачу. Генерация контента – задача крайне специфичная для конкретной игры. Здесь трудно дать одно универсальное решение, но можно рассмотреть варианты, чтобы расширить кругозор. Несмотря на то что в каждом конкретном проекте читатель сам будет имплементировать знания на практике, книгу нельзя считать исключительно познавательным сборником историй. Блок-схемы, алгоритмы, фрагменты кода и формулы дадут точку отсчета в этом изменчивом и завораживающе динамичном мире процедурной генерации контента. Константин Сахнов, Научный руководитель программы «Менеджмент игровых проектов» в ВШБИ НИУ ВШЭ, совладелец издательства Justforward

Вступление Надеюсь, Таня понимала, на что идет, когда попросила меня написать предисловие. Я в основном известен по очень, очень специфическим ролевым играм в стиле «выбери свое собственное приключение» (Planescape: Torment, Fallout 2, Fallout: New Vegas, Knight of the Old Republic II и многим другим). В результате моей первой – и неправильной – реакцией было желание написать что-то очень оригинальное и мудреное по поводу этой книги. Но, так как я не слишком умен, идея была обречена на провал – к великому счастью. Например, я рассматривал идею о написании этого предисловия как процедурно сгенерированный текст. Но потом я решил, что Таня меня убьет, и было бы разумно предпринять нечто более практичное... Особенно я укрепился в этой мысли после прочтения некоторых глав книги, которые очень полезны. И я чувствовал бы себя виноватым, если бы не сказал ничего по существу. Итак – имейте это в виду – у меня для вас есть три крошечные (пусть и не высшего качества) «жемчужины мудрости», которые позволят вам взять быстрый старт при погружении в материал книги. А именно: 1) мой ограниченный опыт работы с процедурным контентом в большинстве ролевых игр, с которыми я имел дело, и понимание того, почему это может быть проблемой; 2) несколько соображений по поводу того, что «случайный» не всегда означает случайный, и… 3) и, наконец, опасность создания специального контента для в основном процедурной игры. Это своего рода оппозиция первому пункту, но таким образом круг изящно замыкается. А теперь ближе к делу! Итак, RPG на протяжении почти всей моей карьеры характеризовались весьма специфическим контентом1. Их цель – давать как можно более удачный отклик на действия игрока. Даже когда вы знаете содержание и последствия действия, получить специфическую реакцию – все еще непростая задача. Иногда ответные реплики NPC («вы слышали, что случилось на шахте, по словам шахтеров?») могут не совпасть с опытом игрока на все сто («я уверен, что всех там переубивал, и никто не ушел живым»). 1

Контент – информативное содержание игры: графическое, аудиальное, текстовое. Это совокупность всего того, что может найти игрок в конкретной сцене: вещи и их названия, персонажи и их имена – Прим. перев.

Вступление  13 Кроме того, как понимают многие издатели – и оттого предпочитают уходить от темы, – этот специфический контент слишком дорого обойдется, если реализовать его правильно. Таким образом, некоторый уровень процедурного содержания (случайные встречи – ну, те, которые действительно случайны) всегда был чем-то, о чем стоило заботиться и что следовало предлагать там, где только можно, поэтому не каждый момент игры должен был быть написан вручную. Вам нужна какая-то случайность, – немного здесь, немного там... теперь вы понимаете. Некоторое случайное содержание и случайные встречи, чтобы конкретизировать специфические байты. Но... затем возникает другая проблема, которая подводит меня ко второму важному пункту. А что такое случайность? Обязательно задавайте этот вопрос! Определение чего-либо «случайного» в системе будет сильно зависеть от того, кого вы спрашиваете. Обычно «случайный» контент – это действительно случайный набор вызовов контента независимо от того, используете ли вы его для имен персонажей, для фона, для квестов, для оружия... для чего угодно. Чем более абстрактно содержание, тем меньше вам придется беспокоиться об истинной случайности, но тем более специфичны названия (персонажи, фоны) и тем значимым оказывается представление разработчиков о «рандоме» и «псевдорандоме». Иногда разработчики (и игроки) хотят что-то действительно случайное, иногда – что-то более похожее на «перетасовку» контента, подобное перемешиванию треков в списке воспроизведения. Это может быть приравнено к другой технике, которую я люблю называть «псевдослучайной». Концепция «псевдослучайности», о которой позволяет судить история одного разработчика, рассказанной мне Тимом Кейном (Tim Cain) (Fallout, Arcanum и др.), имеет несколько дополнительных параметров, в отличие от простой концепции случайности. «Псевдослучайность» – это на самом деле придуманный мной термин, и я не думаю, чтобы Тим использовал такое название. Вкратце суть «псевдослучайности» сводится к ситуации, когда разработчик или игрок утверждает, что ему нужен генератор случайных чисел, а на самом деле хочет добиться иллюзии случайности. Это происходит потому, что в истинной системе генерации случайных чисел возможна ситуация, когда два числа или экземпляра контента повторяются подряд. Однако редко кто из разработчиков игр хочет этого. Игроки тоже не захотят этого, поскольку это упрощает и обедняет игровой мир. Даже если числа и экземпляры контента не повторяются подряд, может случиться так, что истинная система случайной генерации вызовет повторение двух чисел, прежде чем полный список чисел/экземпляров контента будет показан игроку. Гейм-дизайнеру это не по нраву. Да и игроки не будут в восторге.

14

 Вступление

Псевдорандомисты предпочитают, чтобы цикл генератора случайных чисел проходил все возможные перестановки один раз, не повторяясь, пока все числа не будут исчерпаны, а затем повторять процесс при условии, что число, сгенерированное по завершении последовательности, не является последним числом предыдущей последовательности. Ну и ну! И да, это считается «случайным». Поэтому обязательно спросите, какой случайности ожидают разработчик и игрок. В целом иногда столь же запутанные, как их типы, случайности могут обогатить сценарии «особых случаев» – но (см. выше пункт 3) не придавая им чересчур большого значения в процедурной игре. На самом деле включение специального содержания случайностей в процедурную (в значительной части) игру может быть довольно опасным. Чтобы пояснить свою позицию, скажу, что в своей работе с процедурными играми я в основном опирался на знания, которые мне передали Джастин Ма (Justin Ma) и Мэтью Дэвис (Matthew Davis), руководители игровых проектов. Я имел удовольствие работать с ними над FTL: Advanced Edition и Into the Breach. У меня также была возможность поработать над другими процедурными проектами (Overfall). И это чрезвычайно перспективное направление – я работал над рядом проектов, где создание процедурного контента становится все более и более важным, и способность правильно получить такой контент еще более важна. Поэтому рассматривайте эту книгу как мощное учебное пособие, которое поможет вам найти хорошую работу, или как справочный материал, если вы уже вовлечены в создание процедурного контента. В любом случае одним из ключевых уроков в процедурных играх, над которыми я работал, был следующий: будьте осторожны с контентом для особых случаев. Подобные находки в процедурной игре (обычно это уникальная встреча) могут показаться отличной наградой для игрока, но те же события начинают утомлять вас, если вы сталкиваетесь с ними и на втором прохождении, и на третьем... и на четвертом... А в процедурной игре это происходит чаще, чем вы думаете. Игроки быстро раздражаются и приходят в уныние, очередной раз проходя детально проработанный этап, который вы всунули в игру. Это гораздо скучнее обычных модульных встреч, к которым они привыкли во время игры. Итак, есть один метод, важность которого подчеркивается процедурным содержанием: «не выделяться слишком сильно»; это может относиться к конкретному случайному событию, к специальному NPC или даже к необычному, выделяющемуся на общем фоне озвучиванию (или стилистике субтитров). Мы с этим столкнулись, когда прорабатывали реплики персонажей RPG, такие как «Я угораю», «Я тебя упустил» или «О нет, Таня хочет, чтобы я побыстрее закончил это предисловие!» Когда вы слышите или читаете такую фразу, вы сразу же чувствуете, что она выбивается из

О редакторах  15 общего контекста, так что придется вам наступить на горло собственной песне и поменьше оригинальничать. Это означает, что вы должны в некотором смысле понизить насыщенность создаваемого вами процедурного контента. Это весьма неожиданный метод, который стоит принять на вооружение гейм-дизайнеру, но, когда вы поиграете в игру достаточно долго, вы это оцените. Когда вы услышите ТАКИЕ ВОТ ЯРКИЕ СЛОВА более пяти раз, вы уже будете на взводе, потому что они И ТАК КРЕПКО ЗАСЕЛИ у вас в голове! Выделяющиеся фрагменты на самом деле показывают слабость всей вашей процедурной системы. Создается впечатление, что одна строчка текста пытается затмить все остальные, которые просто делают свою работу. Вот и все мои «жемчужины мудрости». Эта книга содержит гораздо больше идей – притом гораздо лучших. Я надеюсь, что она окажется для вас ценной. Процедурный контент – малоисследованная тема в игровой индустрии, и реализовать его подчас сложно, но эта книга может помочь и указать вам путь. Крис Авеллон (Chris Avellone), независимый рецензент

О редакторах Таня Шорт (Tanya X. Short) – капитан Kitfox Games, независимой студии, разрабатывавшей Boyfriend Dungeon, The Shrouded Isle, Moon Hunters и другие игры. Таня – соучредитель и один из директоров Pixelles, интерсекционально-феминистской некоммерческой организации по разработке игр. Хозяйка двух кошек, которые не питают ни малейшего интереса к игровому контенту – ни к процедурному, ни к какому бы то ни было. Тарн Адамс (Tarn Adams) – соучредитель компании Bay 12 Games наряду с его братом Заком. Вместе они работают над фэнтези-симулятором Dwarf Fortress – одной из первых видеоигр, приобретенных Музеем современного искусства в Нью-Йорке. Тарн создает и отлаживет процедурные интерактивные повествовательные проекты на протяжении более 20 лет.

Составители Тарн Адамс (Tarn Adams), Bay 12 Games Мэтью Бозарт (Matthew Bozarth), Undead Labs Джордж Бакенгэм (George Buckenham) Джеффри Кард (Geoffrey Card), Undead Labs Д-р Кейт Комптон (Dr. Kate Compton) Дэниэл Кук (Daniel Cook), Spry Fox Д-р Майкл Кук (Dr. Michael Cook), Queen Mary University of London Бруно Диас (Bruno Dias) Риад Джемили (Riad Djemili), Maschinen-Mensch Алекс Эпштейн (Alex Epstein), Compulsion Games Марта Фиджек (Marta Fijak), 11 Bit Studios Джейсон Гринблат (Jason Grinblat), Freehold Games Бенджамин Хилл (Benjamin Hill) Юрие Хорнеман (Jurie Horneman) Джон Ингольд (Jon Ingold), Inkle Дариус Каземи (Darius Kazemi) Тим Кинан (Tim Keenan) Йонгву Ким (Jongwoo Kim), Kitfox Games Дэниэл Клайн (Daniel Kline) М. Лейзер-Уолкер (Mx. Lazer-Walker) Стивен Лампкин (Steven Lumpkin), Guerrilla Games Джимми Мейер (Jimmy Maher), The Digital Antiquarian Blog Кэт Мэннинг (Cat Manning) Джилл Мюррей (Jill Murray), Discoglobe Interactive Ричард Раус III (Richard Rouse III), Paranoid Productions Элан Раскин (Elan Ruskin) Адам Зальтцман (Adam Saltsman), Finji Эмили Шорт (Emily Short) Таня Шорт (Tanya X. Short), Kitfox Games Кевин Сноу (Kevin Snow) Якоб Стокальски (Jakub Stokalski), 11 Bit Studios Йорген Тьерно (Jørgen Tjernø), Undead Labs

Часть

I Введение

Некоторые антропологи считают, что первые интерактивные истории были изобретены в отблесках костра, когда старейшины племени в своих выступлениях адресовали отдельные реплики аудитории и рассчитывали на ее реакцию. Если это так, то идея индивидуального авторства уже вторична. А видеоигры – еще более современное изобретение, и применительно к ним системное повествование исследуется крайне редко. Индустрия видеоигр сейчас – большая и быстро растущая область, в ней задействованы десятки тысяч работников по всему миру, но даже при всей нашей специализации очень немногие возьмут на себя смелость называться экспертами в процедурном повествовании. Чтобы подготовить этот сборник, редакторам пришлось пообещать авторам отдельных статей, что их мастерство не будет преувеличиваться. Процедурный нарратив – явление не новое, но это та сфера, в которой еще остается масса сомнений и оговорок.. Авторы статей, включенных в этот сборник, будут использовать термины «процедурные» и «истории» в несколько разном значении, опираясь на свой личный опыт. Тем не менее редакция надеется, что вы найдете: • новые идеи, подходы и философские концепции для рассмотрения; • новые примеры разработок и процессов, реализованных на практике; • инструменты и ресурсы, которые можно использовать в ваших собственных проектах. В этой вводной части мы попытались представить общий, широкий взгляд на проблему – поговорить о важности и содержательности игрового повествования, управляемого автоматически. Книга представляет собой подборку статей, и в каком бы порядке вы бы ни взялись их читать, мы надеемся, что вы с интересом отнесетесь к подходам каждого из наших авторов, приветствуя бесконечные возможности профессионального роста в этой богатой и сложной области.

Глава

1

Начало работы с генераторами Д-р Кейт Комптон

Выдержка из статьи «Итак, вы хотите построить генератор?» galaxykate0.tumblr.com

Учитывая, что в мире существует столько всевозможных видов генераторов, что здесь можно посоветовать? Это будет зависеть от того, какой генератор вы хотите построить. Так что я задам вам ряд наводящих вопросов, а затем уж дам совет – смотря по тому, что вам нужно. Первый вопрос: что вы собираетесь делать? Запишите то, что будет делать ваш генератор. Назовем это «артефактом», но это может быть что угодно: процедурные птицы, генерируемые истории, анимированная хореография, рецепты гаспачо, квесты в RPG, шахматные партии. Теперь самое трудное. Вдохните, выдохните и начните записывать все, что придает вашему артефакту ценность. Какими качествами обладает идеальный артефакт, нужный вам? Он забавный? Гармоничный? Играбельный? Теперь копните глубже: чем конкретнее то, что вы делаете, тем больше у вас шансов преуспеть в деле. Что означает «забавный»? Для Super Mario это имеет одно значение, а для Civilization или Bejeweled – совсем другое. Я могу назвать больше свойств хорошего любовного романа эпохи Регентства с элементами мистики, чем просто хорошего романа. Самые простые генераторы – те, в которых можно описать «хорошие» артефакты как набор конкретных свойств. Теперь ответьте на противоположный вопрос: чем примечателен «плохой» артефакт? Перечислите все, что вы можете придумать, включая относительно неудачные свойства и те, которые портят все безоговорочно. Пометьте звездочкой то, чего ни в коем случае нельзя допустить. Это ваши ограничения. Наиболее надежными генераторами являются те, в которых можно конкретно описать ограничения. Теперь у вас есть список желательных свойств и ограничений (того, что вам требуется и что неприемлемо) для ваших артефактов. Нам нужен генератор с пространством возможностей (все виды артефактов, которые

Создание вашего «художника в коробке»  19 он может генерировать), где большинство артефактов наделены хорошими свойствами, а некоторые артефакты (возможно) – плохими. Нам также понадобится целый ряд артефактов, а не один и тот же идеальный артефакт, используемый многократно; вопрос о том, насколько широкий диапазон вам нужен, вы уже решаете сами как дизайнер (проблема была обозначена Джиллиан Смит (Gillian Smith)1 и исследуется Майклом Куком (Michael Cook)2). Теперь у нас есть руководство, которое понадобится, чтобы начать строить методы, создающие артефакты. Альтернативный подход: вышеописанный метод хорош для негибких ситуаций, когда вы заранее знаете, что хотите построить. Во многих ситуациях, таких как игровые джемы3, прототипы или побочные проекты, вы можете проявлять больше гибкости и импровизировать! Вы вольны начать с метода или некоторых его свободных частей, чтобы выяснить, что они «хотят» генерировать (какие свойства лучше всего для генерации), а затем пересмотреть артефакты, которые вы генерируете, чтобы они в большей мере отвечали тому, что хорошо делает ваш генератор.

Создание вашего «художника в коробке» Когда разрабатывались редакторы Spore, инженеры и дизайнеры тесно сотрудничали с командой художников, чтобы понять, как художник или аниматор будет заниматься скульптурированием и текстурированием персонажей. Если бы они могли понять процесс и разработать алгоритм, который мог бы следовать этому процессу по требованию, у них был бы «художник в коробке», способный создать процедурно сгенерированных существ, почти столь же изящных, как те, над которыми потрудился аниматор. Дизайнер Хаим Гингольд (Chaim Gingold) объяснил этот процесс в своем выступлении в GDC в 2007 году, и арт-директор Оушен Куигли (Ocean Quigley) использовал аналогичный процесс для эксперимента с видами строительных блоков, которые он хотел бы построить для строительства городов4. При создании генератора полезно сесть с людьми, создающими артефакты, которые вам требуются, и попросить, чтобы вас провели через этот процесс. Какие вопросы разработчики задают себе на этом пути? Как они принимают решения? Как объясняют тот или иной выбор? Как описывают различные проблемы, которые надо принимать во внимание? Как называ1 2 3

4

https://games.soe.ucsc.edu/sites/default/files/smith-expressiverangefdgpcg10.pdf www.gamesbyangelina.org/2016/02/introducing-danesh-part-1/ Игровой джем, или game jam, – конкурсы, организуемые игровыми компаниями для независимых команд разработчиков, которые в краткие сроки должны создать игру на конкурс, – и победитель получает не только денежный приз, но и издание собственной инди-игры. – Прим. перев.

http://oceanquigley.blogspot.com/2009/04/spore-early-rig-block-experiments.html

20

 Глава 1. Начало работы с генераторами

ют все части того, над чем они работают, и все отношения между частями (их онтологию)? В некоторых областях науки есть специалисты-практики, которые описывали целые системы, зачастую противоречивые, чтобы наглядно представить то, что они делают. Теория музыки предложила множество систем правил, например для джазовой импровизации, гармоний в стиле Баха или поп-песен. Писатели выработали теории повествования, такие как «путешествие героя», а также основали неформальные ресурсы наподобие TV Tropes. Теория искусства предлагает правило золотого сечения, цветовые гармонии и правила композиции (лично мне эти эстетические стандарты в работе не пригодились, но у вас все может быть по-другому). Ни один из описанных фреймворков не является полноценной системой и не гарантирует создание хороших артефактов, но каждый из них может подарить вам вдохновение и предоставить некое руководство к действию. Итак, теперь спросите себя: как с той же задачей справился бы человек?

От правил к методам генерирования К сожалению, знать, как человек может выполнить ту или иную задачу, – это не то же самое, что уметь научить этому компьютер. Люди хорошо умеют оценивать, строить догадки и обобщать опыт прошлого. Компьютеры знают только то, что вы им говорите, а многие проблемы требуют гораздо больше неявных знаний, чем кажется; зато компьютеры хорошо выполняют множество вычислений и пробуют много возможностей. Таким образом, методы, которые мы хотим использовать, должны предоставить компьютеру способ решать проблемы примерно так, как это делает человек, или, по крайней мере, путем «отзеркаливания» некоторых человеческих навыков. Методы, подходящие для построения генераторов (методы генерирования), дадут компьютеру некоторые из перечисленных ниже навыков: • • • • •

инкапсулировать знания о вариантах (навык A); создавать некоторую структуру (навык B); кодировать правила с условиями для некоторых опций (A2); создавать вариативность в структуре (B2); уметь задавать себе вопросы о своих ограничениях («решил ли я эту задачу?») (навык С).

Распределение Это самый простой вид генеративного метода. У вас есть мешок с некоторым содержимым и область пространства или времени, в которой вы можете его разложить. Методы распределения обычно не имеют большой общей структуры (B), но порой они очень сложны, когда дело касается вы-

От правил к методам генерирования  21 бора вариантов распределения (A). Некоторые используют взвешенную случайность, чтобы изменить процент распределения, или «перетасовку колоды» (складывание всех опций в стек и отбрасывание тех, что были использованы), что предотвращает повторный выбор одного и того же варианта. Правила с условиями (A2) также могут быть довольно сложными, но указание произвольных условий трудно реализовать на практике. В большинстве систем имеются тщательно подобранные параметры, которые могут быть установлены для каждого варианта, и условные функции могут просто сравнить фиксированные параметры, чтобы сделать выбор. Возьмем пример из RPG: блуждающие монстры рассеяны в пространстве (A). Горные обитатели встречаются в соответствующих областях, водные монстры – в воде и т. д. (A2). В их распределении может наблюдаться определенная логика: например, несколько «детских» монстриков ведут к версии «босса». Добыча также распределяется: вы можете с большей вероятностью получить высокоуровневый лут в ситуациях высокого уровня (A2), но все еще остаются некоторые случайные вещи, выбранные из большого списка всевозможных лутов (A). Метод распределения в музыке и языке не очень хорошо работает. Случайно выбранные строки текста или нотных знаков недостаточно структурированы, чтобы создать смысловую конструкцию. Для сложных по структуре артефактов вместо этого могут потребоваться методы на основе плиток или грамматики, а для артефактов с жестко фиксированной структурой и небольшой вариативностью можно попробовать параметрический подход.

Параметрический метод У вас уже есть довольно хорошо построенный артефакт, и вы знаете, что его можно слегка улучшить. Скажем, имеется мелодия, и вы можете изменить ее тональность, сделать музыку громче или мягче. Или есть чайник, и вы вольны чуть больше изогнуть носик; корпус можно сделать высоким или коротким, тонким или толстым, а основание – широким или узким. Если у вас имеются инопланетные персонажи, можно сформовать их ноги так, чтобы они были длинными, толстыми, изогнутыми или с плоской стопой; животы могут быть плоскими или вздутыми; голоса также можно менять. Именно так моделируются существа в No Man’s Sky. Это очень надежная и управляемая технология! 3D-модели часто могут быть кодированы как канал анимации Maya, что позволяет им смешиваться с другими анимациями (трюк Spore, используемый в анимации rig-block). Но изменчивость (А) возможна только в заданном диапазоне однонаправленных путей или никакой структурной изменчивости не наблюдается вообще (B2). Вы можете увидеть что-то «новое», но что-либо неожиданное и удивительное – никогда.

22

 Глава 1. Начало работы с генераторами

Более сложная форма параметрических методов использует другие формы входных данных и может генерировать новые артефакты, основанные не только на числовых, но и на точечных, путевых и графовых входных данных. Когда вы рисуете линию в Photoshop с помощью планшетного пера, ваш путь становится входным для алгоритма, который отображает мазок кисти, учитывая давление, скорость и наклон в качестве параметров в каждой точке. Существа в Spore также использовали metaballs, геометрический алгоритм, который может прокладывать гладкие трубы вдоль путей в 3D-пространстве. Другие алгоритмы для заполнения пространства и путей – это диаграмма Вороного (Voronoi patterns), симплекс-шум и шум Перлина (Perlin/Simplex noise), алгоритмы триангуляции, 3D-экструзия или вращение и алгоритм diamond-square для фрактальной местности. Эти алгоритмы особенно хорошо подходят для интерактивных генераторов, поскольку пользователь может предоставить входные параметры для генератора. Продолжим? На inconvergent.net есть еще больше интригующих образцов, из которых что-то наверняка вас заинтересует, с реализациями с открытым исходным кодом. Однако, хоть эти алгоритмы и поражают воображение, они зачастую слишком малоуправляемы для того, чтобы игрок получил удовольствие от игры и от взаимодействия с довольно плоскими артефактами.

Плиточная основа Сведем проблему к модульным слотам одинаковых размеров. Есть целый ряд различных решений, которые в данном случае могут быть реализованы вручную и заполнить такие слоты. Здесь создаваемые артефакты – это различные выбранные или упорядоченные наборы предварительно созданных решений. Возможно, вы видели настольную версию игрового поля для таких игр, как Settlers of Catan и Betrayal at the House on The Hill (или Civilization, если приводить цифровой пример). И остров, и особняк строятся каждый раз из одних и тех же плиток, но выкладываются они по-разному, что влияет на ход игры. Я обнаружила один из самых старинных примеров генеративного содержания – это Musikalisches Würfelspiel, игра, распространенная в 1750-е годы или даже раньше, с помощью которой пианисты могли собирать «плитки» (в данном случае музыкальные такты), чтобы создавать мелодию вальса5. Методы на основе плиток отлично подходят для мелкомасштабной структуры (B), потому что содержимое плитки уже задано, но у них нет гибкости (B2) для мелкомасштабной структуры по той же причине. Крупномасштабная структура труднее поддается контролю: она может быть со5

Musikalisches Würfelspiel – система с использованием игральных костей для случайного «генерирования» музыки из заранее составленных вариантов. Подобные игры были довольно популярны в Западной Европе в XVIII в. – Прим. перев.

От правил к методам генерирования  23 вершенно случайной. Вы можете задать довольно подробные ограничения в том, что касается сочетаемости плиток, но тогда вам может понадобиться сложный алгоритм для решения проблемы совместимости («пляжная плитка может стоять рядом с плиткой джунглей, но должна находиться на расстоянии не менее двух плиток от плитки с рекой»). Отдельные плитки имеют очень жесткую инкапсуляцию возможных вариантов (A), потому что каждая разновидность плиток должна быть создана человеком. Эти системы не имеют достаточно информации для того, чтобы разработать принципиально новые плитки. Плиточная основа удобна для решения задач, которые могут быть разбиты на небольшие фрагменты, где важна внутренняя структура и при этом могут создаваться интересные (без нарушения ограничений) комбинации при объединении в различном порядке. Вас интересуют дополнительные материалы по генерации аналогового контента? Описание контента настольных игр и ролевых игр вы найдете в «Аналоговой истории процедурного поколения» Джиллиан Смит6 (Gillian Smith. An Analog History of Procedural Generation) и исследовании комиксов Криса Мартенса (Chris Martens)7 (см. рис. 1.1).

Рис. 1.1

Грамматики Грамматики – один из моих самых любимых генеративных методов: они позволяют создавать очень глубокие и сложные структуры, и при этом я могу хорошо контролировать имеющиеся у меня варианты. Грамматики – это способ показать, что большие сложные объекты состоят из других объектов, а те могут быть скомпонованы на основе еще более мелких и простых. Nested от Ортейла – прекрасный пример8. Вселенная – это множество галактик, включающих в себя планеты, состоящие из континентов, 6 7 8

http://sokath.com/main/files/1/smith-fdg15.pdf http://lambdamaphone.blogspot.com/2015/12/generativity-interpretation-study-of.html Ортейл (Orteil) – французский веб- и javascript-разработчик. Он создал исключительно популярную браузерную игру Cookie Clicker, а также вышеупомянутую Nested и Turtle Toy. Его творческие эксперименты доступны на сайте http://orteil.dashnet.org. – Прим. перев.

24

 Глава 1. Начало работы с генераторами

наполненных людьми, которые сотканы из атомов, а также не лишены мыслей, снов, воспоминаний... Каждый символ (т. е. каждый тип объекта, как показано на рис. 1.1) имеет распределение подсимволов, из которых он может быть составлен. Когда он «распаковывается», он должен выбрать один из этих вариантов (и любые подсимволы), а затем распаковать рекурсивно. Грамматики позволяют легко кодировать знания об определенном артефакте, его структуре и вариантах в одном фрагменте данных. Мне они так нравятся, что я подготовила специальную библиотеку Tracery, чтобы облегчить людям работу с ними. Она использовалась для создания сервиса хостинга Twitterbot и множества больших и странных креативных твиттер-ботов, в том числе нескольких моих (см. также главу 27 этой книги). Недостаток грамматик в том, что они не имеют способа обработки ограничений, если только ограничения не закодированы в самих грамматиках (скажем, если кровать может быть только в доме, значит, только дом может иметь кровать в качестве дочернего элемента). Грамматикам сложнее кодировать высокоуровневые отношения между различными объектами, порожденными в разных точках грамматики. Если вы хотите, чтобы предзнаменование смерти злодея содержалось в самом начале грамматики, решить такую задачу будет непросто, и вы можете использовать для этого «большой молот» решателя ограничений.

Решатели ограничений Решатели ограничений – это очень мощные и достаточно новые инструменты в нашем арсенале. Их удобно использовать, когда у вас много жестких ограничений и много гибких и сложных структур, но вы не знаете, как построить структуры таким образом, чтобы обязательно разрешать все ваши ограничения. Самая старая и простая тактика – метод грубой силы: подготовьте все возможные варианты контента, переключите каждый переключатель, создайте альтернативную вселенную, в которой вы приняли каждое новое решение, и проверяйте свои ограничения, пока не найдете то, которое работает. Некоторые проблемы удастся решить таким образом, но, как скажет вам любой математик, при обилии вариантов число возможных артефактов превысит число атомов во Вселенной, и поиск будет очень медленным. Зачастую существуют кратчайшие пути, которые вы можете использовать в зависимости от того, как структурированы ваши ограничения (мне не нужно выбирать вкус мороженого в те дни, когда я не выхожу за мороженым). Но автору требуется чересчур много времени, чтобы прописать это вручную (не верите – спросите разработчика Storyteller). К счастью, многие математики и логики нашли забавным сам процесс решения проблемы и придумали решатели общего назначения. Подключите свои ограничения, структуры и параметры (на языке, который решатели могут понять), и они

От правил к методам генерирования  25 будут искать все возможные кратчайшие пути, чтобы сократить область применения грубой силы и обеспечить медленное, но выполнимое решение за время игры. Поскольку эти инструменты большие, громоздкие и новые, они все еще с трудом подключаются во многих игровых движках, и учебных материалов еще не так много. Адам Смит (Adam Smith) проводит хорошую образовательную пропаганду для метода «программирование наборов ответов» (Answer Set Solving), что является особенно мощным методом. Craft Йана Хорсвилла (Ian Horswill) – это генератор ограниченных случайных чисел с некоторой поддержкой, который недавно был перенесен на Javascript. Вот увидите, эти редкие, но мощные инструменты в будущем получат широкое распространение!

Агенты и моделирование А вот тут начинается самое странное. Помните, я сказала, что мы могли бы посмотреть, как люди решают задачи, чтобы обеспечить генераторам вдохновение? Угадайте, в чем проблема. Люди не единственные, кто решает задачи! Некоторые алгоритмы решают задачи, основанные на колониальном поведении муравьев или социальных коммуникациях людей. Для многих агентов и симуляторов источником вдохновения становится природа в самых разных ее проявлениях: стаи птиц, эволюция, бактерии, нейроны, города. Вот лишь некоторые из моих любимых примеров. Имитация естественного движения (steering behaviors) может создавать удивительно сложные движения толпы. «Тележки Брайтенберга» (Braitenberg vehicles) – это в своей первооснове мысленный эксперимент: простые машины с двумя фоточувствительными глазами и двумя колесами «управляют» собой, просто активируя одно колесо больше, чем другое, так что сила асимметрии изменяет их направление. Хоть и неодушевленные, они могут показать эмоцию «страх» и статус «приключение»; были портированы на многие языки и даже на физических роботов. В алгоритме Boids имитация естественного движения тележек Брайтенберга применяется к стаям птиц и рыб (и гну в анимационном фильме «Король Лев»)9. Каждая птица помогает поддерживать форму стаи путем высчитывания и прикладывания своих собственных усилий для сцепления, выравнивания и разъединения. Небольшие вариации значений в настройке каждой птицы могут генерировать новое поведение целой стаи. Я также использовала управляющие силы для создания процедурного танца (рис. 1.2): здесь вместо силы поддержания формы птичьей стаи действуют ритмические силы – в такт музыке. Управляющие силы могут сделать намного больше, чем просто найти и проложить себе путь, и, надо думать, их возможности пока не исследованы в полной мере. 9

Boids – компьютерная программа, разработанная Крейгом Рейнольдсом (Craig Reynolds) в 1986 году для имитации движения птиц. – Прим. перев.

26

 Глава 1. Начало работы с генераторами

Рис. 1.2

Генетические алгоритмы не генерируют контент, так как вам все еще нужен генератор, но они направляют этот генератор к более ограниченному заполнению и желательному содержанию, производящему свойства. Я использовала этот метод в приложении для эволюции растений (рис. 1.3, 1.4). Генетическому алгоритму нужно следующее: 1) что-то, что вы можете изменить (генотип); 2) что-то, о чем вы можете судить (фенотип); 3) способ превратить первое во второе.

Рис. 1.3

Для цветов в моем приложении генотип представляет собой массив дробных чисел. Этот массив подается в параметрический генератор для создания достаточно неплохо анимированного цветка (превращение генотипа в фенотип). Пользователи определяют, какие цветы им нравятся (что-то, о чем вы можете судить). Они выбирают самый привлекательный цветок; его исходный генотип клонируется и мутирует (что-то, что вы можете изменить), и следующее поколение рождается от мутировавших экземпляров; со временем происходит эволюция. Половое размножение широко распространено в генетических алгоритмах, но в них присутствуют и многие другие интересные виды размножения и метаэвристики. Существует масса актуальных исследований на эту тему.

От правил к методам генерирования  27

Рис. 1.4

Клеточные автоматы полагаются на множество простых агентов, работающих параллельно. Классический пример – игра Conway’s Game of Life, в которой многие крошечные автоматы в сетке, каждый с очень простым поведением, могут вызвать так много странных явлений, что их обнаружение и каталогизация для многих математиков превратились в полноценное хобби. Этот метод может привести, скажем, к таким результатам, как на рис. 1.5. Клеточные автоматы с более сложными правилами используются для создания Dwarf Fortress, классической игры Powder, и с появлением симуляторов, использующих вокселы, они начинают новую жизнь в качестве основного двигателя Minecraft10.

Рис. 1.5 10

Воксел (voxel) – элемент объемного изображения, является аналогом двумерных пикселей для трехмерного пространства. По сути, это просто один из 3D-кирпичиков, из которых можно собирать что-то новое и большее. На этом и основан гейм-плей Minecraft. – Прим. перев.

28

 Глава 1. Начало работы с генераторами

И вот вы приступили к генерированию. Вы просмотрели список генеративных методов, у вас теперь есть свой список ограничений и свойств, и вы построили свой генератор! Что же дальше?

Как могут сбоить генераторы Что-то явно пошло не по плану. Контент выглядит отвратительно. Все какое-то одинаковое. И напоминает гениталии. Полный провал! Некоторые проблемы решить проще, некоторые – сложнее. Вот ряд сложных проблем, с которыми вы столкнетесь. Первая: вы можете путем вычислений определить, что что-то идет не так. Решение заключается в создании нового контента до тех пор, пока это ограничение не будет нарушаться. Возможно, вы хотите, чтобы центр тяжести сгенерированного стула находился над опорными точками (например, ножками), чтобы стул не падал. Это можно рассчитать с помощью физики моделирования, поэтому, если сгенерированный стул не удался, создайте новый, пока вам не улыбнется удача. Этот подход называется «генерация и тестирование». Что может пойти не так с генерацией и тестированием? А вдруг ни один стул пройдет этот тест? Возможно, содержание, которое проходит тест, очень редко генерируется или существует слишком много ограничений (у вас есть ограничения по толщине материала, по стоимости, симметрии, и комфорту и так далее). Каждый стул может удовлетворять большинству ограничений, но при значительном их количестве большинство стульев все равно не будет удовлетворять одному-двум ограничениям. Может быть, вам нужен решатель ограничений. Или вам нужно ограничить свой генератор, чтобы он был более консервативен в выборе, хотя таким образом вы несколько сужаете пространство возможностей. Вторая проблема: вы не можете адекватно описать ограничения. Это чрезвычайно распространенная ситуация, потому что есть масса ненужных нам вещей, но мы не можем написать правила в духе «когда увижу – пойму, нужно или нет». Такие соображения нельзя использовать в качестве серьезного аргумента. Такое-то определение в характеристике персонажа звучит оскорбительно? Не слишком ли эта палитра напоминает цвета фирменного логотипа? Это изображение вызывает неприличные ассоциации? Это просто выглядит уродливо? Боюсь, подобные проблемы почти нерешаемы. Если вы не можете определить «плохой» контент, его невозможно отфильтровать, особенно когда пользователи пытаются обойти алгоритм обнаружения. В этом случае лучший путь – построить генератор, который максимально снизит вероятность генерации нежелательного контента. Это тоже ограничивает ваше пространство возможностей: например, приходится поступиться словами, которые сами по себе нейтральны, но в сочетании друг с другом образуют бранное выражение.

Как могут сбоить генераторы  29

Эстетика: самая сложная задача Наиболее распространенный вариант неудачной работы генераторов – когда они производят контент, который не представляет интереса. Что такое «интересный контент»? Это зависит от ситуации. Очень немногие генераторы производят только что-то одно. Большинство из них генерируют кратные числа, но твиттер-бот, размещающий публикации каждый час, будет генерировать больше контента, чем генератор текста, выводящий по одному роману в каждый NaNoGenMo11. Таким образом, достижение новизны с помощью первого твиттер-бота будет более сложной задачей, потому что производится так много артефактов, что любой из них, вероятно, начнет казаться менее особенным. Ваш алгоритм может генерировать 18 446 744 073 709 551 616 планет. У каждой свои нюансы, но, поскольку игрок быстро изучает их, будет ли слишком заметна разница? Я это называю проблемой 10 000 чашек овсянки. Легко можно создать 10 000 тарелок овсянки, где овсянка выложена по-разному; в математическом понимании все эти тарелки уникальны. Но пользователь, скорее всего, просто увидит много овсянки. Перцептивная уникальность, обеспечивающая разность восприятия, – реальная метрика, и достичь этого чертовски трудно. В некоторых ситуациях достаточно просто перцептивной дифференциации, и ее куда легче добиться. Перцептивная дифференциация – это ощущение того, что данный фрагмент содержания не идентичен предыдущему. Пользователь, взглянув на аллею, может сразу заметить, что деревья почти одинаковые или так мало отличаются друг от друга, что выглядят неестественно. Относительное разнообразие несет в себе эстетическую ценность, даже если ни одно дерево не является особенно запоминающимся. Перцептивная уникальность гораздо сложнее. Это различие между, скажем, артистом массовки, и характерным актером. Должен ли каждый артефакт иметь свою индивидуальность? Это потребовало бы чересчур большой работы, да и у пользователей глаза будут разбегаться. Не каждому суждено блистать. Многие артефакты должны всего лишь служить фоном для других, более приметных и ярких. Характерные артефакты – это уже предмет отдельного обсуждения, но определенные эстетические принципы в любом случае помогут вам создавать объекты с хорошо угадываемыми смыслами. Людям нравится детализация: взрыхленная почва у основания дерева или трава, растущая около надгробного камня, придают натуралистичность пейзажу. Эти ню11

National Novel Generation Month – Национальный месяц генерации романа, проект Дариуса Каземи. Он предложил в Твиттере потратить месяц ноябрь на написание кода, который генерирует роман из более чем 50 тыс. слов, а затем выложить код и роман на всеобщее обозрение. Эта идея была воспринята с таким энтузиазмом, что теперь NaNoGenMo проводится каждый год. Можно найти примеры кода участников на GitHub, там же приводится хронология проекта. – Прим. перев.

30

 Глава 1. Начало работы с генераторами

ансы подсказывают нам, что за артефактом скрывается живой мир. В популярном исследовании Кевина Линча (Kevin Lynch) «Образ города» (Image of the City) показано, что города запоминаются и становятся знаковыми благодаря определенным деталям. Возможно, есть и другие эстетические правила, которые вы сами для себя откроете.

Глава

2

Не усложняйте процедурную генерацию Дариус Каземи

Как показывает практика, процедурная генерация тяготеет к изображению «человека технического». Я использую слово «технический» в самом широком смысле, подразумевая некоего персонажа, практикующего некую технику – совершающего действия, связанные с выполнением сложной задачи. Это не обязательно означает, что задача должна быть научной или технологической. Техника, о которой я говорю, в равной степени может относиться к построению графов и к швырянию посуды. Художник и инженер в этом смысле одинаково «техничны». Общая проблема с людьми «технического» типа состоит в том, что им легко увлечься этой самой техничностью в надежде произвести впечатление на некоего условного, воображаемого зрителя. Конечно, это понятно: мы находим удовольствие в выявлении и решении проблем. Вот почему многие из нас ставят процедурную генерацию в приоритет. Это может сыграть положительную роль в академических исследованиях или на ранних этапах прототипирования проекта, но в то же время может помешать завершению проектов. Другими словами, мы легко теряем из виду конечную цель, создавая некий артефакт, и увязаем в мелочах. В итоге наши проекты увеличиваются в объеме, пока не превратятся в набор запутанных подзадач. Мы превращаем маленькие проблемы в большие. Это не самое худшее в сугубо исследовательской работе, но это очень нежелательная ситуация, если вам надо окончить проект в сжатые сроки. Один из самых важных советов, которые я когда-либо получал, дал мне разработчик игр Брайан Рейнольдс (Brian Reynolds). Пожалуй, он более всего известен по компьютерным стратегиям Civilization II и Alpha Centauri. Рейнольдс читал лекцию на конференции разработчиков игр в начале 2000-х годов об искусственных системах интеллекта в своей игре Rise of Nations. В частности, он сказал, что, когда вы строите ИИ для стратегичес-

32

 Глава 2. Не усложняйте процедурную генерацию

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

Два примера из Spelunky Генерация процедурного уровня в платформерной игре-рогалике (roguelike game) Spelunky Дерека Ю (Derek Yu) часто приводится как образец высококачественной работы, и не без оснований. Генерация уровней подробно рассматривалась в других статьях, но я хочу обсудить два примера из исходного кода оригинальной бесплатной игры, которые с максимальной наглядностью иллюстрируют два подхода к проблеме процедурной генерации. Первый пример – размещение сокровищ на одном из уровней игры. Вы можете подумать, что существует система шаблонов сокровищниц или алгоритм, который по некоторой логике создает соответствующие места хранения сокровищ на уровне. В Spelunky вы не найдете ничего подобного. Там проблема решается просто и элегантно с помощью следующего алгоритма: вероятность того, что в углублении в земле зарыто сокровище, прямо пропорциональна числу твердых поверхностей, прилегающих к этому углублению. Поскольку Spelunky основана на плиточной структуре, есть четыре возможных конфигурации: плитка с грунтом на дне – сверху, слева и справа пусто (открытое пространство); плитка с землей на дне и с прилегающим блоком (как правило, угол комнаты, иногда стена подвала); тупиковая зона, открытая только с одной стороны; и, наконец, пространство, огороженное со всех сторон. По мере увеличения количества заграждений увеличивается и вероятность появления сокровищ. Это логично: вы не стали бы оставлять сокровище в чистом поле, а предпочли бы спрятать его в углу комнаты или в подвале. Как видите, весьма очевидное решение; многие коды Spelunky так же просты, но вместе с тем и изящны. Следующий пример, который мы рассмотрим, – это размещение гигантского врага, паука. Когда вы читаете этот алгоритм, сравните его со схемой размещения кладов: в первом на-

Восприятие vs реальность  33 боре плиток, образующих пещеру, проверьте наличие пустых плиточных пространств размером 2×2 под каждым кирпичиком, который не является потолочным; или в магазине, или в стартовой комнате, или в нижней половине комнаты. Если нашлись такие пустоты размером 2×2 и, таким образом, разрешено генерировать гигантского паука на этом уровне, а мы еще не сделали этого, у вас один шанс из сорока, что паук и паутина будут сгенерированы прямо под этим кирпичом. Если мы действительно сгенерировали паука, другого на этом уровне создать уже нельзя. Приведенный выше алгоритм работает примерно на 30 строках кода, в то время как для размещения сокровищ требуется всего одна. Хотя один алгоритм намного короче другого, оба они просты. Ни один из них не полагается на поиск пути А*, клеточные автоматы или шум Перлина, и, конечно, в них нет ничего более сложного, чем классические режимы ожидания выполнения условий. Оба алгоритма основаны на простых проверках особенностей игрового мира, которые уже представлены в модели игры. Ни один из алгоритмов не вводит в игру никаких дополнительных данных или систем. Можем ли мы предложить лучшие решения? Возможно, но и эти в достаточной мере хороши и не помешали Spelunky стать признанной классикой жанра.

Восприятие vs реальность Еще один урок, который я усвоил как разработчик видеоигр: почти никто из тех, кто рассматривает процедурный контент, не поймет, что происходит за кулисами. Наблюдая действие некоторого алгоритма, большинство людей предполагают, что он гораздо сложнее, чем на деле. Например, мой твиттербот «два заголовка» берет тему одного заголовка новостей и меняет его на тему другого. Меня часто спрашивают, какой код обработки естественного языка я использую для этого. Между тем алгоритм куда проще: он идет в Google News, нажимает на тему в списке тем, находит заголовок на эту тему и заменяет одну тему другой. Это простой метод поиска и замены текста. Люди также предполагают машинное обучение там, где его нет. Наверное, это потому, что люди вообще многое додумывают, чтобы придать миру осмысленность. Они рассуждают так: «Этот генератор уровней кажется случайным, но лишь на первый взгляд – он явно изучает мой стиль игры». Люди склонны скорее приписывать интеллект алгоритму, чем себе! Именно поэтому советы Брайана Рейнольдса по созданию прототипов искусственного интеллекта так важны. Простого выбора случайного числа зачастую достаточно для принятия важных решений, которые будут расценены как «глубоко продуманные».

34

 Глава 2. Не усложняйте процедурную генерацию

Использование контекста для перехода от тривиальной работы к впечатляющей Предположим, я скажу вам, что написал некоторый код, который получает случайное существительное из словаря английского языка, а затем дает определение этого слова. Я не думаю, что вы сильно впечатлитесь – и вряд ли вы сочтете это процедурной генерацией; ну разве что в самом тривиальном смысле. Предположим, я скажу вам, что создал программу, которая генерирует варианты шутки, и примерно три из пяти таких шуток, заставляют аудиторию смеяться. Вы, вероятно, захотите увидеть эту программу в действии. Наконец, предположим, я скажу вам, что оба эти фрагмента кода функционально одинаковы, за исключением некоторого «украшательства». Код, о котором я говорю, действительно существует; это генератор, который я написал в 2011 году под названием You Must Be («Вы, должно быть...»). Код очень прост, а шутка и впрямь хороша. Алгоритм захватывает случайное существительное и его определение, например: Землетрясение – сотрясение почвы, вызванное движением тектонических плит Земли. Украшательство (то, что я называю контекстом) состоит в добавлении нескольких слов: Девочка, ты, должно быть, землетрясение, потому что ты сотрясаешь землю так, словно это вызвано движением тектонических плит Земли. Юмор, конечно, из разряда абсурдного, но это действительно смешно! Тем не менее основной алгоритм настолько прост, насколько это возможно при опоре на словарь как на источник данных. Здесь ключевое значение имеет контекст. Контекст преобразует код из базового алгоритма в генератор шуток. Если подумать, это относится ко всему процедурно сгенерированному контенту. Возьмем, к примеру, шум Перлина. Я могу описать алгоритм, своего рода рандомизированный шаг вверх и вниз по градиенту, но алгоритм стерилен, как и наш словарный алгоритм. Вы могли бы показать алгоритм для шума Перлина любому количеству математиков, которые не додумались бы до того, что сделал Кен Перлин (Ken Perlin), применив алгоритм в области генерации натуралистичных текстур. В мире процедурно генерируемого контента разница между «человеком техническим» и мастером, или дизайнером, заключается в понимании того, что сложный технический маневр не обязательно создаст интересный контент. Простые алгоритмы будут работать отлично, если вы соз-

Заключение  35 дадите с их помощью интересную игру, визуальные ряды, музыкальные фрагменты и т. д.

Проблема может быть не в процедурной генерации Представьте, что у вас есть генератор уровней для игры-платформера в стиле Mario. Он размещает платформы случайным образом на протяжении двумерного уровня. Персонаж может прыгать с одной платформы на другую, но генератор уровней иногда создает пробелы, которые слишком велики, чтобы персонаж мог их преодолеть. Ваш инстинкт программиста может подсказать, что проблема кроется в генераторе уровней; вам нужно ввести ограничение, которое делает все пробелы проходимыми. Но, может быть, решение лежит в другой плоскости. Вместо изменения генератора вы можете изменить способ управления персонажем, добавив кнопку Бежать. Возможно, здесь вы пускаетесь на компромисс, например не даете персонажу замедлиться после того, как он побежал, или позволяете ему использовать ценный ресурс в процессе бега. Вероятно, было бы проще настроить физику разгона при беге, чем рефакторинг вашего генератора уровней. Когда вы протестируете изменения, вы можете обнаружить, что «плохой» генератор уровней заработал как «хороший». Генератор платформера реагирует на изменения контекста. Когда вы меняете физику бега персонажа, значение самих платформ меняется. Контекст также изменяется, если вы добавляете лаву, поднимающуюся на уровни, или предусматриваете, что платформы будут крошиться под ногами героя, если он слишком долго на них стоит. Внесение технически простых изменений может превратить генератор уровня из «генератора едва ли примечательной местности» в «генератор почти неодолимых препятствий». Он может делать и обратное! Представьте себе генератор уровней Spelunky с главным героем, который управляется, как Pac-Man. Внезапно алгоритм, который обеспечивал блестящую игру, начнет выдавать скучные уровни в стиле Pac-Man. Эти стратегии вполне работоспособны и вне сферы процедурного генерирования. Скажем, «написать книгу» – это мягкий вариант. «Написать книгу за месяц» – совершенно другая задача, которая полностью меняет пространство возможностей и заставляет писателя идти к цели небанальными путями.

Заключение В следующий раз, когда вы задумаетесь о том, как лучше всего создать систему пещер, спросите себя: «Какой способ, известный мне, подойдет

36

 Глава 2. Не усложняйте процедурную генерацию

для создания системы пещер, почему эти пещеры не вполне хороши и что можно изменить, кроме самих пещер, чтобы результат меня устроил?» Если вы найдете ответ на такой вопрос, то сможете работать быстрее, писать более простой код для обслуживания и даже узнать кое-что новое о ваших непроцедурных системах. Короче говоря, примите к сведению, что проблема с вашим генератором, возможно, не является проблемой процедурной генерации. Это может касаться чего-то другого. Последнее, что я хочу отметить, – максимальное упрощение процедурного генерирования в перспективе сулит вам значительные выгоды как разработчику. Это позволит вам повысить эффективность. А значит, ваше искусство будет оценено аудиторией, ваша игра приобретет популярность, ваша музыка будет иметь своего слушателя. Вы, вероятно, получите обратную связь в отношении своих алгоритмов и выясните, что игроки взаимодействуют с ними или воспринимают их так, как вы и предположить не могли. Это пригодится в работе над следующим проектом или при доработке текущего. Если вы потратили пять лет на создание того, что кажется идеальным генератором контента, я гарантирую: независимо от того, сколько тестов вы провели, вы не узнаете о его недостатках больше, чем после получения отклика пользователей. Так что просто отпустите его в мир как можно скорее! Тогда ваше следующее творение наверняка будет еще лучше.

Глава

3 Генерация от души Джилл Мюррей, Disclobe Interactive

Всякий раз, когда я выступаю на конференции, после доклада (независимо от того, о чем шла речь), ко мне подходит человек, обеспокоенный будущим игрового нарратива. – Позвольте спросить вас кое о чем, – он не забывает приосаниться, прежде чем начать копаться в своих многочисленных записях. – Так что вы хотели? – после паузы спрашиваю я. – О-о... – он вынужден что-то срочно придумать. – Как вы полагаете, что мы как создатели нарратива упускаем из виду? Чего нам не хватает? Мой ответ всегда один: – Тщательного изучения человека. – То есть вы хотите сказать, что мы недостаточно изобретательны? – отвечает он. Мы, сочинители историй, одержимы идеей изобретения чего-то нового. Вот почему мы так много говорим об этом. Что означает, что сюжет в игре будет ветвящимся, линейным, нелинейным, открытым, управляемым по выбору пользователя, генерируемым пользователем, обстоятельственным, диегетическим? Что может добавить или отнять процедурная генерация? Что такое по-настоящему новый, свежий и умный механизм раскручивания истории? Нам не нужно долгих дискуссий, чтобы сосредоточиться на структуре и развитии повествования, потому что это вещи, которые мы можем измерить и опробовать. На самом-то деле как часто мы вводим инновации, по-настоящему цепляющие игроков? И если игроки ничего нового о самих себе не узнали, действительно ли это инновация или просто подавление эмоциональной составляющей творческого процесса, пустая его формализация? Это не праздный вопрос. Я за свою карьеру уже немало схем нарисовала (рис. 3.1).

38

 Глава 3. Генерация от души

Как тебе история?

О, структурка! просто блес

Рис. 3.1

В 2011 году в компании Ubisoft Montreal было правило: если вы закончили проект и еще не перешли к следующему, вас отправляют в «чистилище» – InterProject. Вы отсиживали рабочий день от и до, но самой работы не было, если только кто-то не нуждался в вашей помощи, пробивая список достижений или желая обсудить проблему дизайна. В зависимости от ваших предпочтений это время передышки было либо благословением (мне платят за какие-то там «межпроектные исследования»!), либо проклятием (почему я вообще здесь?). В таком подвешенном состоянии я оказалась, окончив работу над Your Shape: Fitness Evolved 2012 и еще не приступив к Assassin’s Creed: Liberation. У меня трудно обстоят дела с окончанием проектов. Хотя бывают относительно мягкие варианты, все-таки каждый раз это непредсказуемая смена настроения: гордость за то, чего мы смогли достичь; сожаление о том, что было упущено; ожидание реакции игроков и, наконец, облегчение. Независимо от того, как сильно мы любим процесс работы, мы неизбежно подходим к моменту, когда проект пора сдавать. Хотя, конечно, жаль терять команду, цели и задачи. Чтобы преодолеть чувство опустошения, я инстинктивно обращаюсь к техническим вещам. Я никогда так живо не интересовалась изучением нового игрового движка или скриптового языка, как сразу после завершения очередного рабочего проекта. Утешительно представлять себе, как на базе новых знаний образуются новые возможности. Таким образом, примерно через десять минут после попадания в InterProject я стала испытывать горячее любопытство к разработке типов интерактивных фикционных структур. Могут ли форма и реализация

Заключение  39 истории наполнить смыслом ее содержание? Как рассказчики могли бы использовать ИИ в качестве арбитра судьбы для ничего не подозревающих игроков и персонажей? Я задалась целью создать игровые структуры, а затем посмотреть, какие истории они предложат. Я экспериментировала с различными субверсиями выбора, случайностями и открытостью информации, чтобы сделать потенциальные результаты более-менее читаемыми для игрока. Структуры, которые начали при этом возникать, были наделены собственным разумом, создавая формы и узоры, которых я не ожидала. На самом деле идея заключалась в том, чтобы иметь возможность создавать каждый из этих интерактивных рассказов, поэтому я сознательно контролировала сферу действия, но как только я это сделала, начало происходить что-то странное. С введением производственных ограничений мои романтичные истории стали превращаться, одна за другой, в крошечные кошмары. Another Door Opens (рис. 3.2). Открывается еще одна дверь, за которой читатели получают простое решение A или B, но затем они могут просмотреть все возможные исходы, возможные исходы по своему выбору, и в конечном счете им предоставляется 16 детальных сценариев для принятия взвешенного решения. Сложность и значимость информации делали их выбор тупиковым и не поддающимся оценке. С тем же успехом можно было бы подбросить монетку. The Quantum Circuit (рис. 3.3) создала аналогичную проблему другим способом. Игроки могли выбрать, куда заглянуть – в контейнер A или B, но не знали, что находится в том или ином контейнере, до тех пор, пока не выбрали один из них. Фактически контейнер наполнялся в момент выбора. Выбор был настолько важен, что оказывался нерелевантным, если они не играли достаточно раз, чтобы понять возможное содержимое каждого контейнера. В You Don’t Know What You are Missing (рис. 3.4) читатели должны были читать по главе каждый день. Если они пропустят один день, то не смогут вернуться назад и прочитать отрывок, относящийся ко вчерашнему дню, а вместо этого получат краткое его содержание. Однако оно не всегда в полной мере передает суть. Чем больше дней пропущено, тем более расплывчатым будет описание пропущенного фрагмента, так что читатель и вовсе не сможет разобраться в сюжете. Пан или пропал. Насколько вам важно, достоверно ли передан смысл, если вам нравится история? А если не нравится? Это одновременно подчеркивает и ослабляет роль автора. Наконец, Down The Rabbit Hole (рис. 3.5) была отвлекающим механизмом, который позволял читателям следить за деталями по мере чтения, потом, увлекаясь этими деталями, переходить к более глубокому уровню детализации, а затем в конечном счете выходить в интернет, подчиняясь

40

 Глава 3. Генерация от души

желанию куда-то двигаться. Это ускоряло потерю автором контроля над читателями и потерю читателями интереса к чтению, после чего они переключали внимание на другие предметы. Слова : 5000 Words: 5000 Words / into:250 250 Слова/Вход: Words / choice: Слова/Выбор: 2525 Words / cons.:150 150 Слова/Сообр.: Words / poss: 460 Слова/Возм.: 460 Words / out: 30 Слова/Результ. : 30

Another Door Opens Simple Простое решение Decision

Choice Выбор BB

Choice Выбор AA

Consideration Соображение

Possibility Возможность

Р

Outcome езультат

Р

Outcome езультат

Р

ВPossibility озможность

Р

Outcome езультат

Outcome езультат

Consideration Соображение

Possibility Возможность

Р

Outcome езультат

Р

Outcome езультат

Possibility Возможность

Р

Outcome езультат

Consideration Соображение

Consideration Соображение

Possibility Возможность

Possibility Возможность

Р

Outcome езультат

Outcome езультат

Р

Р

Outcome езультат

Р

Outcome езультат

ВPossibility озможность

ВPossibility озможность

Р

Outcome езультат

Outcome езультат

Р

Outcome езультат

Р

Outcome езультат

Р

Outcome езультат

Р

So

Какой же which is открыть? it?

A

B

Рис. 3.2. Another Door Opens

Глядя на мое милое, безобразное, основанное на схемах детище, я поняла, что я не столько обогатила игровое повествование новшествами, сколько нарушила его законы. Я назвала эту подборку «Дурные сны» и решила, что с меня довольно. Сами структуры передавали тонны информации, но их посыл главным образом означал: «Помогите!». Это были тюремные камеры, в которых томилась история, а я не думаю, что в тюрьму можно сажать только на том основании, что вы ее построили.

Заключение  41 Слова : 5000 Words: 5000 Events: 21 Событие: 21 Words / Event: 105 Слово/Событие: 105 Choices: 11 Выбор: 110

Quantum Circuit Событие Event Random Случайный Selection выбор

Event Событие Decision Решение

Event Событие

Event Событие Random Случайный Selection выбор

Random Случайный выбор Selection

Event Событие

Event Событие

Decision Решение

Decision Решение

Decision Решение

Event Событие

Random Случайный Selection выбор

Event Событие

Inciting Инициир. событие Event Event Событие Random Случайный Selection выбор

Decision Решение

Event Событие Decision Решение

Event Событие

Событие Event

Event Событие Random Случайный Selection выбор

Event Событие

Decision Решение

Decision Решение

Event Событие

Decision Решение

Событие Event

Random Случайный Selection выбор

Event Событие

Случайный Random выбор Selection

Decision Решение

Случайный Random выбор Selection

Event Событие

Event Событие Decision Решение

Random Случайный выбор Selection

Event Событие

Рис. 3.3. The Quantum Circuit

«Дурные сны» занимали меня в течение целого месяца межпроектных исследований, и я рассталась с ними, исполненная решимости, но без единого написанного слова, без персонажей, без сюжета – без чего-либо присущего истории. Реальная работа по созданию историй – не просто структурирование контента, но и осмысление, проверка предположений и изменение ваших четких и стройных планов – это спонтанный и непредсказуемый процесс. Здесь ничего не совершается по щелчку (сказано  – сделано!); вас ожидает масса вопросов, проблем и белых пятен, которые требуется как-то закрыть. Большинству писателей греет душу осознание того, что они уже что-то написали. Приятно также осознавать, что вы собираетесь приступить к сочинительству – возможно, это ощущение связано с предстоящей поездкой в магазин ноутбуков или за свежими канцелярскими принадлежностями. Дисциплина нарративного дизайна позволяет нам рассматривать всю нашу жизнь в этом ключе, подменяя тяжелую работу и неуверенность

42

 Глава 3. Генерация от души

в себе, связанные с конкретными деталями, размышлениями по поводу того, как должна развиваться история. Инновации – это почти то же самое, что прокрастинация. The Forgetting Кривая забвения?Curve? You Know What You’re Missing Ты неDon’t знаешь, что ты упускаешь Day1 День 1 Чтение Reading

Прошло дней: Day Elapsed: 1 Summary Сводка 1а1a

Day День 33 Чтение A A Reading

2+ Сводка 1b1b Summary

День Day 22 Reading Чтение AA

Day День 33 Reading Чтение B B

Words: Слова:5000 5000

Summary 2a Сводка 1а

Day День 33 Чтение C C Reading

Дней чтения (ДЧ): 4 Daily Readings: 4 Слов/ДЧ: Words/ DR:600 600 Измененных Modified DRs: ДЧ 11 (ИДЧ): 11 Измененных / ИДЧ: Modified wordsслов / MDR: 75 75 Сводок: 125125 Summaries: Words/ 160 Слов наSummary: сводку: 160 Modified Summmaries: 11 11 Измененных сводок (ИС): Modified Words / MS: 20 20 Измененных слов / ИС:

День Day 22 Чтение BB Reading

Summary Сводка 2b2b

Summary Сводка 2c2c

Summary Сводка 2d2d

Summary Сводка 3а3a

Summary Сводка 3b3b

Day День 33 Чтение D D Reading

Summary Сводка 3c3c

Summary Сводка 3d3d

Summary Сводка 3e3e

Сводка 3f3f Summary

Сводка 3g3g Summary

Summary Сводка 3h3h

День Day 44 Чтение B B Reading

Day День44 Чтение AA Reading

Day 44 День Чтение DD Reading

Day День44 Чтение D D Reading

День44 Day Чтение CC Reading Day 4 День 4 Чтение FF Reading

Day 4 День 4 Reading Чтение HH

Day 44 День Чтение EE Reading

Day День44 Чтение G G Reading

Рис. 3.4. You Don’t Know What You are Missing

Слава богу, меня вернули к реальности! В январе 2012 года я покинула InterProject: мне предложили написать кое-что для Assassin’s Creed Liberation. Условия и сроки проекта не оставляли времени для теоретизирования. Мы должны были немедленно приступить к работе. Хотя напряжение возросло, работа была во многих отношениях легче. Я сразу же влюбилась в Авелину де Грандпре. Родилась она в Новом Орлеане в XVIII веке, ее отец был богатым французским торговцем, а мать – рабыней. Хотя Авелина была вооружена до зубов и обучена искусству убийства, у нее было три отца, которые оберегали ее на каждом шагу. Это, должно быть, раздражает, подумала я, – и из этого вырос весь ее характер. Liberation, как и другие игры во франшизе Assassin’s Creed, использует линейную приключенческую историю в игре с открытым миром, удачно сталкивая две повествовательные структуры, так чтобы они могли сосуществовать. Прежде открытые миры в играх в основном порождали ощущение затерянности в мире, который больше, чем мы сами, а затем побуждали игрока исследовать обстановку, порой вступать в борьбу, изучать и осваивать этот мир.

Заключение  43 Между тем приключенческие истории в играх обычно берут свои реплики из 17-шаговой программы «Путешествия героя». Как бы ни было удобно «путешествие героя» для анализа одной конкретной категории западных историй, игроки, вступающие в открытый мир на своих собственных условиях, менее заинтересованы в завершении 17-шаговой программы, чем в тестировании мира, и, возможно, даже в его разрушении, чтобы прийти к собственному пониманию истории. Для многих людей Skyrim – это игра про разведение домашних животных или производство, а прохождение квеста – это способ провести время, пока не распахнутся новые горизонты игрового мира (и не появится еще больше сыра). Я и сама не чужда этой тактики. Даже после работы над игрой Assassin’s Creed Black Flag я прошла ее на 53 %, плавая вокруг света на ветрах моих желаний и сознательно избегая последовательности, заданной сюжетом.

Down the Rabbit Hole e Internel ys-reliablинтернет Вечно alwaдоступный The

Детали Tangeant Детали Tangeant Детали Tangeant

Mystory, История, Deepening углубляющая Fragment фрагмент

Ambiguation Двусмысленное Reference замечание

Fantastical Фантастическая история story Детали Tangeant

Странное Confusiong Contradiction противоречие

Unsubstantiated Необоснованное Opinion суждение

Детали Tangeant

Детали Tangeant

Tangeant Детали

Maddoning Сбивающая с толку Misinformation дезинформация

Детали Tangeant

Детали Tangeant

Words: 5000 Слова: 5000 Primary Node: Первичный узел1(ПУ): 1 PN Words: 1000 Слов в ПУ: 1000 Secondary Nodes: 5 Вторичные узлы (ВУ): 5 SN words: 450 Слов в ВУ: 450 Tertiary Nodes: 9 Третьестепенные узлы (ТУ): 9 TN Words: 200 Слов в ТУ: 200

Рис. 3.5. Down The Rabbit Hole

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

44

 Глава 3. Генерация от души

образом. Как же тогда побудить их двигаться вперед и, возможно, даже в один прекрасный день дойти до финала? В Liberation было бы легко заблудиться в бескрайних пространствах и потерять ориентиры, но героиня, а вернее, любовь к ней, была нашей путеводной звездой. Авелина действовала по зову сердца и быстро принимала решения. Она могла быть столь же безжалостной, сколь и чуткой. Она была манипулятором с золотым сердцем, меняя роли (ассасин, госпожа, служанка...) в зависимости от того, что о ней думали и как ее воспринимали. В каждом из этих обличий она призывала игроков пересмотреть свой мир и свой собственный. Она была реальной и важной для нас особой, и чем больше мы вкладывали в нее, тем больше верили, что игроки последуют за ней туда, куда должна повернуть история. Затем моя собственная история привела меня к Assassin’s Creed: Black Flag, а позже к Freedom Cry, с Адевале и Маронами Сен-Доминго, взывающими к революции, а от них к ряду пугающих событий, опустошивших меня эмоционально. Вступив на путь исцеления, я снова обратилась к прежним методам работы – но теперь уже имея за плечами опыт знакомства с Авелиной и Адевале. Работая над новой игрой для аудитории, которая скорее предпочтет заботиться и дружить, чем выслеживать и убивать, мы начали задавать новые вопросы и проверять наши теории. В этом игровом мире сгенерированы будут все персонажи, за исключением персонажа игрока. Игроку мы предоставим свободу экспериментировать со стилем и предпочтениями и менять своего героя по желанию. Любой смысл истории или продвижения по игре будет сводиться к действиям, которые выбирает игрок, шагам, необходимым для их осуществления, и вознаграждениям, которые он получил. При наличии стольких движущихся объектов, отсутствии традиционного сюжета и с учетом персональных особенностей игрока надо было найти нечто, к чему он привяжется эмоционально, – опорные точки в игре. Создание бесчисленного ряда правдоподобных персонажей, которых вы можете прочувствовать и которыми заинтересуетесь, – это вызов. Повествовательная генерация наталкивается на те же риски повторяемости, что и другие типы генерации. Проблема 10 000 тарелок овсянки относится и к генерации персонажей: она может выдать серию странных личностей, которые говорят загадками (покуда вы мечтаете, чтобы этот диалог закончился), равно как и ряд врагов, одинаково буйных и отличимых друг от друга разве что по счету поражений и побед – и по родимым пятнам. Разаботчики игр, в частности Эмили Шорт (автор главы  28), писали о необходимости связывания персонажей с некоторой механикой, подобно тому как характер Авелины вырастал из механики ее характера1. Это закрепляет каждого персонажа в опыте игрока, делая персонажей значимыми в практическом плане. Но как заставить игрока почувствовать 1

https://emshort.blog/2016/09/21/bowls-of-oatmeal-and-text-generation/

Заключение  45 к ним привязанность, как если бы они существовали в реальности? Мой проект был небольшим и экспериментальным; ему еще не дали зеленый свет, поэтому нам нужно было найти ответы , не выходя за рамки бюджета. Я начала задаваться вопросом о самом маленьком, скудном, отрывочном наборе деталей, которые мы могли бы создать и с их помощью придать реалистичность отдельным неигровым персонажам, – показать, что нам важно, кто они и что ими движет, чтобы игроку захотелось узнать их, подружиться с ними или даже бросить им вызов и противостоять им. Что, если проработка персонажа отойдет на задний план, а на первый план выйдет отношение к нему игрока? Может ли незатейливо прорисованный персонаж вызвать яркие эмоции – ведь художник часто создает образ всего лишь парой мазков кисти, а эмоции при этом рождаются столь же сильные, как при взгляде на гиперреалистичное изображение? Мы уже знаем, что игроки оценивают персонажа независимо от того, что заявлено автором. За время написания этой статьи была завершена работа над Shadow of the Tomb Raider, а затем игру выпустили на рынок. В результате разные люди совершенно по-разному восприняли Лару Крофт. Некоторые критики сочли ее взбалмошной и нарциссичной. С обывательской точки зрения это испорченная натура, но ей присущи чуткость и внутренние противоречия. На экране есть только одна Лара – заданный набор готовых диалогов и визуальный образ; никаких разветвленных сюжетных линий, которые создавали бы общий игровой словарь для всех игроков. Однако образ Лары по-разному отзывается в сердцах и умах людей. Итак, мы видим, что в игроках сильнó желание сочувствовать персонажу и подбирать для него свои трактовки. Почему бы не воспользоваться этим качеством и не передоверить игрокам, так сказать, часть вычислительной мощности? Вернувшись к своему экспериментальному проекту, я попыталась сместить акцент с широты и экспансивности открытого мира на близость знакомства с человеком. Скольких людей, по-вашему, вы очень хорошо знаете? В толпе мы воспринимаем друг друга как индивидуумов, как досадную помеху или как то и другое одновременно? Я читала о том, как люди обмениваются сплетнями, ведут беседу и как их подсознательные стремления проявляются в коммуникации. Интересно было поразмышлять, как мы самовыражаемся и как оцениваем себя, о масках, которые мы носим, и о нечаянных жестах, которые обнаруживают наши тайные замыслы. Я придумала простой тест. Цель его – выяснить, какие детали будут вызывать мгновенный эмоциональный отклик. Используя только текст, я постаралась избежать какой бы то ни было художественности и диалогичности и создала простой инструмент в Twine (а позже в Javascript) для генерации простых списков персонажей и их характеристик. Пользователю предлагалось нажать кнопку Генерировать, ознакомиться с информацией, появляющейся на экране, и как-то на нее отреагировать.

46

 Глава 3. Генерация от души

Вскоре стало очевидно, что список не должен быть длинным. На самом деле чем короче, тем лучше. Списки выглядели примерно так*: Имя:

Нат

Возраст:

28 лет

Пол:

небинарный

Доминирующая черта характера:

замкнутость

Любимый цвет:

фиолетовый

Дети:

2

Чего больше всего боится:

пауков

Самое отчетливое воспоминание детства:

как-то раз зло подшутил над своим другом и сразу же пожалел об этом

Цели:

вернуться в университет и получить степень магистра

Эмоциональная потребность:

уверенность в себе

Хобби:

нет

(* Неточная реконструкция. Реальные списки не подлежат цитированию, согласно договору о неразглашении конфиденциальной информации, и пылятся где-то на сервере.)

Используя эту канву, люди не только формировали определенное отношение к персонажу, но и начинали придумывать истории о нем и задавать вопросы. В зависимости от фантазии участника эксперимента Нат мог оказаться иммигрантом, который усердно работал, чтобы проявить себя. Его замкнутость могла объясняться природной интроверсией или тем, что его осуждали в обществе. Инцидент с другом детства, возможно, был спровоцирован сверстниками, от которых Нату не хотелось отстать. Небольшие изменения в характеристиках влияли на восприятие. Если вместо 28 лет указывался возраст 23 года, то, возможно, в связи с рождением детей Нат не смог получить образование. Возможно, его брак повлиял на его уверенность в себе. Измените доминирующую черту характера на общительность, и тогда, возможно, Нат хулиганил вовсю, чтобы привлечь внимание, а не избежать его. Еще немного детализации – и Нат превратится в «тарелку овсянки». Пользователи будут тратить больше времени, нажимая на кнопку и пытаясь угадать логику, стоящую за деталями. Относительно сжатая информация с большей вероятностью задействует творческое начало исследователя и побуждает его увидеть за списком характеристик личность героя.

Заключение  47 Для наших экспериментов этого вывода было достаточно. Если слабо прорисованные персонажи уже привлекают внимание игроков, следующий набор экспериментов мог бы показать, что происходит при добавлении более глубоких характеристик, когда игроки пытаются общаться с персонажем и лучше узнают его. Не важно, будут ли все воспринимать Ната одинаково, одинаково принимать в нем участие – или оставаться равнодушными, потому что и в этом есть своя правда жизни. Как часто мы на самом деле «прочитываем» чужой характер без искажений? Наверное, мы оттого так и любим всякие истории, что упорно пытаемся понять друг друга. «Проект Ната» вскоре завершился – по-своему необычно и печально. У нас не было другого выбора, кроме как двигаться вперед с той же быстротой, с какой экспериментатор нажимает кнопку Генерировать. Как и Авелина, Адевале и Лара, игра в Ната нашла укромный уголок в моем сердце и продолжает там жить. Инновации – не самая сложная часть игрового повествования. Игры могут побудить игроков к исследованию, расширяя их мир (хотя бы и путем завоевания) или тренируя их внимание, чтобы они учились осмыслять и интерпретировать образы. Любая структура может быть правильной, а может и отвлекать – настолько, что мы забываем, что действительно важно. Сложности в игровом повествовании не больше, чем в реальном мире: все завязано на понимании и взаимосвязи с людьми, будь то вымышленные персонажи, другие игроки, разработчики или даже вы сами.

Глава

4 Адаптация контента к выбору игрока Юрие Хорнеман

Благо я могу похвастать статусом разработчика, а заодно и технического специалиста, мне потребовалось ошеломительно много времени для того, чтобы понять: тот факт, что вы можете что-либо сгенерировать, совсем не означает, что вам нужно это делать. Хотя, конечно, можно формулировать свои творческие цели исходя из технических возможностей, обычно лучше танцевать от творческой задачи: выяснить, чего вы хотите достичь, а затем построить это. В каких целях обычно используют процедурный сторителлинг или процедурную генерацию контента в целом? Это может быть создание бесконечных уникальных миров (Elite, No Man’s Sky) и чрезвычайно глубоких пространств возможностей (Dwarf Fortress), воспроизводимости (Spelunky, игры-рогалики) или ассоциативных сопоставлений и эстетики случайности (твиттер-боты). Есть и другие, не менее достойные причины. Меня процедурное повествование интересует с той точки зрения, чтобы адаптировать игру и ее историю к выбору игрока (и к другим динамическим элементам, таким как состояние игры, т. е. в текущем состоянии игрового мира). Это не одна из тех причин, что я перечислил выше, и методы достижения моих целей не всегда рассматриваются как «процедурные». Адаптация к выбору игрока дарит игроку возможность более полного самовыражения – он получает игровой опыт, который заточен под него, показывает ему глубокие последствия широкого ряда действий и особенно важен в играх открытого мира. По определению такие игры дают игроку больше возможностей выбора, даже если они всего лишь пространственные; но предугадывать и контролировать их продвижение намного сложнее, если вы не знаете, где окажется игрок, с чем он столкнется и в каком порядке. Процедурные методы могут помочь решить эту проблему. Независимо от того, что обещают демоверсии глубокого обучения, невозможно генерировать все виды контента. В противном случае качество может быть недостаточно высоким или затраты на разработку – занебес-

Выбор деталей для адаптации  49 ными. Кроме того, если это не приближает вас к вашим творческим целям, не имеет смысла создавать что-либо с нуля вместо того, чтобы использовать предварительно созданный контент. Для создания игры, которая адаптируется к выбору игрока и при этом качественно реализована, нужно сочетать предварительно созданный контент с динамическим или сгенерированным контентом. Это создает ряд трудностей, которые мы обсудим ниже.

Выбор деталей для адаптации Для того чтобы сделать данный вид контента адаптивным, вам сначала нужно определить элементы или аспекты, которые слишком сильно привязывают его к контексту и затрудняют адаптацию игры к выбору игрока. («Контент» – довольно размытое понятие; многие принципы, изложенные в этой главе, относятся к разным видам контента: уровням, тексту, графике и т. д.) Я буду использовать миссии для примера, потому что миссии появляются во многих играх в той или иной форме и представляют собой мощное средство структурирования опыта игрока; в играх, где они присутствуют, они являются сюжетообразующим элементом. В пространственно-линейных играх миссии в виде последовательностей игровых целей обычно отсутствуют, потому что там они концептуально излишни. Предположим, у вас есть миссия, которая предписывает найти ведьму, чтобы получить волшебное зелье, в игре с открытым миром, где игроки могут направляться куда угодно и когда угодно. Это означает, что, в отличие от линейных игр, вы не знаете наверняка, где окажется игрок, когда эта миссия будет востребована по сюжету. Пространственная линейность – самое простое решение задачи предугадывания положения игрока на том или ином этапе развития истории. Это работает очень хорошо! Компания Naughty Dog всегда знает, где находится Натан Дрейк в любой момент прохождения Uncharted, но в играх с открытым миром это сложнее. Вместо того чтобы создавать миссии в соответствии с заранее известными вам местоположениями, полезно иметь возможность адаптировать содержание миссий к динамически определяемому местоположению. Вы можете сделать несколько копий миссии, по одной для каждой позиции игрока, и соответственно настроить их выбор при прохождении игры. Это метод грубой силы, который вполне хорош в некоторых случаях, но в целом оказывается дорогостоящим и громоздким: ведь вы должны не только создавать, но и поддерживать все эти копии. Итак, предположим, вы хотите адаптировать свою миссию по поиску ведьм так, чтобы она могла работать и в лесу, и в пустыне. Как это сделать? Начнем с простого первого шага. Во многих играх текст, привязанный к объекту, прямо указывает игроку, что делать: «найти меч», «убить злого повелителя» и т. д. В нашем случае мы можем сказать игроку: «ищи ведьму

50

 Адаптация контента к выбору игрока

в лесу» или «ищи ведьму в пустыне». Название объекта привязывает текст к объекту. Вы можете использовать систему подстановки текста, чтобы написать объективный шаблон, например: «поиск ведьмы в %location%». Затем, когда игра доходит до реальной цели, вы смотрите на место, в котором должна выполняться миссия, и заменяете волшебное слово «%location%» на «лесу» или «пустыне». Подстановка текста довольно хорошо работает. В английском языке нужно всего лишь обратить внимание на несколько простых грамматических правил. В других языках, особенно с развитой категорией рода, все намного сложнее, но обсуждение этой темы выходит за рамки данной главы. Такие системы, как Tracery Кейт Комптон (Kate Compton), Expressionist Джеймса Райана (James Ryan) и Improv Бруно Диаса (Bruno Dias), предлагают более сложные способы замены текста, но по сути представляют собой те же шаблоны с дополнительными элементами. Обратите внимание, что шаблон «поиск ведьмы в %location%» является предварительно созданным контентом, как «леса» и «пустыни». Компьютер не понимает концепцию поиска, равно как и значение слов «ведьмы», «леса» или «пустыни». Подстановочные слова могут быть любыми. Таким образом, мы определили элемент (имя местоположения), который сделал контент (целевой текст) не адаптивным к контексту (место, где выполняется миссия), а затем вытащили его, чтобы он мог прийти из другого места, будь то сгенерированный или выбранный из набора предварительно созданного контента. Таким образом, стало возможным адаптировать контент к выбору игрока (куда игрок пошел). Это общий принцип адаптации контента, и он применяется очень широко. Возьмем, к примеру, многопользовательскую игру Overwatch от Blizzard. В конце каждой игры игроки видят «Лучший момент матча» – короткий клип о каком-то особенно впечатляющем подвиге, совершенном одним из игроков. Клип предваряет эффектная анимация с участием героя, выбранного игроком. Игроки могут разблокировать и настроить «скины» (разные образы своих героев), а также выбрать анимацию для этого момента. Таким образом, заставка «лучшего момента матча», которую видят игроки, адаптируется к двум вариантам выбора игрока: облик героя и тип заставки. Это может удивить вас, если рассматривать довольно простую анимацию в реальном времени как адаптивное содержание или процедурное повествование. Но так оно и есть – просто мы об этом уже не задумываемся. Когда я делал игры в 90-х, чего бы мы только не дали за возможность показать произвольную анимацию на произвольном персонаже! Тогда я работал над технологией анимации 3D-персонажей, чтобы хотя бы приблизить такую возможность. 3D-визуализатор – это система для процедурного генерирования анимации и изображений. Давайте представим, что мы хотим использовать NPC, чтобы выдать нашу миссию игроку. Один из подходов будет заключаться в том, чтобы

Выбор деталей для адаптации  51 создать квестодателя для каждой настройки, а затем активировать того, который вам нужен. Вы сгенерировали усталого путника, который встречается вам в таверне и рассказывает о лесной поляне, где обитает ведьма. Затем создаете таинственного незнакомца в оазисе, который рассказывает о пещере в пустыне, где живет другая (или та же) ведьма. И так далее – для любой другой настройки, которая имеет смысл в игре. Затем вы используете глобальную переменную для хранения настроек, в которых была активирована эта миссия, поэтому она появляется там, где находится игрок, после чего уже ни разу не повторяется. Вам также нужно убедиться, что ведьма действительно может быть найдена, и с этой целью определить позицию для той настройки, где находится ведьма, а затем активировать правильную. Данный подход – выбор контента на основе выбора игрока – очень прост и не требует каких-либо сложных технологий. Легко понять, как он работает и делает миссию адаптивной. Простые методы порой недооценивают. Процедурное повествование не нуждается в сложных технологиях. Наш пример включал создание нескольких копий части контента (квестодателя) и выбор и активацию правильной версии во время выполнения. В данном случае это нормально, потому что создание нескольких копий квестодателя, как правило, обходится дешево, но можно пойти дальше. Возможно, в любой таверне может быть фиксированный квестодатель, например хозяин таверны, – это уже обычная вещь во многих играх. Другой вариант: любой персонаж в таверне может быть квестодателем. Также вы можете выбрать или сгенерировать квестодателя, характеристики которого соответствуют локации. Миссия просто нуждается в NPC, который может давать задания, – и не имеет большого значения, кто это, потому что персонажу, выдающему квесты, обычно отводится всего несколько строк текста. В локациях могут присутствовать сами квестодатели или позиции, в которых они могут быть порождены. Обучая компьютер тому, что такое квестодатель, мы можем легко сделать наши миссии еще более адаптируемыми. Тем не менее все, что мы предпринимаем для повышения «универсальности» ведьмы или квестодателя, одновременно делает их менее специфичными. Некоторые квесты предполагают, что надо, к примеру, принести такое-то кольцо в такое-то место, чтобы угодить конкретному волшебнику, а не просто любому случайному посетителю бара. Описанные выше методы адаптивного подбора исполнителей миссий – это не общие решения для процедурного сторителлинга, а достаточно мощные инструменты, применимые во многих ситуациях. Используя эти инструменты надлежащим образом, вы можете найти оптимальный баланс между сложностью реализации, реактивностью и уникальностью опыта. Я вернусь к этому позже.

52

 Глава 4. Адаптация контента к выбору игрока

Что еще можно абстрагировать и учесть в отношении миссий? С незапамятных времен разработчики уровней (левел-дизайнеры) рассказывали истории в играх, связывая сюжетные ходы с освоением пространства. Игрок открывает дверь или входит в какую-то зону, сам того не замечая – и вдруг с ним что-то случается. Это, на счастье или на несчастье, один из основных методов повествования в играх, но он ограничен и непрост в настройке. Всякий раз, когда вы хотите изменить историю, вам нужно адаптировать под нее пространство, и наоборот. Если игроки не двигаются туда, куда вы их предполагали заманить, темп повествования нарушается. Чем больше пространственных вариантов вы предлагаете игроку, тем более запутанной становится логика истории. Некоторые типы развития сюжета могут быть обособлены от освоения пространства. Для этого используется техника, которую я называю демоном истории; «демон» – общий термин в компьютерной науке для обозначения невидимой сущности, которая что-то для вас делает. В 2016 году я построил небольшой интерактивный фантастический эксперимент с сюжетным демоном под названием Creepifier, который немного похож на постановщика ИИ из Left 4 Dead, только для медленного нагнетания ужаса. Его работа заключается в том, чтобы внедрять в игровые сцены жуткие детали с возрастающей скоростью. Когда демон активен, он поглядывает на свои «часы жути», чтобы увидеть, не пришло ли время показать чтото ужасное. Если пришла пора, он просматривает теги текущего местоположения и пытается найти соответствующую запись в своей библиотеке «блоков жути», а затем вводит такой блок в описание местоположения. «Блоки жути» – это, как правило, просто строки текста («Вы слышите шум за стеной»), но иногда они предоставляют игроку новые опции («Книга открывается сама по себе. Вы ее читаете?»). На каждом шагу «часы жути» медленно ускоряют ход, пока не происходит что-то страшное – снова и снова. Легко представить себе, что Creepifier вставляет или изменяет другие типы контента: визуальные эффекты, музыку и звуковые эффекты, а также боевые сцены. Creepifier может быть включен или выключен, как того требует сюжет, и способен объединяться с другими демонами истории или взаимодействовать с ними. Компаньон NPC, который комментирует происходящее, может быть реализован как демон истории, и такая система NPC должна взаимодействовать с Creepifier. Моя демонстрация Creepifier была чрезвычайно проста. Сложности возникают, когда вы пытаетесь реализовать это на более качественном уровне. Вы должны иметь дело с повторяющимися и непреднамеренными паттернами, как и с любой процедурной техникой, и тогда уже сложнее убедиться, что все «блоки жути» соответствуют ситуациям, в которых они могут появиться, – подобные проблемы я рассмотрю позже. Важно понимать, что управление этой сложностью само по себе хлопотно – потому,

Комбинирование битов  53 что мы хотим дать игроку больше выбора, и потому, что в какой-то момент обработка вручную перестает масштабироваться. Нам нужно научить компьютер тому, как помочь нам, и, значит, мы должны выразить нашу проблему так, чтобы компьютер понял, что мы от него хотим, – а для этого мы должны во всех тонкостях понять ее сами. Проблема, которую мы пытаемся решить, трудна, и мы должны прибегнуть к помощи компьютера; это требует времени и усилий. Вот еще одна причина, по которой нужно с самого начала адекватно оценивать требуемые инвестиции и ожидаемую прибыль.

Комбинирование битов Мы сделали контент адаптивным, определив элементы, которые привязывают его к определенному контексту, и нашли способ отделить их. Чтобы создать окончательный контент, когда он нужен игре – чтобы адаптировать его к текущему контексту или состоянию игры, – вам обычно нужно выбрать или сгенерировать правильный бит вложенного контента и объединить его с шаблоном. В нашем примере с объективным текстом задача проста. Мы находим шаблон текста цели («поиск ведьмы в %location%») для миссии, затем находим имя целевого местоположения и вставляем его в шаблон. Ситуация становится интереснее, когда вы отходите от строгих однозначных отношений между игровым состоянием и элементами. В системе, построенной мною для Mainframe1, интерактивной фантастической игры, которую мы с Лиз Ингленд (Liz England) делали для игрового конкурса ProcJam в 2015 году, можно было сказать: «Дайте мне опцию игрока, ведущую к сцене с заданным набором свойств». Эти свойства были выражены с помощью тегов. Например:

Такой код выдал бы выбор игрока, ведущий к сцене, которая отмечена тегами search (поиск) и electrical (электрический). Выбор контента на основе тегов простой, но мощный2. Существуют более сложные подходы, такие как основанная на правилах система Valve для выбора диалоговых строк или сопоставления игровых шаблонов Irrational Games. В 2011 году я работал над неизданной ролевой игрой в жанре экшен, которая использовала основанный на тегах подход для создания подземелий. Вместо того чтобы генерировать топологию подземелья с помощью некоего алгоритма, мы предварительно определили его в редакторе карт. Для каждого подземного отсека мы добавляли метки, которые указывали 1 2

Вы можете поиграть в эту игру по ссылке: http://mainframe.intelligent-artifice.com. Теги просты для понимания при реализации, но в более крупном масштабе могут стать громоздкими. Я подробнее рассказываю о плюсах и минусах выбора контента на основе тегов в Game AI Pro 3.

54

 Глава 4. Адаптация контента к выбору игрока

на тип помещения, например: «комната страха», «коридор», «джунгли», «выход на восток». Этот декларативный подход не позволил нам создать бесконечное количество подземелий, зато чрезвычайно ускорил редактирование подземелий. Движок превратил наши шаблоны в реальные подземелья, используя большой набор готовых отсеков. Мы указали, что некоторые запросы тегов удачны, а некоторые – в принципе допустимы. Это означало, что система стремилась к лучшему, но имела приемлемый запасной вариант. Позже мы увидим, почему это было так важно. Общая задача в отношении алгоритмов выбора контента заключается в том, чтобы избежать ненужной восприимчивости и непреднамеренных паттернов, а также внедрить систему взвешивания, чтобы более заметные биты появлялись реже. Это распространенная тактика и при выборе основы для NPC – и что это такое, если не процедурная система повествования, которая включает в себя выбор контента?

Создание правильных битов Выбор правильных битов контента – одна сторона проблемы. Другое дело – решить, какие биты контента создавать. В качестве первого шага следует позаботиться о том, чтобы ваша система не запрашивала контент, который вы не предоставили. Если взять вышеприведенный пример (поиск ведьмы) и попытаться создать эту миссию в месте, где у нас нет имени для местоположения квестодателя или позиции ведьмы, мы потерпим неудачу. Ролевая игра в жанре экшен, о которой я упоминал ранее, сильно зависала, когда шаблон подземелья требовал комнату, которой не существовало. Мы использовали автоматическое тестирование, чтобы убедиться, что подобные ситуации исключены, и тип тега «приятно было бы иметь такую», чтобы убедиться, что мы не слишком ограничиваем наши подземелья. Следующий шаг – создание инструментов, которые позволят вам увидеть, где вы пропускаете контент или где контент слишком разрежен, чтобы вы могли заполнить свои корзины битов контента соответствующим образом3. Затем на стороне создания контента вам нужно обработать контекст. В скольких ситуациях должен функционировать бит предварительно созданного контента? В каких контекстах он может появиться? Контекст может быть неявным или явным. Если он неявный – создатель контента знает, в каких ситуациях может появиться часть контента, и гарантирует, что он всегда работает; но нет никакой системы, которая могла бы это обеспечить, а иногда нет простого способа узнать, что такое контекст. Это одна из самых сложных вещей в написании игр: вы должны учесть все ситуации, 3

На эту тему встречается много интересных исследований в академических кругах, а также в интерактивной художественной литературе. Я рекомендую вам ознакомиться с работами Джеймса Райана (James Ryan), Эмили Шорт (Emily Short), Джейкоба Гарбе (Jacob Garbe) и Грэма Нельсона (Graham Nelson).

Склеивание швов  55 в которых может появиться строка, и убедиться, что она работает в каждой из них. Если контекст явный, то создатель контента указывает, в каких ситуациях может появиться фрагмент контекста, чтобы компьютер знал его намерения. Это то, что мы сделали в отношении подземных отсеков в ролевой игре в стиле экшен. Вы получаете больше контроля, но трудности еще есть, потому что вам нужно продумать перестановки и выразить их так, чтобы компьютер понял вас. Чем больше измерений контекста, на которые должен реагировать фрагмент адаптивного контента, и чем больше эти измерения переплетены, тем сложнее становится шаблонизация или процедурализация контента. Скажем, квестодатель должен рассказать вам о ведьме в лесу. («Вы ищете ведьму? Она живет в лесу!») Если бы вы просто писали об этом в рассказе, персонаж, вероятно, также присовокупил бы пару замечаний о главном герое, погоде и т. д. («Выглядишь так, будто по дороге сюда попал в переплет. Монстры всегда появляются во время дождя».) Какие-то слова квестодателя могут относиться к сюжетной линии главного героя и к текущей ситуации в фантастическом мире. («Атаки последнее время участились – похоже, враг твердо вознамерился уничтожить нас».) Вы можете вывести весь текст в несколько строк. А можете не использовать диалог, пропустить речь квестодателя или даже всю миссию – в зависимости от того, что нужно для вашего повествования. В тексте масса нюансов, и это чрезвычайно затрудняет его адаптацию4.

Склеивание швов Часто связь между событиями имеет решающее значение как в плане качества исполнения, так и для динамической адаптации. Рассмотрим замечание NPC, сделанное между двумя миссиями. Вероятно, вы хотели бы, чтобы они прокомментировали то, что случилось прямо сейчас, то, что последует за этим, и отметили причинно-следственную связь. Ветвящиеся миссии или различные способы завершения миссий подкидывают еще больше контекста для адаптации. (Например: «Вы убедили ведьму дать вам ее убивающее монстров зелье? Отлично! Теперь станет легче убивать монстров» или «Вы не получили зелье ведьмы? Ну, если хотите, сражайтесь с монстрами, но это будет сложнее».) То же самое касается переходных абзацев в интерактивной художественной литературе. Это небольшие фрагменты текста, но с ними могут возникать сложности. Самый простой способ избежать проблемы – не делать никаких переходов. Разбейте вещи и сделайте их модульными, уменьшая зависимости между ними. В динамичных текстовых играх, таких как Dwarf Fortress, используется более функциональный текст, который звучит не так красиво: 4

Превратить обычный текст в диалогический – это целая история. Устная речь имеет свои нюансы, и это самый сложный вид контента, который только можно создать.

56

 Глава 4. Адаптация контента к выбору игрока

«Эндок зарисовывает стопки кожаных отрезов. Эндок приступил к таинст­ венному сужению». Это эффективно, поскольку игрок тем быстрее усваивает текстовую информацию, чем меньше его вовлеченность. Fallen London решает ту же проблему на более высоком уровне, разбивая весь опыт на модульные биты, называемые storylets, которые намеренно не связаны друг с другом, предоставляя игроку воображать эти связи. В играх, использующих непрерывное время (другими словами, в большинстве игр), это решение нелегко воплотить. Кроме того, сюжет строится на взаимосвязи событий. Фраза «Король умер, а после королева угасла от горя» говорит чтото другое, нежели просто «Король умер. Королева умерла». Предоставить игрокам достраивать эти цепочки, как в Fallen London, – интересный художественный прием, но не универсальное решение.

Контроль над специфичностью В самом общем смысле задача рассказов и игр состоит в том, чтобы не наскучить читателю или игроку, постоянно удивляя их чем-то новым и неожиданным. Это вызов для процедурных систем, которые неизбежно связаны с повторением и склонны к созданию однородного контента – того, что Кейт Комптон обозначила как проблему 10 000 тарелок овсянки. Лучший способ снизить риски – убедиться, что вы контролируете степень «процедурности» вашего контента и что вы планируете контент с несколькими уровнями специфичности. Может быть, все ваши основные миссии написаны вручную и могут похвастать очень специфичным содержанием. Но даже если ваши побочные миссии по большей части генерируются, не забудьте добавить к ним несколько написанных вручную, чтобы добиться разнообразия. Избегайте создания полностью процедурного контента или слишком большой ставки на процедурные элементы в вашей игре. Так обычно прорабатываются выкрики со стороны NPC. Вместо того чтобы позволить игре выдавать каждый голос рандомно, разработчики голоса ИИ и авторы реплик присваивают им разную значимость, так что уникальные голоса раздаются реже и выделяются в ряду однотипных. Ключ в том, что на фоне менее выдающихся, повторяемых голосов, сливающихся в общий гул, уникальные реплики более заметны.

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

Принципиально новый способ создания контента  57 часто включает в себя отказ от прямого контроля со стороны создателей контента и замену его косвенными правилами и системами. Вполне понятно, что это может вызвать беспокойство: инструменты, на освоение которых вы потратили время, заменяются новыми инструментами, которые работают очень по-разному. Однако новые инструменты зачастую не так сложны, как старые. Кроме того, в отношении процедурного содержания следует отметить, что интеграция и ход работы в разных случаях различны. Нормальное, статическое содержание – скажем, трехмерные модели скал – почти не имеет взаимозависимостей. Скалы можно моделировать в любой последовательности, работу можно поделить между членами команды произвольно. Это линейный процесс с точки зрения планирования. После того как вы выполнили 30 % работы, 30 % уже в игре. Кроме того, каждая скала может быть легко интегрирована и видна в игре. Совсем иное дело – когда при программировании слишком значимы взаимозависимости и процесс работы нелинейный. В таких случаях, даже если сделано 90 % работы, ничего не видно и не работает. Вот почему управление проектами для программного обеспечения – задача не из легких. Процедурное содержание сочетает тот и другой подход. Вы можете создавать системы, которые видны сразу, но производят однородный контент. Или весь контент уже есть, но систем, которые его используют, еще нет. Настройка алгоритма или добавление некоторых данных может полностью изменить игру. Прогресс и наглядность зачастую гораздо более нелинейны, чем в случае с непроцессуальным контентом. Это может привести людей в замешательство и требует соответствующего управления. Процедурные подходы – принципиально иной способ разработки игр, и они неожиданным образом меняют традиционные рабочие процессы. Разработка способов концептуализации, измерения и оценки процедурной работы жизненно важна. Недостаточно рассмотреть, что делает игра во время выполнения; не менее важно спроектировать творческий процесс, который команда использует для разработки игр процедурно. Грейбоксинг (grayboxing) и метрики для геометрии уровней теперь являются общепринятыми методами. В нашей отрасли разработаны рабочие процессы для объединения художественной части и геометрии в гейм-плее. Но каковы эквиваленты игр, в которых интенсивно используются процедурные методы? Какие инструменты и рабочие процессы нужны создателям контента для тестирования своей работы во всех соответствующих контекстах? Какие метрики понадобятся, чтобы проверить, что мы сделали достаточно контента или, по крайней мере, подготовили контент правильного типа? Пока в этом направлении наша индустрия движется медленно, и путь предстоит долгий. То тут, то там изобретаются новые подходы, которые будут распространяться и после нас, но пока что это остается важнейшей проблемой, которую нельзя недооценивать.

58

 Глава 4. Адаптация контента к выбору игрока

Широкая картина На более высоком уровне процедурное повествование нельзя рассматривать как обычную техническую задачу. 3D-рендеринг – это вопрос техники: как мы можем выполнить рендеринг таких-то моделей более эффективным способом? Процедурное повествование – это не одна четко определенная проблема; это тысяча разнонаправленных векторов. Это искусство, а не наука. Вы не можете взять и «решить» задачу игрового повествования. Большинство методик развития сюжета, которые человечество нарабатывало на протяжении тысячелетий, предназначено для неинтерактивных сфер или, точнее, для сфер, где мы четко контролируем время, пространство и особенности восприятия аудиторией. Это предполагает различные художественные приемы, например для создания напряженности, а также стратегию обдумывания и развития историй. В играх все это срабатывает лишь отчасти, потому что игрок может делать выбор, который влияет на результат, время в играх обычно движется непрерывно, движение в пространстве определяется выбором игрока, а также потому, что игры – это набор систем и возможностей. Используя проверенные временем методы повествования, мы можем преподнести события так, чтобы гарантированно вызвать сильные эмоции. Достижение подобных целей в игре приводит нас к таким понятиям, как ветвление и нелинейность. Это нисходящий подход к повествованию в играх: дробление опыта игрока. Также мы можем создавать системы, из которых вырастают конфликты и другие интересные ситуации. Это подход снизу вверх: имитация элементов, составляющих историю. Однако мы еще не научились делать так, чтобы подходы «сверху вниз» и «снизу вверх» работали вместе. Восходящая симуляция не порождает эмоционального опыта нисходящего повествования; нисходящее повествование не столь динамично, как симуляция. Несколько лет назад я шутил, что три основных инструмента повествования в играх – это кат-сцены, невидимые коробки и повествование через окружение (environmental storytelling); но вскоре я понял, что это не шутка. Конфликт между нисходящим и восходящим – еще одна причина, по которой наиболее плодотворный подход к процедурному повествованию предполагает объединение битов предварительно созданного, сгенерированного и системного контента на основе динамического контекста.

Глава

5

Этика процедурной генерации Д-р Майкл Кук, Лондонский университет королевы Марии

Когда вы делаете процедурный генератор, приходится позаботиться о массе вещей. Мой генератор когда-нибудь ошибется? Производит ли он много однообразных объектов? Сколько времени ему нужно, чтобы что-то сгенерировать? Иногда бывает так сложно заставить генератор работать, что само по себе его функционирование уже кажется огромным достижением. Размышления о том, что он будет производить, почему именно это и понравится ли зрителям результат, уступят место облегчению и удовлетворению, когда вы наконец увидите маленькие пещеры, стихи или истории, порожденные компьютерным разумом. Популярность генеративного ПО возрастает, и мы видим, что все больше людей использует генерирование множеством разных способов для множества целей. Это обнадеживает и вдохновляет, но вместе с тем нельзя не задуматься о более широком воздействии этой технологии на людей и общество. В данной главе мы рассмотрим этические проблемы, которые могут возникнуть при создании процедурных генераторов, и поговорим о том, что следует иметь в виду при создании вашего генератора. То, о чем пойдет речь, подойдет не каждому разработчику и не для каждого проекта, и вы можете не согласиться кое с чем из того, что мы предлагаем, но в любом случае чтение главы заставит вас по-новому взглянуть на процедурную генерацию и расширить свое представление об этой удивительной форме искусства. Попутно мы затронем некоторые довольно экстремальные области генерации и зададим несколько риторических вопросов: что можно позволить генератору, как мы должны его расценивать и в каком ключе он может проявлять себя.

Разговор в коде Процедурный генератор «утрамбовывает» множество различных идей и знаний в плотный набор правил и процедур. Каждый раз, когда мы запускаем генератор, эти правила и процедуры распаковывают части ин-

60

 Глава 5. Этика процедурной генерации

формации, которую мы ввели, и лепят из них нечто новое. Некоторые данные, сообщаемые нами генератору, чисто технические, и большая часть этой книги посвящена глубоким и сложным техническим вопросам, связанным с процедурной генерацией. Мы уже встречались с ними в главах о модульном проектировании и смешении рандомного с предсказуемым. Ряд задач носит эстетический или художественный характер. Процедурные генераторы выражают наши идеи о том, как должна быть устроена хорошая игра: как выглядит эффектное подземелье, как должна закончиться трогательная история и что делает цветовую схему красивой. Генераторы – маленькие цифровые ученики, которых мы сначала инструктируем, а потом доверяем им завершение нашего творческого проекта на экранах пользователей. Создание процедурного генератора чем-то сродни созданию произведения искусства – кое-что из того, что мы переносим на холст, проработано заранее, но есть и такие вещи, о которых мы не задумываемся. Иногда это могут быть просто ошибки. Когда мы настраиваем параметр максимального размера подземелий, мы, скорее всего, знаем, какие эффекты возникнут на выбранном нами уровне сложности или сколько времени займет игра, – это пример сознательного решения. Но есть много способов ввести случайные особенности в работу генератора, иногда неосознанно. И ничего удивительного: непросто такое осознать, поскольку многие генераторы довольно сложны и предназначены для создания огромного объема контента. Если есть что-то неправильное в системе, трудно ее отладить, не изучив перед этим тысячи и тысячи примеров. Давайте рассмотрим пример системы, в которой заложена неожиданная особенность. Предположим, мы создаем уровень RPG, в котором дело происходит на кладбище, и хотим, чтобы игрок мог читать рандомизированные надписи на каждом надгробии. Мы решили, использовать несколько простых шаблонов типа «Здесь лежит #NAME, дата смерти #YEAR». Наша система шаблонов знает, что #YEAR надо заменить случайным четырехзначным числом, а вместо #NAME подставить сгенерированные имя и фамилию. Мы тестируем генератор, и он отлично работает – случайные имена сопровождаются произвольными же датами. Однако это довольно скучная конструкция, и мы решили добавить еще одну надпись для супружеских пар, похороненных вместе. Она гласит: «#NAME и #NAME, вместе навсегда, #YEAR». В качестве задачки попробуйте представить – а возможно, и записать – варианты, которые могут быть сгенерированы по этому шаблону. Последний шаблон, пожалуй, поинтереснее, чем те, которые предлагали одно имя. Воспользуйтесь моментом и поразмыслите, как мы могли бы реализовать генератор #NAME. Вам не нужно думать об этом в терминах кода – представьте, как вы сделали бы это с помощью ручки и бума-

Разговор в коде  61 ги. В зависимости от того, как в нашем обществе регулируются брачные отношения, мы создаем два списка имен. Допустим, один список состоит из мужских, другой – из женских имен. Альтернативный подход – подготовить общий список имен, не предусматривая никакого деления. Вы могли и вовсе не задуматься об этом щепетильном предмете и создать общий список просто ради экономии времени. Но это решение, как ни крути, повлияет на надгробные надписи в вашей игре. Рассмотрим, что будет дальше. Предположим, мы используем два разделенных генератора имен для шаблона супружеских пар и создаем одно или два надгробия. И вот читаем что-то вроде: «Джек и Джейн, вместе навсегда, 2016». Вполне нейтральный вариант, и вы увидите не одну и не две подобных надписи. При этом варианты типа «Джек и Джон» или «Джейн и Люси» – пары имен, которые могли бы предполагать нетрадиционные отношения, – исключены. В связи с тем, как мы структурировали данные в нашем генераторе, кладбище теперь представляет игровой мир классического образца (с гендерной точки зрения). Прекрасно, если именно этого вы и добивались! Возможно, вы хотите показать игроку, что только гетеросексуальные пары имеют право на надлежащее захоронение в городе, и это значимая часть истории. Здесь важно не сообщение, отправляемое генератором (хотя, как бы то ни было, мы настоятельно рекомендуем подход с одним списком имен). Важно, осознаете ли вы как автор, какой смысл вкладывается в это сообщение, потому что до некоторой степени это ваше послание миру. Процедурные генераторы могут быть мощными инструментами – они усиливают наше сообщение в разы, если принять во внимание, сколько народу будет играть в игру, и учтите, что даже такой вот маленький эпизод с надгробиями может произвести эффект, которого мы сами не ожидали. Как мы можем обойти эти скользкие моменты или выяснить, где они могут появиться? Для решения такого рода проблем, которые создает структура наших данных или кода, достаточно одного хорошего правила: никогда не вводить различия, которые ничего не значат в вашей игре. Если категория гендера не влияет на вашего игрока или игровую механику, нет никакого повода использовать эту категорию в принципе. Чем больше переменных вы вводите, тем больше вероятность, что произойдет нечто незапланированное. Поэтому, если что-то необязательно определять в коде, безопаснее не иметь с этим дела. В целом, однако, нет каких-либо жестких правил, которые позволят исключить любые просчеты. Видеоигры – это сложные произведения искусства, объединенного с технологией, и отчасти их прелесть в том, что в них появляется нечто непредвиденное. Самое лучшее, что вы можете, – всегда думать о том, что вы делаете, стараться взглянуть на это критически и быть готовыми исправить ошибки, если таковые нашлись. Каждый, кто

62

 Глава 5. Этика процедурной генерации

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

Выход в необъятный мир В большинстве случаев генераторам не нужно много знать о реальном мире, чтобы делать свою работу. Генератор уровней Spelunky не должен ничего знать о том, как образуются пещеры, кто такой Индиана Джонс и где, скорее всего, спрячется собака, если она застрянет под землей. Все, что ему нужно, – это многоуровневая структура и правила соединения блоков, на основе которых строятся уровни. Подробности о генерации пещер Spelunky изложены в главе 2. Иногда нам нужно, чтобы генераторы содержали чуть больше информации и знаний. Возможно, мы хотим, чтобы наш генератор рецептов присваивал себе имя – произвольное название какого-либо географического пункта, или сообщаем символические значения цветов генератору флагов. Независимо от того, что нами движет – то, что мы сами не располагаем такими знаниями или такое решение быстрее и гибче реализовать автоматически, – процедурные генераторы могут легко получать информацию из интернета или других источников, чтобы стать умнее и мощнее. Один из способов «обучить» генератор – использовать статические базы данных знаний наподобие «Википедии» для получения информации. Argument Champion, игра 2012 года об участии в дебатах, использовала онлайн-ресурс ConceptNet для создания контента. ConceptNet – это хранилище данных («фактов»), предназначенных для использования программными средствами, особенно программами искусственного интеллекта. Некоторые данные вносятся в базу вручную, другие же автоматически собираются с других сайтов и форматируются для удобства использования. Результаты могут показаться довольно впечатляющими, особенно на первый взгляд. Введите «cat», и ConceptNet расскажет вам, что кошки способны охотиться на мышей, что у них есть четыре лапы и усы, что они любят играть и пить молоко. Данные представлены парами понятий, связанных отношением: например, «кошки» и «усы» связаны отношением «наличие». Argument Champion использует эту особенность для смены темы, что позволяет перевести дискуссию со школ на компьютеры, с компьютеров на клавиатуру, а с клавиатуры на фортепиано. Возможно, вы заметили, что в последнем случае несколько меняется значение слова: одно дело – клавиатура для набора текста, другое – деталь клавишного инструмента. ConceptNet грешит тем, что частенько путает понятия (дворник – это человек, убирающий двор; «дворники» – это средство очистки лобового стекла). Если в вашей игре используются подобные

Выход в необъятный мир  63 связи, игрок может заметить, что иногда они кажутся абсурдными, а с другой стороны, это-то и интересно. К сожалению, этим изобретательность ConceptNet не исчерпывается. Если вы наберете слово «женщина», один из «фактов», которые вы получите, – «женщины – шлюхи». Argument Champion может и не прийти к этой связи, но другая игра, использующая ConceptNet, вполне может выдать такую ассоциацию, и большинству игроков это, мягко говоря, не придется по вкусу. Кто-то может всерьез обидеться, как если бы вы, автор игры, произнесли бранные слова вслух. Мы, люди, поневоле проникаемся мыслью о том, что программное обеспечение разумно, ожидая, что оно будет вести себя подобающе. Когда мы видим игру, ловко выстраивающую ассоциации между компьютерами и клавиатурами или кошками и молоком, у нас возникает ложная уверенность, что программа понимает смысл слов. В итоге, когда происходит сбой, мы не расцениваем его как ошибку компьютера, а воспринимаем происшедшее так, как если бы программа специально решила нас поддразнить. Это говорит о том, что и разработчики, и дизайнеры должны очень тщательно продумывать каждое возможное действие системы. Один из подходов, который может решить некоторые из этих проблем, – использование списка запретных слов. Дариус Каземи (автор главы  2), известный создатель твиттер-ботов, который проделал большую работу с генеративным программным обеспечением, поддерживает различные бан-листы, предназначенные для «отлова» слов, недопустимых к использованию. Эти списки часто разрабатывают с излишними предосторожностями, исходя из того, что лучше случайно отфильтровать лишнее, чем не отфильтровать необходимого. Одного крупного просчета, как правило, достаточно, чтобы кому-то на весь день испортить настроение. Бан-листы отлично подходят, если вы работаете с текстом: они обеспечивают фильтрацию вывода вашего генератора, а следовательно, могут поймать ошибки в генераторах, которые вы, вероятно, не могли просчитать. Оригинальная Elite, выпущенная в 1984 году, располагала генератором имен для звездных систем, который создавал небольшие буквосочетания, из которых потом составлялись длинные слова. Разработчики потратили некоторое время на настройку этой системы, чтобы убедиться, что она не генерирует ничего грубого – и здесь бан-лист очень полезен, поскольку контролирует вывод даже самых случайных слов и строк. Но это не панацея, и данные из внешнего мира могут быть реальным источником опасности при построении экспериментальных процедурных генераторов. Чтобы вы поняли, почему, рассмотрим еще одну игру, которая, как и Argument Champion, использует онлайн-данные. Это Rogue Dream (рис. 5.1), которую я подготовил в 2013 году для семидневного сбора разработчиков, где предстояло обсудить игры-рогалики.

64

 Глава 5. Этика процедурной генерации

Рис. 5.1. Скриншот Rogue Dream, где игрок управляет кошкой

Принцип, лежащий в основе игры, довольно прост: в самом начале игрок вводит существительное, и игра процедурно генерирует тему так, что главным персонажем игры становится названный объект. Так, например, если игрок вводит «cat», то впоследствии управляет движениями кошки: она должна избегать воды, поедать траву, искать картонные коробки, при необходимости царапаться и спать. И все это стало возможным благодаря так называемой «выжимке из Google», методу, придуманному исследователем Тони Вилом (Tony Veale). «Выжимка из Google» использует обратный инжиниринг языка запросов для получения информации о мире. Когда кто-то спрашивает Google: «Почему врачи носят белые халаты?» – вероятно, здесь уже заложена какая-то истинная информация. Цель спрашивающего – выяснить причину, по которой врач носит именно белый халат, но сам этот факт считается не подлежащим сомнению, так что мы можем извлечь из вопроса его фактическую часть и использовать ее как истинное знание о врачах. Чем больше людей задает вопрос, тем больше вероятности, что заложенные в нем сведения неоспоримы; но как мы узнаем, какие вопросы задают чаще всего? Об этом нам сообщит автозаполнение Google, ведь оно по умолчанию нацелено на выдачу самых популярных запросов. Поэтому, если мы набираем в Google фразу «почему врачи», выпадающие в окне поиска запросы содержат основные факты о врачах, интересующие людей. Почему врачи носят белые халаты? Почему врачи говорят «stat»?1 Почему 1

Stat – слово, которое англоязычные врачи используют вместо now («сейчас»); оно применяется в качестве директивы медицинскому персоналу во время чрезвычайной ситуации. Слово происходит от латинского слова statim, что означает «немедленно». – Прим. перев.

Что проглотил, то и выдал  65 врачи назначают стероиды? Наша игра может не знать ответа на эти вопросы, но может использовать приведенные факты, чтобы лучше понять, что такое врач. Соответственно, если вы наберете «почему кошки не любят» в Google, то первым делом получите «купаться»; если вы наберете «почему кошки едят», то получите «траву» и т. д. Каждый из этих специализированных запросов используется игрой для создания целей персонажа, его способностей, а также объектов, которые он любит и не любит. Rogue Dream – это развлекательная игра, потому что, в отличие от многих баз данных, таких как ConceptNet, Google учитывает модные тенденции, повседневные наблюдения и сленг. Если игрок решит стать ниндзя, то будет сражаться с пиратами. Если он вздумал стать музыкантом, то его противником станет известный саксофонист Кенни Джи (Kenny G). Если игрок заделался нигилистом, то восстановление жизней в игре будет оформлено в виде мрачных туч. Но вы, возможно, уже учуяли здесь подвох. И действительно, не успела Rogue Dream набрать обороты, как начало твориться неладное. В то время как многие запросы реализовывались в самой невинной и забавной форме, другие таили в себе нечто скандальное. Если вы задаете слово «священник», то одной из ассоциаций, связанных с этим персонажем, становится «педофилия». Если вы набрали «мужчина», вашими врагами будут женщины. Если бы вы набрали «мусульманин», среди способностей значилось бы «убивать». Люди не обязательно вводят в Google нечто известное им по опыту, – они пользуются стереотипами, слухами, ложными суждениями, обсценной лексикой, увлекаются всевозможными теориями заговора и хуже того. Rogue Dream, неспособная провести различие между людьми, которые знают, что кошки едят траву, и людьми, которые думают, что французы ленивы, собирает всю информацию без разбора и использует ее как факт. Трудно расставаться с тем, что ты создал, и трудно признавать, что твоя идея плоха. Я чуть было не превратил Rogue Dream в развлечение для детей, с помощью которого они узнают, как работает процедурная генерация. Но за те недели, что я пытался отладить систему, улучшить ее «понимание», ограничить ее поисковые возможности или изменить ее назначение, стало ясно, что от проекта надо отказаться. Теперь он в основном используется в качестве примера того, как плохо могут себя вести процедурные генераторы с наилучшими намерениями. В конце концов, в этом тоже заключается полезный урок. Я надеюсь, что это лишний раз показало вам, как важно думать об этической стороне систем, которые мы строим.

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

66

 Глава 5. Этика процедурной генерации

ятное. Выше речь шла о реальных данных, которые мы могли бы найти и использовать в нашей игре – живых данных, таких как результаты Google, базы данных наподобие ConceptNet, – и о том, какие риски это влечет за собой. Точно так же опасно доверять пользователям контроль над контентом, который создает наш генератор. Вот пример не из области игр: Microsoft усвоила этот урок на горьком опыте в 2016 году, когда выпустила твиттер-бот Tay, который взаимодействовал с пользователями и перенимал у них всевозможные словечки. У Tay было много общего с процедурным генератором в игре: он создавал контент, который нравился людям, мог разумно дробить и переставлять данные из каталога данных. Но Microsoft решила, что Tay должен теснее взаимодействовать с пользователями и «поумнеть» настолько, насколько можно. Поэтому Tay позволили учиться у людей; с ним общались. Результат оказался совершенно неожиданным (хотя, может быть, вы сочтете его закономерным): Tay легко освоил все, чем его напичкали – от площадной брани до бессмыслицы. Tay закрыли через несколько часов после запуска, а разработчики и дизайнеры получили лишний повод поразмышлять о том, как создавать системы, которые учатся у людей. Может показаться, что для нас пример Tay не показателен, но ряд тенденций в дизайне и разработке игр наводит на мысль, что роль игрока в дальнейшем будет усиливаться. Такие игры, как Stellaris, имеют встроенные инструменты модуляции, которые позволяют игрокам редактировать, загружать и передавать списки данных для внутриигровой процедурной генерации; а это значит, что процедурный генератор игры частично настраивает кто-то, чьи представления о ее контенте совсем не совпадают с авторскими. Конечно, в случае моддинга игрок имеет возможность выбирать, что устанавливать, а что игнорировать. Но другие тенденции  – например, получение игрового ввода из сообщений чата на потоковых сервисах, таких как Twitch – открывают в игре возможности непредсказуемого, трудного для фильтрации ввода со стороны множества людей. И эти входные данные, вероятно, будут куда более проблемными для генеративной системы, чем в случае с Tay в Твиттере. Получение информации от пользователей может создать гораздо более интересный и разнообразный контент: они могут привнести долю живого творчества в жестко ограниченную систему и обеспечить «персонализацию» генератора, так чтобы он был уникальным для конкретного игрока. Но мы всегда рискуем столкнуться с худшей стороной человеческого разума, и разгребать последствия будет совсем не сладко. С другой стороны, наличие опасностей на этом пути не означает, что мы не должны даже пытаться экспериментировать и анализировать, какие новые системы и игры мы можем построить. Просто нужно осознавать, что проблемы существуют, и делать все возможное для разработки таких систем, где всякое вредное влияние будет нейтрализовано.

Не просто слова  67 Один из путей минимизации рисков заключается в ограничении способов ввода информации в генератор. Если нашему генератору можно давать строки текста, то вместо того, чтобы разрешить пользователям абсолютно свободный ввод, мы можем ограничить их словотворчество комбинациями из заданного ряда слов – к примеру, из нескольких сотен. Если генератор использует картинки, мы можем настроить пользовательский ввод на комбинацию фигур, но не позволять людям рисовать что вздумается. Пользователи всегда будут пытаться обойти любые запреты, но несколько ограничений существенно облегчат вам жизнь и сделают ваш генератор безопаснее. Прежде чем перейти к следующему разделу, вернемся ненадолго к бедняге Tay, который хорошо объяснил нам, почему информация, изложенная в этом разделе, важна и как она может повлиять на вашу игру. Одна из причин, по которой пользователи так обозлились на Tay, заключалась в том, что когда программа начинает себя плохо вести, люди, которые с этим столкнулись, меньше всего задумываются, кто научил ее такому поведению. Они фокусируются только на том, что делает программа. Если наш генератор начнет производить оскорбительный или иной нежелательный контент, люди не будут винить чат в Twitch – они скажут, что генератор плох. Это абсолютно разумная реакция, и она лишний раз убеждает нас: мы в ответе за то, что мы делаем, с кем мы позволяем «общаться» генератору и в чем мы ограничиваем это общение.

Не просто слова Большая часть этой главы была посвящена тому, что может пойти не так с нашим программным обеспечением. Его можно научить плохому; оно само может изрядно начудить, а может, например, распространять идеи (как хорошие, так и плохие) весьма широко. Конечно, мы, как разработчики, несем ответственность за то, что делает наша программа. Но иногда мы отвечаем еще и за то, как преподнести информацию о наших процедурных генераторах, поэтому, прежде чем вернуться от вопросов этики к техническим и эстетическим аспектам, давайте немного подумаем, как мы рассказываем о своей работе широкому кругу лиц. Продвигать игры – да и не только их, по правде говоря, – действительно трудно. Даже если речь не идет о прибыли, заинтересовать людей в вашей продукции очень непросто. Разработчикам обычно многое советуют в плане того, как продвигать игры: объясняют, с кем они должны говорить, о чем и в каких выражениях. Даже если вы никогда не читали ничего об искусстве маркетинга, вы, вероятно, подметили нечто общее в том, как производители преподносят свои игры и что пишут на упаковке. Важно обозначить самую суть, сосредоточиться на наиболее важных моментах и подчеркнуть, что делает вашу игру особенной. Что отличает ее от других? В чем ее изюминка, и о чем стоит говорить?

68

 Глава 5. Этика процедурной генерации

Процедурная генерация по-прежнему является значительным преимуществом видеоигр. У Steam даже есть специальный тег, посвященный ей, и многие кураторы рекомендуют игры исключительно из-за присутствия процедурной генерации; игры с генераторами пользуются популярностью уже очень давно. «Сердце Diablo – это случайно созданное подземелье, – гласит самая первая страница оригинального документа дизайна Diablo, – и оно обеспечивает новый игровой опыт каждый раз, когда кто-то играет в Diablo». Может показаться, что в наши дни процедурной генерацией может похвастать масса игр, но люди по-прежнему очень трепетно к ней относятся. Так что вполне естественно упомянуть о ней, когда речь заходит об играх. Однако легко увлечься, рассказывая, какие прекрасные вещи вы создали и как ими гордитесь. Поэтому, говоря с неискушенным слушателем о процедурных генераторах, мы порой волнуемся и чересчур эмоционируем, не думая о смысле слов. Давайте вернемся на секунду к фразе из проектного документа Diablo: «Новый игровой опыт каждый раз, когда кто-то играет в Diablo». Что это на самом деле означает? Означает ли это изменение игровой механики? Если вы играли в Diablo, то знаете, что это далеко от истины: вы нажимаете на зомби и произносите заклинания независимо от того, что происходит вокруг. Означает ли это, что уровни меняются? Ну, вроде бы да. Они по-разному оформлены и расположены. Конечно, вы не можете сохранить уровень и пройти его повторно. Но вы всегда идете в одни и те же места – одни и те же пещеры, одни и те же деревни. Они разные с виду, но одинаковы по сути. Это может звучать несправедливо по отношению к Diablo, ведь мы-то понимаем, что разработчики подразумевают под «новым игровым опытом». Это одно из многих клише, используемых в отношении процедурной генерации: «безграничный гейм-плей», «бесконечная воспроизводимость», «бесконечное разнообразие». И все эти фразы описывают алгоритмы, которые обеспечивают «новизну» примерно в том же роде, в каком «обновляет» карточную игру перетасовка карт и очередная их раздача. Со временем мы настолько привыкли к этим стандартным маркетинговым утверждениям, что воспринимаем их на автомате – интуитивно предполагая, о чем идет речь. И нам совершенно невдомек, как эти слова воспримет человек, который услышал их впервые. Полагаться на то, что люди «знают, что мы имеем в виду», когда говорим о нашей работе, чересчур опрометчиво. Игроки со временем выучат все ваши штампы, но когда вы адресуете свои обещания новичкам, то раз за разом вводите их в заблуждение. Что еще важнее, как показывает эта книга, новые идеи приходят из мира процедурной генерации каждый день. Когда вы попытаетесь объяснить или продать эти идеи людям, вряд ли найдется кто-то, кто поймет вас с полуслова. Вам надлежит задуматься о том, как люди воспринимают вашу работу и чего ожидают, покупая игру.

Не просто слова  69 Хороший пример – использование понятия «уникальности» в отношении того, что создает процедурный генератор. Многие разработчики пытаются подсчитать, сколько разных пещер и предметов есть в их игре, и с помощью этих цифр стремятся показать, насколько мощен их процедурный генератор. В 2009 году производители шутера Borderlands с гордостью заявили, что 17,5 млн пушек в игре являются ключевой частью маркетинговой кампании – благодаря этому игра даже попала в Книгу рекордов Гиннесса. Но если мы сделаем копию пистолета в игре и отметим, что он наносит урон на одно очко больше, чем другой, большинство игроков не заметит большой разницы, кроме как в техническом, самом формальном смысле. И даже если бы мы существенно увеличили урон во втором случае, чем-то эта ситуация напоминала бы пещеры в Diablo – да, пистолеты отличаются друг от друга, но не уникальны. Подробнее о том, что можно считать уникальным, рассказывается в главе 1. Почему такие маркетинговые трюки неэтичны? Мы не то чтобы откровенно врем, но оставляем себе лазейку – чересчур обтекаемо говорим об игре. Это, вероятно, обусловлено той волной положительных эмоций, той любовью, которую разработчики питают к своей игре. Однако, когда мы пытаемся впечатлить кого-то гигантскими цифрами, ему приходится самому угадывать, какой процент из этих многочисленных объектов вызовет подлинный интерес. Если люди знакомы с процедурной генерацией в играх и ее ограничениями, они, вероятно, все поймут как надо! Но если они менее опытны или вы предлагаете что-то новое, у них больше шансов обмануться. Разумеется, это не значит, что мы должны относиться к своей работе сухо и беспристрастно! Это просто означает, что мы должны тщательно выбирать выражения, в которых мы о ней рассказываем. Зачастую это не более сложно, чем перевод с одного языка на другой. В Spelunky игра говорит вам: «воздвигаются стены пещеры», пока генерируется новый уровень. В этой незначительной фразе заложено все, что вам нужно знать: создается уровень, который нельзя назвать принципиально новым, но он отличается от того, который вы только что прошли. Это не обещает слишком многого и вполне адекватно отражает суть игры. Другой подход заключается в том, чтобы высветить по-настоящему важные умения вашего генератора. Делать ставку на миллионы пушек или миллиарды уровней по большому счету не имеет смысла – среднестатистический игрок, скорее всего, увидит лишь несколько тысяч. Так что же делает наш генератор крутым? Что он делает такого, что заставляет нас улыбнуться или захотеть взглянуть на другие его творения? Может быть, в действительности он производит много шлака, но именно на фоне этого шлака приобретают особую ценность нестандартные артефакты. Вместо того чтобы скрывать этот факт, мы можем его использовать в своих целях и построить нашу игру на контрасте.

70

 Глава 5. Этика процедурной генерации

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

Наши перспективы Что поистине прекрасно в работе над процедурной генерацией, так это то, насколько свежа и не исследована большая часть этой области. Хотя процедурная генерация игр развивалась в течение многих десятилетий, мы потратили немалую часть этого времени на повторение пройденного. Сейчас мы хорошо справляемся с тем, что осваивали вначале, но есть много вещей, о которых только предстоит задуматься, не говоря уж о том, чтобы их реализовать. Эта книга даст вам массу ценных идей и простор для экспериментов, а может быть, вдохновит на создание чего-то такого, что нам и не снилось! Наряду с понятным волнением первопроходцы испытывают и ответственность. Трудно ступать на неизведанную территорию. Это означает, что мы должны проявлять осторожность, чтобы исключить неприятные сюрпризы, быть готовыми думать по-новому и ломать старые традиции, если этого требует ситуация. К тому же все, что мы делаем, на что считаем важным обратить внимание, приобретет особое значение для тех, кто придет вслед за нами. Этические проблемы, рассмотренные в этой главе, по-настоящему важны, даже если сейчас они кажутся малосущественными, потому что, решая эти вопросы, мы зададим планку для новых энтузиастов процедурной генерации, которые идут нам на смену. Каждый читатель вправе судить, насколько пригодится ему материал этой главы, – с чем-то соглашаться, что-то отвергать. Но что действительно значимо, так это то, что вы задумались об этих вещах, попытались понять, насколько они ценны и как это повлияет на вашу работу. Я надеюсь, что вы вспомните о некоторых из них, когда будете изучать следующие главы книги и строить свои собственные генераторы.

Часть

II Структура и системы

Любое повествование представляет собой сложную структуру, выстроенную по правилам грамматики и стилистики и в конечном счете формирующую смыслы через описание событий и поведения героев, отражение причинно-следственных связей. Как же обучить машину всем этим правилам? Как добиться требуемой сложности и избежать примитивизации при добавлении программируемой логики? Каковы наши цели при этом? В этом разделе предлагается ряд подходов к проблеме с разных сторон  – начиная с ретроспективного взгляда (что можно считать первым значимым процедурным нарративом в играх) и заканчивая серией исследований, показывающих, как различные системы могут определять эмоциональный заряд повествования. Мы не знаем, какие процедурные повествования вы пытаетесь структурировать и каковы ваши цели, но, дабы ободрить вас, сообщим: существует почти столько же структур и философий, сколько дизайнеров работает в нашей области. Нет ни одного метода, который доминировал бы в процедурном нарративном дизайне на данный момент. Поэтому воспользуйтесь теми приемами и принципами таксономии, которые вы найдете для себя полезными, и воспринимайте их как призмы, через которые вы можете при необходимости рассматривать свое творчество.

Глава

6

Ретроспектива: Murder on the Zinderneuf (1983) Джимми Мейер, автор блога об истории цифрового мира

Мистические сюжеты были доминантой приключенческих игр, начиная с 1978 года – даты выхода Mystery Mansion. Это неудивительно: ни одна другая жанровая разновидность традиционной литературы не открывает столь очевидных возможностей игрового взаимодействия читателя с писателем и, таким образом, не развивает достаточной гибкости, чтобы приобретать самые причудливые формы. Подобная способность к трансформации наметилась задолго до компьютерного века: вспомним, например, «Книги чудачеств» (Baffle Books) 1920-х годов, серию «Досье преступления» (Crime Dossiers) Денниса Уитли (Dennis Wheatley)1930-х годов и не теряющую популярности настольную игру Cluedo 1949 года. Самые ранние компьютерные игры с элементами мистики усвоили поверхностные приемы классической мистической литературы, но переняли мало содержательного. Mystery Mansion (1978) и Mystery House (1980), по сути, были стандартными приключенческими играми о поисках сокровищ, полными лабиринтов и статических головоломок, которые произвольным образом вкраплялись в мистический сюжет. А вот текстовый приключенческий квест Deadline 1982 года от компании Infocom представлял гораздо более серьезную попытку запечатлеть дух и сущность классических мистических историй, чем простое трюкачество. Концепция игры основывалась на исследовании (и это оказалось бомбой!). Учитывая, что после переиздания старых головоломок и задачек из вышеупомянутого «Досье преступления», а также сложной настольной игры Sherlock Holmes: Consulting Detective интерес ко всему таинственному невероятно возрос, другие разработчики принялись осваивать жанр так же тщательно. Кто-то прорабатывал форму текстового приключения, кого-то привлекали альтернативные варианты. Например, в двух детских играх Snooper Troops от компании Spinnaker и двух играх, рассчитанных на взрослых, Mystery Master от CBS Software, синтаксический анализатор и одно сложное повествование были заменены

Наши перспективы  73 более случайным методом раскрытия преступлений. Каждая из этих игр содержит ряд коротких загадок, которые игроку предстоит разгадать, путешествуя по графической карте города и на каждом эпизоде выискивая подсказки с помощью управляемого меню интерфейса. Наивысший рейтинг достигается за счет быстрого раскрытия преступления с использованием минимума улик. Позже, вслед за Archon, имевшей огромный успех, появилась игра, которая приобрела известность как образец жанра freefall («свободное падение»), – Murder on the Zinderneuf (рис. 6.1). Это один из любопытнейших парадоксов: приключенческая игра, разработанная автором, который не слишком-то жаловал приключенческие игры.

Рис. 6.1

Джон Фримен (Jon Freeman) выступил с критикой традиционных приключенческих игр в своей статье, опубликованной в декабрьском номере журнала Byte за 1980 год, сравнивая жанр и его ограничения с CRPG – тем самым форматом, который он позже использовал в разработке автоматизированных симуляционных игр DunjonQuest. Приключенческая игра, говорит Фримен, настолько статична, что это вообще не игра. Это «загадка, которая, будучи однажды разгаданной, более не представляет интереса». Первое утверждение с течением времени утрачивало актуальность: были разработаны более динамичные и «отзывчивые» игровые миры, такие как Deadline; но со вторым утверждением трудно было спорить. Вопрос только в том, насколько это волнует вас как разработчика. Одно из возможных решений – создавать игры, которые потребуют одного прохождения, но настолько длительного, что игрок надолго задержится в игре, прежде чем переключится на другую. Еще более простой выход – просто сказать «ну и что», отметив, что никто не критикует другие виды искусства, например

74

 Глава 6. Ретроспектива: Murder on the Zinderneuf (1983)

литературу, за то, что единожды прочитанную книгу не тянет перечитывать вновь и вновь (творения Шекспира не в счет). Но все же приключение (или, если угодно, книга), к которому хочется вернуться, при прочих равных лучше игры (книги), которую оставляешь раз и навсегда. В конце концов, в начале 1980-х годов игроки покупали игры (мы говорим о честных и добропорядочных гражданах!) по ценам, которые по нынешним меркам кажутся фантастическими – если учесть, что сейчас в цену закладываются сложность и объем контента; игра за 0,99 долл., доступная в App Store, сегодня несет в себе больше информации, чем большинство коробочных изданий игр уровня AAA за 30 или даже 40 долл. в начале 1980-х годов. Все эти соображения привели к созданию динамичной, повторно воспроизводимой игры Murder on the Zinderneuf, которая генерирует принципиально новую задачу при каждом прохождении. Фримен, который и поныне упоминает Cluedo в числе своих любимых игр, переработал концепцию этой игры на компьютере, чуть подробнее прописав подозреваемых, обстановку и произвольно генерируемые истории убийств, чтобы добиться результата, в большей мере отвечающего ожиданиям геймеров. Загадка может измениться, но обстановка, герои, сырье для этих маленьких компьютерных драм неизбежно останутся прежними. К счастью, они прописаны весьма интересно. Действие происходит в 1936 году, в пору расцвета дирижаблестроения, предложившего миру один из самых романтичных, да и просто классных способов передвижения. Во время трансатлантического путешествия на борту немецкого дирижабля Циндернёйф (название вымышлено) совершено убийство. Кто из 16 пассажиров убит, кто совершил убийство и почему, – эта история каждый раз генерируется заново. В целом жанр настольных ролевых игр в стиле «криминального экшена» показал нам, что 1930-е годы – прекрасное время для интриганов и смельчаков, и в Zinderneuf это хорошо обыграно. Фримен и Райхе (Reiche) работали во многих проектах, отсылающих к той эпохе: старый Голливуд, боевики, Берлинская Олимпиада, Гражданская война в Испании, мафия, Амелия Эрхарт, спиритизм, предприимчивые археологи (Raiders Of The Lost Ark все еще пользовалась огромным успехом, когда авторы работали над игрой) и, конечно, коммунисты и нацисты. Это искристая, зажигательная версия истории. (Тем не менее либертарианец Фримен просто не может удержаться от резкости в адрес Франклина Делано Рузвельта, добавляющей кислинку во все это великолепие: «Рузвельт все еще предлагал свою собственную версию “хлеба и зрелищ”, ввергнув Соединенные Штаты во тьму беспрецедентной депрессии и войн аж на четыре срока своего президентства».) Сам Циндернёйф между тем оказывается идеальным местом для убийства в стиле «Восточного экспресса». Вам предстоит выбрать роль одного из восьми детективов, известных по литературе или телесериалам, – среди них Майк Хаммер, Мисс Марпл, Коломбо и, конечно же, Шерлок Холмс (рис. 6.2), – и у вас есть 12 часов на то, чтобы раскрыть

Наши перспективы  75 дело, прежде чем Циндернёйф приземлится в Нью-Йорке и все подозреваемые растворятся в воздухе.

Рис. 6.2

Эти 12 часов уложены всего в 36 минут игрового времени – да, это игра в реальном времени! Идея состояла в том, чтобы заменить 40-часовую приключенческую игру получасовой игрой, которую можно воспроизвести 100 раз. Также заменены текст и синтаксический анализатор с графическим дисплеем сверху вниз и интерфейсом, полностью управляемым с помощью джойстика (рис. 6.3).

Рис. 6.3

Игра начинается с рассказа о том, кто из персонажей был убит (краткая биография каждого изложена в руководстве к игре). И вот, как сказал бы Холмс (конечно же, в руководстве эта цитата не обойдена), игра началась! Вы собираете доказательства двумя способами. Прежде всего, вы можете обыскать каюты жертвы и любого из других пассажиров, собрать возможные улики.

76

 Глава 6. Ретроспектива: Murder on the Zinderneuf (1983)

В примере на рис. 6.4 видно, что убийца Освальда Стоунманна – скорее всего, брюнет (по умолчанию считается, что жертва была убита в своей каюте). Это сразу же сужает список подозреваемых до пяти. Следующий логический шаг – обыск кают этих пяти подозреваемых, где можно обнаружить следующие зацепки. Однако в конце концов понадобится приступить к допросу подозреваемых. К каждому из них можно применить свой подход (рис. 6.5). Игровой опыт подсказывает, какие подходы лучше сработают – все зависит от характера детектива и подозреваемого. Если детектив сделает мудрый выбор, то, возможно, получит ключ к разгадке (рис. 6.6).

Рис. 6.4

Рис. 6.5

Наши перспективы  77

Рис. 6.6

Если игрок определил, что подозреваемый по всем приметам мог убить жертву и имел для этого мотив (в игре, как ни странно, обойдены вниманием средства убийства), можно выдвинуть обвинение. Ложное или недостаточно обоснованное обвинение не приводит к завершению игры, но значительно снижает ваш «детективный рейтинг» в финале и не позволяет вам использовать персонажа, на которого пало подозрение, в качестве источника информации до конца игры. Если вы никого не обвинили на исходе 12 часов (т. е. 36 минут), вы получаете последний шанс выдвинуть обвинение при условии некоторого занижения вашего детективного рейтинга, прежде чем игра покажет вам настоящего убийцу. Здесь очень многое впечатляет. Рандомно сгенерированные случаи не уступают полковнику Мастарду (персонаж Cluedo) в гостиной с пистолетом. Большинство случаев даже не опирается на любовные треугольники, заезженную тему в мистических романах. Однажды я в ходе игры выяснил, что археолог Филип Уолкрафт убил юную Наталью Беренски, потому что он был в услужении у некоего безымянного существа со щупальцами и обязался принести в жертву девственницу! (Да, даже мифы Г. П. Лавкрафта просочились в эту дивную обстановку – возможно, это их дебют в компьютерной игре.) В другой раз оказалось, что прекрасная пилотесса и авантюристка Стефи Харт-Уинстон убила преподобного Джереми Фолмута, узнав, что по его милости ее любимый брат погиб в автокатастрофе много лет назад. В некоторых случаях речь идет о шпионаже (естественно, с отсылкой к реалиям той эпохи), шантаже и даже о вампирах. Чаще всего преступление отлично увязано со временем действия, обстановкой и личностью персонажей. Но несмотря на это, а также на простой интерфейс с джойстиком и на яркую графику, которая на самом деле намного лучше смотрится (по крайней мере, на Atari), чем в Archon, я не могу назвать Zinderneuf идеаль-

78

 Глава 6. Ретроспектива: Murder on the Zinderneuf (1983)

ной игрой. Отчасти проблема в том, что много дополнительной информации приходится вычитывать из руководства к игре. Первое время вы лихорадочно листаете страницы, пытаясь понять, кто есть кто, покуда часы зловеще тикают. Не слишком удачный расклад, далекий от идеала Трипа Хокинса (Trip Hawkins)1, делающего ставку на ПО, дружественное потребителю. К тому времени, как вы начнете разбираться в персонажах, генератор повествования уже покажет свои слабые места. Вы начнете угадывать, какие подсказки к какому результату ведут, и заметите повторение одних и тех же мотивов. При всей гибкости повествования в игре всего восемь основных историй, куда вкраплены остальные элементы. Шок от содеянного Волкрафтом значительно уменьшается после того, как вы во второй раз пришли к тому же заключению, только имя жертвы изменилось. Все эти ограничения, конечно, легко списать на жалкие 48 Кб памяти, которая отводится на игру. Тем не менее все это значительно меня утомило еще до того, как реализовалась фрименовская идея «сотни сценариев». Я также столкнулся с другими проблемами дизайна. Обнаружить их не так сложно, и на этом пути вас подстерегают закономерные разочарования. Сначала вы долго бродите в поисках кабины, заглядывая в каждый уголок, покуда игра не подаст звуковой сигнал, сообщая вам, что вы обнаружили ключ. Разговор с подозреваемыми временами тоже вызывает досаду. Большинство персонажей ответит только на один или два вопроса, прежде чем уйти; вам не разрешается снова вызывать их, не поговорив в перерыве с кем-то другим. Таким образом, игра превращается в занудную серию отступлений, наскоков и поиска правильных подходов, притом что только вы можете задать один-два вопроса главному свидетелю (или подозреваемому) за один раз. Ограничения памяти настолько душат диалог, что невозможно найти зацепку – как можно было бы сделать это в реальном разговоре, – и разобраться, почему ваш текущий подход неудачен и как лучше разговаривать с этим персонажем. Murder on the Zinderneuf предлагает увлекательную новую концепцию, но в конечном счете игра должна быть реализована так, чтобы увлекать и завораживать игрока, а вот с этим, как я подозреваю, автор не справился. Чтение инструкции и подробное изучение биографий персонажей затянуло меня чуть ли не больше, чем собственно игра. Zinderneuf – замечательный образчик аккуратно проработанной и, безусловно, интересной игры для кого-то вроде меня, жаждущего написать статью о том, как почти никто из разработчиков не пошел этой дорогой. Но, может быть, тому есть веские причины? Возможно, тех, кого игры в первую очередь интересуют как история, которую хочется прожить, больше порадует созданная человеком игра, которую можно пройти за 40 часов, чем сотня 30-минутных историй, сгенерированных компьютером. 1

Уильям Мюррей Хокинс III – американский предприниматель, основатель Electronic Arts, 3DO и Digital Chocolate. – Прим. перев.

Наши перспективы  79 Рискуя превратить Фримена в манекен, на котором я отрабатываю свою аргументацию, я бы хотел еще раз осмыслить его критический взгляд на приключенческий жанр. Я считаю, что дизайнеры, представляющие игры как некие системы жестко заданных и тщательно проработанных правил, часто снимают со счетов особенность приключенческого жанра, в большей степени опирающегося на художественный вымысел и живой опыт игры от лица главного героя. Возможно, доверив генерацию сюжета автоматике, автор игры – сознательно или бессознательно – использовал ее как способ исправить этот дисбаланс и отвести искусству гейм-дизайна (как некоей противоположности писательского ремесла) центральную роль. Действительно, генератор повествования в Murder on the Zinderneuf умен, но не настолько, как, например, Марк Бланк (Marc Blank), автор Deadline – и возможно, не настолько, чтобы оказать влияние на жанр, привлекательность которого кроется именно в искусстве повествования. Zinderneuf интереснее как система, чем как сюжетная игра, в то время как ее жанровая принадлежность подразумевает опору на сюжет. Вот как, во всяком случае, представляется дело любителю хорошо закрученной интриги. Это не значит, что Zinderneuf не предлагает ничего принципиально нового. Мы нуждаемся в накоплении негативного опыта так же, как и в создании шедевров, потому что любой опыт расширяет наши представления и дает пищу для размышлений новому поколению гейм-дизайнеров. Полная версия статьи: www.filfre.net/2013/02/free-fall-part-2-murder-onthe-zinderneuf.

Глава

7

Создание повествовательного импульса Джон Ингольд, Incel

Когда вы сомневаетесь, представьте, что в дверь входит человек с пистолетом в руке. Рэймонд Чандлер

Казалось бы, этой цитатой из книги Чандлера ни к чему начинать статью об игровом дизайне. Наша отрасль прекрасно усвоила это правило: на игроков уже на протяжении десятилетий из ниоткуда выпрыгивает безымянный враг. И все же игры не застрахованы от проблемы, с которой столкнулся Чандлер. Повествование несется под уклон: в один злосчастный момент все сдувается, интрига гаснет. В действии наступает пауза, и кажется, что вообще не происходит ничего особенного. Натан Дрейк смотрит в пространство. Лара Крофт поправляет бант. Подобно актеру, забывшему текст, игра впала в ступор и надеется, что игрок подтолкнет ее – так, что все пойдет своим чередом. Кинематограф благополучно избегает подобных моментов: благодаря монтажу темп повествования ускоряется там, где надо. Зритель обычно нетерпелив. Великий фильм, великая пьеса или великая игра – будь то футбол или God of War – должны быть захватывающими. Они овладевают нашим вниманием и держат нас не отпуская, пока мы не пройдем весь путь до конца. Мы хотим, чтобы сюжет покорил нас целиком – напряжением ли, бурными страстями или неразрешенной загадкой. Нам важно погрузиться в поток повествования с головой – чтобы увериться, что все происходит на самом деле и мы даже представить не можем, что будет дальше. Этот зрительский запал драгоценен, его трудно добиться и легко потерять. Проблема сохранения этого повествовательного импульса в играх осложняется факторами, которые Чандлеру не нужно было учитывать.

Вперед и только вперед  81 Игры построены не на неожиданности и росте напряжения, а на циклах и повторении. Игрок накапливает опыт, но в процессе прохождения игры не знает, что надо делать. И хотя во всякой истории присутствует тема риска и удачи, только в играх результаты успеха и неуспеха могут влиять на сюжет. Филип Марлоу не мог бы быть смертельно ранен противником, выскочившим в незначительном эпизоде. И он всегда в нужное время найдет записку, спрятанную в жестяной коробке из-под печенья. Более того, автор никогда не позволял Марлоу сдаться и опустить руки. В играх мы предоставляем игроку свободу действия, но это означает, кроме прочего, что он может делать совершенно непродуктивные вещи, терпеть неудачи, тратить время на бесплодные поиски и заходить в тупик. Так есть ли у нас надежда поддержать тот самый запал?

Вперед и только вперед В экшен-игре напряжение является ключевой частью опыта, и традиционно такие игры поддерживают темп продвижения игрока, пользуясь правилом кинематографа и позволяя двигаться только в направлении вперед. С виду миры этих игр кажутся открытыми: там могут встречаться побочные сюжеты и альтернативные маршруты, но на самом деле все коридоры этого лабиринта однонаправленны, даже если путь героя прерывают оползни, подъем на лифте, внезапное катапультирование и т. п. Игра гарантирует, что игрок всегда находится в движении и не имеет шанса сдать назад. В ряде случаев создатели игр ловко прибегают к многократному использованию уровней: комната, через которую вы уже пробегали, затопляется, или вам приходится с боем прокладывать себе путь из помещения, куда вы только что ворвались. (Если в игре производства Naughty Dog вы оказались в месте, окруженном стенами высотой по пояс, можно смело предполагать, что вас ждут проблемы.) Но независимо от того, является ли путь игрока линейным или циклическим, действие спланировано заранее, шаг за шагом, и разработчики игры потрудились над тем, чтобы в конце каждого этапа уже четко прорисовывался следующий – и желательно начинался без промедления. На другом конце игрового спектра сюжеты в духе choose your own adventure (CYOA, «выбери себе приключение»), в которых повествование играет особо важную роль, используют аналогичный однонаправленный подход; истории выстроены как направленные ациклические графы, сюжетные линии ветвятся и соединяются, но всегда ведут вперед (рис. 7.1). Это гарантирует, что игрок не собьется с пути: он всегда продвигается к финалу, хотя в большинстве случаев это предвещает напрасную гибель героя от лап разъяренного йети.

82

 Глава 7. Создание повествовательного импульса 1

CYOA #1: The Cave of Time

2 3

8

29 52

98

53

101

99

19

28

26

30

51

27

54

92

55

56

94

57

95 100

17

46

80

47

50

10

16

20

35

33

93

76

34

31

6 24 114

32

61

7 38

40 115

39

84

82

68

79

58

64

106

104

85

69

88

86

59

65

113

111

105

89

63

62

102

112

107

109

90

91

108

110

49

97

23

87

37

36

11

14

13

12

15

78

66

25

81 96

22

83

77

48 60

5

21

9 18

4

41

45

67 44

42

70

74

43

71

75

103

72 73

Рис. 7.1. Иллюстрация предоставлена С. П. Осборном, outspaced.fightingfantasy.net

Более сложные сюжеты книг Fighting Fantasy1 (авторы Ян Ливингстон (Ian Livingstone), Стив Джексон (Steve Jackson)) ветвятся в целях создания головоломок, а точнее, лабиринтов. Ключевая информация скрыта в затененных боковых отсеках, и для продолжения требуется ее найти. Чтобы свести к минимуму обходные маневры, эти секретные элементы часто шифровались, например: «добавить 7 к текущему номеру абзаца, чтобы использовать золотой ключ в абзаце, начинающемся со слова “красный”». Это привело к любопытному эффекту: те, кто увлекался серией Fighting Fantasy, часто читали эти книги в абсолютно произвольном порядке, лишь бы найти подсказки, которые позволят определить правильную последовательность повествования.

Открытие потока Создавая цифровой мир с развернутым повествованием, который не имеет опоры на экшен-фильмы высокого образца, мы можем воспроиз1

Серия ролевых книг для одиночного прохождения – интерактивные книги приключенческого жанра. – Прим. перев.

Открытие потока  83 вести структуру CYOA (сhoose your own adventure – см. выше), но результат может оказаться малоприемлемым. Продвижение только вперед, которое никогда не оспаривалось читателями книг Fighting Fantasy, в цифровой среде оказывается надуманным. Столкнувшись с выбором, пойти ли им направо или налево, игроки ожидают, что смогут исследовать один путь, вернуться назад и опробовать другой. Встреча с каким-либо персонажем наводит на предположение, что ему можно будет задать все интересующие вопросы, а не один на выбор. Но как только мы обеспечиваем возможность возвращаться назад – как это происходит в текстовых приключенческих играх, графических приключениях и играх с открытым миром, – а также использовать варианты диалогов, наше повествование безнадежно накреняется. Оно теряет свою ось, застывая во времени и обретая пространства, в которых из эпизода в эпизод ничего не происходит. Персонажи становятся механическими. Игра превращается из живого мира в музей восковых фигур. Эта проблема с течением времени только нарастает. Чем больше мест исследуют игроки, тем больше накапливается пустых зон: витрины магазинов без магазинов, библиотеки без книг, кузницы, где кузнец днем и ночью торчит у наковальни, бармены, которые усердно протирают все ту же кружку, надеясь, что игрок наконец позволит им вставить свою ремарку… («Немного эля? Я так и думал!») Пираты и другие неприятные типы сидят в однотипных барах, ожидая момента, чтобы сыграть в настольную игру – либо очень хорошо, либо очень плохо. Жители деревни в ужасе толпятся около лесного оборотня, но сами и пальцем не шевельнут, чтобы что-то сделать. Если бы можно было измерить повествовательный импульс, то следовало бы важность сцены («вес») умножить на темп развития событий («скорость»). Если мир построен как зеркало, где ничего не происходит, прежде чем игрок не возьмется действовать – не станет открывать двери, заглядывать в коробки, расспрашивать бармена, – такой мир имеет не больше «заряда», чем вкладывает в него сам игрок. Как же тогда мотивировать игрока? Очевидно, что ни одна игра не может предоставить нам бесконечное разнообразие – а временами и однообразие! – которое отличает живой, дышащий мир. Да так и быть не должно: мир вокруг игрока начинает пробуждаться к жизни, как жители Сихейвена в «Шоу Трумена», только когда игрок перемещается в центр. В конце концов, он же единственный живой человек в игре! Богатая симуляция или, скажем, вселенная, по большей части процедурно сгенерированная, может быть занятна с точки зрения написания кода, но не принесет стоящего игрового опыта, если игроку не предлагается что-то интересное. Итак, как нам обеспечить движение вперед, притом что у игрока на любом этапе есть целый ряд сиюминутных задач? И как сделать нелинейное

84

 Глава 7. Создание повествовательного импульса

повествование нескучным, если игрок, вынужденный действовать во времени, воспринимает его как линейное?

Дизайн языка Ink В Inkle (компании, создавшей сценарный язык Ink) мы преимущественно работали с текстовым контентом, производство которого в крупных масштабах достаточно дешево. Это позволило нам схитрить – не поступаться ни свободой, ни последовательностью. В игре 80 Days игрок обычно видит около 3 % из 750 000 слов игрового сценария за одно прохождение, и эти 3 % определяются исключительно его выбором. Направление движения можно обозначить так: «только вперед – в зависимости от того, что вы хотите». Центральная задача игры – провести Филеаса Фогга по всему миру за ограниченный период времени – в достаточной мере мотивирует игрока к тому, чтобы не отступать. А заодно гарантирует, что обход сценария – точнее говоря, отказ от рискованных приключений, уводящих в сторону, – сознательный выбор, подталкивающий игрока к следующему месту назначения и следующему соблазну сбиться с курса.

Структура плетения Оптимизация импульса в игре 80 Days не случайна. Под игрой находится движок Ink, который приводит в действие текст, – язык программирования на основе разметки, Ink специально разработан для того, чтобы вплетать направление «только вперед» в ткань языка. Основная структура, предлагаемая Ink,  – «переплетение»: блок текста и настроек с допущением «всегда двигаться вперед», интегрированных в рассказ. Вот, например, несколько сокращенная версия вступительной части в 80 Days: === Лондон=== - Месье Филеас Фогг вернулся домой (рано) из клуба "Реформ", да еще в новомодной паровой карете! * Я помог ему спуститься[], и железные управляемые паром лошади загрохотали, уносясь прочь. - "Паспарту, – сказал он, – мы отправляемся в кругосветное путешествие!" * {zany} "В кругосветное?"[] – спросил я в крайнем изумлении. * {dull} "Очень хорошо, месье[".]", – пробормотал я, пока еще не веря ни единому слову. - "Мы обернемся вокруг света за восемьдесят дней". Он был совершенно спокоен, когда излагал этот дикий план. – "Мы отбываем в Париж в 8:25. Через час". * {zany} Но я же не собрался![] – в отчаянии воскликнул я, быстро пытаясь сообразить, какие вещи взять в дорогу.

Контент как условные обозначения  85 "Тогда приступай немедленно. * {zany} "Вы шутите!"[] – сказал я ему несколько обиженно. – "Вы смеетесь надо мной, месье". "Я говорю совершенно серьезно. * {dull} "Ну конечно[".]", – ответил я, все еще терзаясь сомнениями. Он снова кивнул. "Хорошо. * И это говорит {dull:уезжать немедля | вот так поворот}[!] мой господин, который всегда был человеком твердых устоев и неизменной порядочности! Может быть, извергаемый каретой пар замутил его рассудок? ** "Не лучше ли вам прилечь, месье?" "Это была бы крайне неразумная трата времени", – неумолимо отвечал он." ** "В Париж, месье?" - "Для начала – да. - Уложи мой плащ и вечерний костюм. Нельзя терять ни минуты!" –> DONE

(Реальная игра включает дополнительную маркировку, меняя статистику персонажей, основанную на принятых решениях.) Чтение этих «плетеных» строчек требует некоторой практики. Скрипт начинается с верхней строки, откуда начинают ответвляться реплики, отмеченные звездочками. Каждый вариант содержит как текст на выбор (перед скобками []), так и весь абзац, который будет показан после соответствующего выбора. Дефис обозначает «точку сборки» после вывода вариантов, в которой ответвления сходятся снова, прежде чем будут показаны следующие варианты. Конструкция спроектирована так, чтобы предотвратить «подвисшие» варианты. Что бы ни выбрал игрок, движение идет в направлении сверху вниз – так что он движется вперед и по умолчанию всегда достигает конца.

Контент как условные обозначения В этом примере обозначены два варианта выбора: zany («забавный») и dull («унылый»). Метки необязательны, но если метка задана, ее можно будет запросить позже, чтобы включить или выключить новые варианты или изменить текст. Метки абзацев изначально использовались в качестве условных обозначений для удобства: это требует меньше типизации, чем определение и последующая установка логического значения, поэтому ветвление легче выполнять в масштабе. Но для такого дизайна характерны два существенных ограничения. Во-первых, условие метки абзаца может быть установлено только в одном месте скрипта. Во-вторых, после установки условный абзац нельзя снять. Следовательно, несмотря на то что в 80 Days разветвленный интерактивный скрипт больше, чем во «Властелине колец», если вы когда-нибудь

86

 Глава 7. Создание повествовательного импульса

захотите узнать, выбрал ли игрок вариант «забавный» в первом разделе игры, вы можете быть уверены, что «london.zany» будет проверять именно это и только это. Метки абзацев – это способ ветвления по умолчанию на языке Ink, и они, по сути, обеспечивают движение «только вперед»: накапливаются во время игры и не стираются.

Последовательности и петли Кроме того, параметры в Ink по умолчанию используются лишь единожды. В более открытых играх, например в серии игр Sorcery!, это эффективно используется для того, чтобы написать местоположение в качестве «концентратора» параметров, которые включаются после их обнаружения. Как только они приняты, повторить их уже нельзя. === Храм === {Храм Курги украшен прекрасными тканями, расшитыми золотом.|Ты снова в храме Курги.} В центре статуя Курги. - (варианты на выбор) * (посмотрите) [Посмотрите на статую] Изваяние Курги отражает представления о нем его адептов. Он огромный, довольный и добродушный{courga_has_trap:, если не считать, что во рту у него стрелы, напитанные ядом}. * (courga_has_trap) [Ищите ловушки] Вы изучаете стены и пол на предмет ловушек, но ничего не находите. Затем, стоя на крыльце, вы замечаете странное поблескивание во рту статуи. {look: Darts.} * {look && courga_has_trap} {pick_up_rag} [Засуньте тряпку в рот Курги] Одним быстрым движением вы прикрываете рот статуи тряпкой. Откуда-то из глубины доносится тихий /стук/. Стрелы вылетели – но вы в безопасности. // и т. д. + [Выйти] {Вы поворачиваетесь и выходите через двойные двери наружу.|Ты еще раз попрощался с Кургой.} -> outside_temple - (цикл) -> варианты на выбор

Связанный контент вверху указывает на контент, выводимый последовательно, поэтому при первом входе в храм игрок получает иное описание, чем при дальнейшем посещении. Опять же последовательности доступны в направлении «только вперед» и не могут быть сброшены! Структура концентратора представляет собой цикл: каждый выбор вызывает ответ, а затем спускается до точки «цикла», из которой движение

Повествовательный импульс в графическом контексте  87 направляется вверх, чтобы предложить еще больше вариантов, пока не будет выбран вариант «Выйти» (он помечен меткой «+», сообщающей Ink о том, что данный вариант может быть использован многократно.) Игроки могут разблокировать или не разблокировать важные действия в локации, могут пропустить важные элементы или информацию. Независимо от того, чего добивается игрок, он будет прорабатывать некоторые или все доступные ходы, пока не решит уйти или ему больше нечего будет делать. Движение вперед гарантировано.

Повествовательный импульс в графическом контексте Подход «только вперед» в отношении логики и структур по умолчанию в Ink определяет повествовательную структуру как в 80 Days, так и в Sorcery!. Повторное посещение одних и тех же мест, равно как и отступление, совершенно исключены в 80 Days и явным образом подталкивают игрока вперед в игре Sorcery! (если игроки посещают пустые локации, текст в лучшем случае сводится к одному предложению, а иногда и вовсе отсутствует). Обе игры активно борются с проблемой застревания игрока в одних и тех же местах, используя новые локации для обеспечения повествовательного импульса (вы встречаете их на пути) и свободы игрока (вы выбираете, куда идти). Как этот подход работает в более продвинутой графической среде, в которой производство контента дорого и новые локации не получится раздаривать игрокам щедро, как наклейки за домашние задания в начальной школе?

Heaven’s Vault В консольной игре Heaven’s Vault мы создали набор детализированных 3D-сред, которые игрок может разблокировать и исследовать в относительно произвольном порядке. В каждой среде игрок исследует местность, действуя примерно так же, как в Sorcery! В ранних прототипах повествовательного потока продвижение по игре было достаточно проблемным: игроку предстояло обрыскать комнату и найти все необходимые элементы, прежде чем перейти в следующую и повторить цикл. Наблюдать за игрой тестировщиков было не более интересно, чем следить, как робот-пылесос Roomba выполняет свою программу. Heaven’s Vault – археологическая приключенческая игра, и наше намерение состояло в том, чтобы игрок создавал предположения о том, что за локация перед ним и как она вписывается в игровой мир и сюжет, а затем проверял это на практике. (Археологи, по сути, те же детективы, с той только разницей, что они прибывают на место слишком поздно и им не удается счастливо свести в финале всех подозреваемых.) Все наши взаи-

88

 Глава 7. Создание повествовательного импульса

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

Знание как направленный ациклический граф Мы отталкивались от того, что знание проявляет себя в смутной, неявной форме и понемногу становится все более точным. Мы моделируем знание любого конкретного предмета как последовательность состояний, каждое из которых чуть больше детализировано, чем предыдущее. При этом используем два правила: 1) как только факт изучен, он уже не может быть забыт и 2) ознакомление с некоторым фактом автоматически означает, что все предшествующие ему факты становятся известными. Если бы мы использовали эту систему в игре 80 Days, то могли бы получить последовательность знаний, показанную на рис. 7.2.

Мы собираемся обойти вокруг света…

...за 80 дней…

... на спор?

Рис. 7.2

На начальном этапе игроки узнают о первом факте, но не знают о сроке и причине путешествия. Позже Фогг может упомянуть о сроке в 80 дней; это приводит к тому, что активизируется второе состояние знания. Однако вместо этого Фогг может опередить события и сказать вам, что поездка –

Знание как направленный ациклический граф  89 это следствие сделки (извините, месье, я имею в виду «пари»); в таком случае игра устанавливает третье состояние, а второе состояние достигается автоматически: условия пари становятся известными игроку без того, чтобы на это тратился отдельный диалог. Затем сценарий игры тестирует эту модель, используя «интервалы знаний», а не состояния знаний. Типичная строка в сценарии может быть такой: * {between(GOING_AROUND_WORLD, ITS_A_BET)} Я спросил месье Фогга, есть ли что-то особенное, что он захотел повидать в мире... * {between(GOT_80_DAYS, ITS_A_BET)} Почему восемьдесят дней, удивился я. Может быть, месье Фоггу нужно срочно вернуться в Лондон? Может быть, свадьба?

Эта проверка {between} (интервала между двумя точками) проводится в целях профилактики. Ее цель – выяснить, знаем ли мы достаточно, чтобы понимать суть, и адекватны ли наши знания (то есть не избыточны и не бессмысленны). Более того, это задел на будущее: если мы впоследствии добавим какие-то детали в нашу цепочку знаний – скажем, вставив между GOING_AROUND_WORLD («едем вокруг света») и GOT_80_DAYS («у нас 80 дней») состояние «мы путешествуем очень быстро», – ни одна из текущих проверок не должна измениться; все должно работать по-прежнему, как было задумано. Мы заботимся только о конечных точках интервала, а не о том, что находится в его пределах, так что детали могут меняться. В игре, конечно же, будет много параллельных цепочек, поэтому интервалы можно успешно тестировать, используя состояния более чем из одной цепи. Возможно, позже мы встретим в игре таинственного мистера Фикса из Лондона, который в нашем представлении вовсе не полицейский, а только притворяется таковым (рис. 7.3). MET_MONSIEUR_FIX

FIX_IS_A_POLICEMAN

Мистер Фикс… Monsieur Fix...

Полицейский… ...is a Policeman...

FIX_IS_A_LIAR

Нет! Он ...No! Heобманщик! is a liar!

Рис. 7.3

Затем мы могли бы объединить элементы этой цепочки знаний с предыдущей, чтобы создать тонкие нюансы в доступных вариантах выбора. * {between((TRAVELLING_IN_A_HURRY, MET_MONSIEUR_FIX), FIX_IS_A_POLICEMAN)} Я удивлялся, как это мистер Фикс успевал за нами [] и почему он так торопился. * {between((FIX_SAYS_FOGG_IS_A_THIEF, TRAVELLING_IN_A_HURRY), (ITS_A_BET, FIX_IS_A_LIAR))}

90

 Глава 7. Создание повествовательного импульса

Мой хозяин – вор?! [] Неужели именно поэтому мы так спешили – чтобы уйти от блюстителей закона?

Здесь очередное {between} принимает в себя несколько аргументов: первый набор состояний, которые должны быть истинными (минимальные требования), и второй набор состояний, ни одно из которых не должно быть истинным (условия избыточности). Гибкость проверки {between} также означает, что мы можем разделить длинные цепи на несколько более коротких, если по ходу игры выяснится, что один факт не обязательно подразумевает все те, что находятся за ним. Кроме того, отдельные факты (цепочки длиной 1) могут быть расширены, если выяснится, что факт может использовать чуть больше деталей, и такое расширение опять же не требует перезаписи или пересмотра каких-либо существующих проверок по сравнению с исходным состоянием.

«Паутина знаний» Цепочки знаний не обязательно должны быть полностью одномерными; они, как и книги в стиле choose your own adventure, на самом деле являются направленными ациклическими графами, ветвящимися, когда один неопределенный факт разделяется на несколько конкретных деталей, и вновь объединяющимися, когда еще какой-то факт синтезирует несколько цепочек данных (рис. 7.4).

Он дворецкий в клубе Reform! ... полицейский…

... Нет! Он обманщик!

Он собирается помешать нам! ... на спор?

Рис. 7.4

Здесь знание более позднего состояния подразумевает знание всех состояний, к нему ведущих; поэтому, если вы выяснили, что мистер Фикс на самом деле мошенник, это будет означать, что ваше путешествие затеяно на спор и Фикс не настоящий полицейский. (Если это больше того, что должно было бы подразумеваться, мы реструктурируем «паутину знаний».) В Heaven’s Vault у нас есть более 1500 состояний знания, разделенных примерно на 700 цепочек. Некоторые из них включают 10 состояний, не-

Использование модели знаний  91 которые содержат только одно состояние и представляют собой всего лишь булевы числа (но могут в любое время быть усложнены). Поддерживать такую структуру может быть сложно, но с учетом движения «только вперед» задача становится куда легче. Поскольку формирование структуры карты знаний  – это отдельный процесс, не связанный с написанием фактического контента игры, автор может в значительной степени игнорировать эту структуру в процессе работы. Для любой заданной темы сначала строится карта знаний, затем пишется интересный и актуальный контент и, наконец, отмечается, какому контенту какие факты сопоставляются и каковы минимальные и максимальные требования. Но эта оценка статична: нет нужды продумывать факты, порядок, причину и следствие!

Использование модели знаний При наличии такой системы знаний правила создания игрового контента для поддержания повествовательного импульса выглядят следующим образом: • Правило первое. Ни один диалог, действие или эпизод не допускаются в случае, если они не являются ни приемлемыми, ни избыточными (то есть текущее знание игрока находится в пределах между «состоянием разблокировки» и «состоянием награды»). Большинство локаций в игре предусматривает несколько состояний разблокировки и несколько состояний награды, поэтому они могут быть запущены в различных контекстах и с различными результатами. Поскольку каждая строка диалога тоже является закрытой, содержание разговора персонажей в эпизоде автоматически меняется в зависимости от того, какой триггер или комбинация триггеров запустили эпизод в первую очередь (и, конечно, от прочих важных факторов). • Правило второе. Каждый эпизод, а также существенная часть диалога должны обеспечивать какое-то продвижение вперед. На уровне эпизода это разблокирование вышеупомянутых состояний награды – значительные открытия, которые расширяют игру. На уровне отдельных фрагментов диалога это означает, что некие детали в модели знания, значительные или малосущественные, формируют некоторое новое знание. Правило номер один обеспечивает непрерывность и гарантирует, что игра на любом этапе дает игроку что-то стоящее. Правило номер два движет повествовательным импульсом. Если каждое действие в игре стробируется так, чтобы оно гарантированно перемещало какую-то часть модели

92

 Глава 7. Создание повествовательного импульса

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

Повествовательный импульс в диалоге Затем нужно убедиться, что в игре существует достаточно контента, чтобы охватить все состояния в модели знаний, так что игрок никогда не будет действовать впустую. Это может быть довольно грубая работа, но зато с невеликим риском; это всего лишь вопрос написания чуть большего объема контента с небольшим условием: чтобы один его фрагмент тщательно уравновешивал другой, так чтобы каждый отображался только в подходящих обстоятельствах. Это означает, что игру можно эффективно протестировать автоматически  – когда система случайным образом выбирает контент и подает сигнал, если на том или ином этапе игроку нечего делать. (Конечно, автоматический тестировщик не подскажет вам, что сюжет не имеет смысла; когерентность – это то, что может проверить только человек.) У нас все еще остается проблема поиска вещей игроком. Действия в игровом мире ограниченны – игрок может заглянуть только в определенное количество шкафов и включить определенное количество ламп. И, будем честны, выстрелить он тоже может только в нескольких врагов! А вот диалог персонажей – это интерактивное действо с гораздо меньшим количеством ограничений, и оно очень хорошо «запитывается» от модели знаний. Благодаря этому удалось решить нашу проблему с расхождениями в Heaven’s Vault. Мы внедрили специальную кнопку activeeverywhere для инициирования диалога, который использует сценарный контент исходя из того, что в настоящее время предлагает игроку его модель знаний. Игровой цикл, до сих пор напоминавший монотонную работу пылесоса Roomba, становится более интригующим. Игроки заходят в комнату и взаимодействуют с неким элементом, который подсказывает темы дальнейших диалогов – так что, направляясь к следующему пункту, уже можно поговорить с персонажами об увиденном или сделанном, делая новые выводы и поднимая новые вопросы в ходе разговора. Момент в игре, когда запал обычно гаснет – когда игрок исчерпывает возможности одного эпизода и ищет другую точку приложения сил, – теперь обретает притягательность. Это повод для обсуждения и размышления – мотив, который редко используется в играх, но знаком любому поклоннику Чандлера. При этом игрок по-прежнему полностью контроли-

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

Заключение Импульс, запал, который движет игроком, – это основное достоинство повествования. Он порожден напряжением, которое возникает между текущими событиями и тем, что вот-вот произойдет; в играх он оказывается важным тогда, когда ничего не происходит и игроки понятия не имеют, что делать дальше. Если ход игры полностью определяется движением в пространстве, игроки, которые застряли в одной точке и перестали двигаться, таким образом тормозят весь сюжет. Формализуя модель знаний, Heaven’s Vault создает вторую ось для надежного, измеримого поступательного движения, и оно остается значимым, даже когда игроки стоят на месте, ходят по кругу или просто на что-то засмотрелись. Ничто не помешает игрокам отложить контроллер и выйти из игры. Никто не гарантирует, что им понравится игра. Но мы можем и должны предложить им сделать еще один шаг, чтобы через некоторое время они могли обернуться и посмотреть, как далеко они продвинулись.

Глава

8 Управляющий нарратив в Duskers Тим Кинан и Бенджамин Хилл

Исследуйте, адаптируйтесь, выживайте Процедурный и написанный вручную контент в играх, как кажется, контрастируют. Процедурный контент по природе своей уникален для каждого игрока. Алгоритмическая генерация контента позволяет создать то, что мы называем «историей игрока»: уникальную историю о личном игровом опыте, которую игроки могут рассказать друзьям и посетителям игрового форума. Быть может, вы забыли закрыть воздушный шлюз и погубили половину экипажа в FTL или не смогли распределить провиант, а в итоге тронулись умом и съели весь экипаж в Sunless Sea, – сила личной истории игрока неоспорима и абсолютно уникальна. Поэтому-то интересно читать истории других игроков – вы хотите увидеть, насколько они похожи на ваши и чем отличаются. Эти сюжеты редко могут соперничать с великими фантастическими романами, но поскольку это ваша история, она и не ставит такой задачи. Ее уникальный характер придает ей значимость. Контент, созданный вручную, сам по себе может быть гораздо более убедительным, чем процедурно сгенерированный, если сравнивать их вне контекста. Подлинное искусство невероятно цепляет за душу – вот почему мы читаем книги и смотрим фильмы. Видеоигры интерактивны, и если они управляют действиями игрока так, что у него не остается выбора, кроме как следовать за написанным вручную контентом, это лишает игру уникальности и привлекательности. Работая над научно-фантастической игрой-рогаликом Duskers, мы знали, что будем использовать процедурно сгенерированный контент для создания истории игрока, которой мы придаем столь важное значение. Но мы с нашей писательской командой, имеющей опыт создания сильных историй, задались вопросом: можно ли привнести сильные стороны контента ручной работы в Duskers, не лишая игроков их уникальной истории? Прежде чем ответить на этот вопрос, мы, вероятно, должны разъяснить, что такое Duskers. В этой игре вы пилотируете дроны в заброшенные

Порядок имеет значение  95 космические корабли, чтобы найти средства для выживания в условиях, когда вселенная погрузилась в хаос. Всякий раз, когда вы посылаете отряд дронов в опасную разведку, им открывается совершенно новая процедурно сгенерированная вселенная. Игра создает ощущение полной изоляции, когда вы направляете дроны в эти гробницы, используя интерфейс командной строки, напоминающий ваши любимые фильмы 80-х годов – такие как, например, «Чужой». А теперь вернемся к вопросу: можем ли мы привнести в Duskers сильные стороны контента, созданного вручную, не лишая игроков их уникальных историй?

Когда в твоем распоряжении только молоток Соблюдая авторские традиции, мы в первую очередь стремились подойти к игре так же, как подошли бы к любому другому виду искусства с активной ролью повествования. Для начала мы принялись за основу сюжета Duskers и попытались присвоить игроку четкую и обоснованную роль в игровой вселенной. Фокус состоял в том, чтобы через исследование мира раскрыть его богатую историю, в то же время по мере продвижения описывая частные истории персонажей и как-то сводя воедино эти детали. Хотя эта работа оказалась очень полезной для создания космологии, сразу же стало очевидно, что линейность сюжета идет вразрез с процедурным характером игры. Линейная структура мешала тем историям, которые игроки создавали сами для себя. По нашему мнению, история игрока всегда была главной, особенно в рогаликах, и мы хотели сохранить эту концепцию. Но игра отметала наши благие намерения по установке повествовательных рамок вокруг систем, которые делают Duskers настолько увлекательной, чтобы ее не бросить. Мы думали, что оформляем игровой опыт, но на самом деле пытались контролировать игру. Нам нужен был сюжет, который управлял бы хорошо написанной историей, но при этом приспосабливался к игроку, а не наоборот. Как сделать так, чтобы статичный рассказ соответствовал динамической истории игрока? Мы сосредоточились на трех ответах, каждый из которых подталкивал повествование ближе и ближе к истории игрока. Один и тот же общий контент должен был создавать разные смыслы для разных игроков, реагировать на их выбор и, в идеале, продвигать игровой процесс в новых направлениях.

Порядок имеет значение Управляющий контент создает разные значения для разных игроков Если мы принимаем как данность, что общий контент статичен, есть ли способы заставить игроков «переварить», интерпретировать этот контент

96

 Глава 8. Управляющий нарратив в Duskers

по-разному, чтобы вывести из него разные значения? На определенном уровне детализации прорабатываемые нами фигуры оформлены статически, но можно ли продумать особые их сочетания? Разве не так поступают процедурные системы? Если из разных буквосочетаний можно составлять слова, а из слов – предложения, можно ли так же поступить с более крупным контентом, например абзацами текста или эпизодами? Her Story доказывает, что это возможно. Контент явно статичный – короткие видеоролики: у женщины берут интервью об убийстве. Однако, если вы понаблюдаете, как проходят игру два разных человека, то увидите, что фрагменты истории воспроизводятся в разном порядке, и сама история воспринимается совершенно по-разному. Вполне возможно, что это может изменить интерпретацию сюжета и персонажей. Нам было любопытно посмотреть, так ли это, поэтому мы создали простой тест. Подготовили два экземпляра журналов, которые игроки могли бы найти на разных космических кораблях. Один журнал – от ученого, который нашел мертвую крысу рядом с пищевым репликатором и заподозрил, что устройство неисправно и может привести к катастрофе. Другой содержит разговор между двумя техниками поддержки, один из которых сетует на то, что кто-то обнаружил мертвое животное на космическом корабле и теперь думает, что репликаторы опасны. Насколько последовательность чтения журналов повлияет на точку зрения игрока? Первый журнал [Начало записи] @SRamirez: Не парься на эту тему. Я получаю такие жалобы каждый день – только и делаю, что фильтрую всякую ерунду. Однажды кто-то съел три куска пирога из репликатора и пожаловался мне: мол, живот болит. Три куска, и парень обвиняет ассемблеров!! Знаешь, сколько мертвых крыс они находят на кораблях каждый день? Ничего страшного, просто ученому делать нечего.

@JMartin: Ха-ха, понимаю тебя и думаю, что ты прав. Мы постарались, чтобы репликатор мог превратить кусок грязи в то, что человек хочет на ужин. Я даже слышал, что мы близки к излечению болезней! Качество жизни, знаешь ли. Они не понимают, насколько лучше все сейчас обстоит! Серьезно. Помнишь, каким отвратительным было сублимированное мороженое?

Второй журнал [Отчет о наблюдении] Мы не вполне понимаем, как туда попала крыса – скорее всего, сбежала из лабораторий на палубе C. Распад тканей наблюдается в нижней части живота, но несовместим с другими останками – по-видимому, первичную рану скрывает инородная вязкая субстанция. Были некоторые опасения по части молекулярных ассемблеров, установленных на борту судна, и, учитывая необычно быстрое разложение, я рекомендую

Порядок имеет значение  97 немедленно отправить отчет в Leyland Corp. Что-то тут неладно, и если это то, чего я боюсь, мы должны действовать безотлагательно!

Чтобы проверить, насколько важен порядок чтения, мы создали вебсайт, который будет выводить два журнала в случайном порядке; тем, кто прочитал обе записи, предлагалось ответить на ряд вопросов. Хотя это и не слишком научный метод, результаты показали, что последовательность чтения журналов влияет на ответы. Большинство из тех, кто прочел первым письмо ученого, как правило, считали его догадку верной, а операторов – недальновидными. Те же, кто сначала прочитал переписку операторов, чаще предполагали, что ученый напрасно раздувает панику. На рис.  8.1 показаны две диаграммы: верхняя представляет ответы респондентов, которые сперва прочли диалог операторов, а нижняя – ответы тех, кто сначала прочитал письмо ученого. Как вы полагаете, исходя из приведенных сообщений, насколько опасна мертвая крыса? (22 ответа) 22.7%

Вообще не опасна Немного опасна Довольно опасна Очень опасна

50%

27.3%

Как вы полагаете, исходя из приведенных сообщений, насколько опасна мертвая крыса? (26 ответов) 38.5%

Вообще не опасна Немного опасна Довольно опасна Очень опасна

34.6% 26.9%

Рис. 8.1. Ответы людей, которые прочли сначала диалог операторов (вверху) и письмо ученого (внизу)

Сказать по правде, исходных данных в тесте было больше, поэтому тенденции не слишком четкие и наше исследование нельзя считать чересчур достоверным. И все-таки склонность игроков делать разные выводы в зависимости от порядка поступления информации была подтверждена другими экспериментами, в том числе при получении отзывов на другие игры. Отсюда мы можем заключить, что порядок имеет значение. Если бы

98

 Глава 8. Управляющий нарратив в Duskers

мы предусмотрели по сюжету ряд небольших судовых журналов с разными точками зрения, то можно было бы добиться разного восприятия и натолкнуть игроков на разные выводы. Это на один шаг приближает нас к созданию уникальной истории игрока. Чтобы извлечь выгоду из этого «фрагментированного» подхода, нам следовало убедиться, что у игроков есть опорные точки во вселенной игры, чтобы нетрудно было устанавливать ассоциации. Если этого не сделать, повествование может распасться на такие мелкие детали, что игроку придется приложить немало усилий, чтобы все запомнить. Или сюжет настолько «измельчится», что вообще потеряет смысл. Во избежание этого мы создали информационные «опоры», которые обеспечат выстраивание ассоциаций, взаимосвязей. В Her Story слова, которые вы вводите в поисковую систему, помогают создавать связи напрямую. В Duskers у нас не было этой функции – вместо нее мы по всей игре использовали небольшой ряд последовательных мотивов (корпорации, люди, риски), за которые можно было зацепиться. Тут воображению игроков было где разгуляться – выстроить теории заговора и, как мы рассчитывали, неожиданным образом объединить мотивы и корпорации. Чтобы добавить разнообразия, мы создали пять сюжетных линий, предполагающих варианты гибели человечества. Игроки нащупывали эти сюжетные линии в зависимости от того, как они играли и как создавалась вселенная, и могли выбирать их в любом порядке, который считали нужным, или одновременно. Можно было изучать все варианты в разном порядке, да еще и внутри каждой сюжетной линии существовал свой журнал. Мы надеялись, что это позволит не только увеличить возможности игрока в процессе игры, но и еще больше дифференцировать игровой опыт. Кроме того, мы создали по всей вселенной устойчивые корпорации с определенной историей (такие как «Мутеки» и «Лейланд»); упоминая их названия, можно было вселять в игрока те или иные подозрения. Игрок может получить журнал в сюжете о пандемии, в котором упоминается таинственный корабль Мутеки, а затем найти журнал Мутеки, где обсуждаются исследования наноботов – в итоге наноботы начинают ассоциироваться с пандемией. Создание контролируемого массива повторяющихся объектов или персонажей легко наводит игрока на те или иные выводы. Это освободило нас от того, чтобы непрерывно поддерживать связи с богатым контекстом, сюжетом и многочисленными ответвлениями. Наконец, не будем забывать о роли эмоций в осмыслении повествования. Одни и те же зацепки у разных людей будут вызывать разные эмоции. В Duskers созданы эмоциональные опоры – мы хотели, чтобы повествование брало за душу. Одним из главных мотивов игры была изоляция, но при прохождении игроки понемногу переставали на это реагировать. Нам нужно было лишний раз напомнить им, что они одни.

Предоставьте инициативу игроку  99 Один из способов – отправить персонажу, от лица которого действует игрок, сообщение от некоего знакомого. Это напоминает о том, что персонажу не с кем поговорить, он не связан ни с кем кроме дронов, которыми он управляет (мы надеялись, что игрок «очеловечит» их и со временем осознает, насколько безумно заботиться о машине, которая полностью тебе подконтрольна). Таким образом, повествование поддерживает эмоциональный настрой, заставляя игрока испытать нечто особенное. Мы хотели, чтобы эти послания доставлялись в определенном порядке – так, как мы это задумывали. Но после проведения экспериментов почувствовали, что будет правильнее, если все сообщения, за исключением первого и последнего журнала, будут распределяться произвольно, давая каждому игроку уникальный опыт и оформляя уникальную предысторию. Это добавило еще одно измерение, в котором игра дарит игроку неповторимый опыт.

Предоставьте инициативу игроку Управляющий контент должен реагировать на выбор игрока Одна из причин, по которой статические сцены в видеоиграх кажутся несколько надуманными, состоит в том, что игрок не может повлиять на вымысел. Выбор игроку предоставлен, но в конечном счете он знакомится с сюжетом все в той же линейной манере. Это делает выбор менее значимым, а повествование более скучным и прогнозируемым. Если мы хотим, чтобы реальность игры отвечала чаяниям игрока, важно никогда не принуждать его к действию. Пусть он сам будет движущей силой. Система регистрации в Duskers позволила нам достичь этого особым образом. Gone Home – это игра, сюжет которой раскрывается исключительно через обстановку. Цель – исследовать пустой дом, когда никого в нем нет. Несмотря на то что декорации статичны, игрок перемещается по ним, самостоятельно решая, что и когда исследовать. Это влияет не только на то, что и в каком порядке видят игроки, но и дает им свободу выбора. Если провести аналогию с процедурными системами, каждый игрок становится «начальным номером», влияющим на генерацию контента. Подключайте разных игроков, и то, что бросится им в глаза, наряду со способом интерпретации изменит игровой опыт. Возвратимся к примеру с Her Story: фрагменты видео не воспроизводятся в случайном порядке. Игроки выбирают поисковые термины, как в интернет-поиске, а затем выводятся видеоролики, содержащие эти термины в стенограмме видеоинтервью. Если в видео идет речь о некоем персонаже и локации, кто-то из игроков может заинтересоваться этим и отправиться на поиски персонажа, а кто-то начнет искать видео о той же

100

 Глава 8. Управляющий нарратив в Duskers

локации. Эти разные пути, возможно, приведут игроков к различным выводам, притом что статический контент остается неизменным. Урок, который мы усвоили, заключается в том, что имеет значение не только и не столько порядок, сколько возможность игроков задавать этот порядок. Учитывая это, а также то, что авторский нарратив может определить средне- и долгосрочные цели игрока, мы оформили фрагменты авторского повествования как ряд целей, которые могут быть достигнуты в разной последовательности. Например, одна из сюжетных линий предполагает, что человечество уничтожила космическая катастрофа. Ученые постоянно пишут о своем недовольстве военными и технической корпорацией «Мутеки», в основном инвестирующей в искусственный интеллект, и, возможно, посылают им измененные образцы с некоторых из древнейших кораблей, которые потемнели со временем. Ученые разослали алгоритм по всем исследовательским станциям в надежде, что кто-то сможет получить второй образец, чтобы проверить точность выводов, сделанных на основе первого образца. Поэтому игроку необходимо реквизировать более старое судно (одно из тех, что потемнело раньше всех) и доставить его на исследовательскую станцию для сканирования по специальному алгоритму. Существует множество способов достичь этой цели, включая даже отказ от всяких попыток. Один и тот же игрок может попытаться выполнить задачу по-разному в зависимости от порядка действий. Во время одного запуска игрок находит старый корабль и пытается сразу же захватить его; в другой раз он сначала находит космическую станцию, а затем работает над сбором оборудования, чтобы помочь найти корабль. Важно, какие враги находятся на борту, какое оборудование есть у игрока, когда он поднимается на борт, как расположен корабль, какие события происходят, когда игрок пытается его захватить. Все события генерируются процедурно (позже в этой главе мы увидим такой пример). Повествование и игровой процесс начали дополнять друг друга и интегрируются более мягко. Вместо того чтобы использовать череду меняющихся целей, мы решили попробовать более комплексный подход, который поддержит бесшовное слияние сюжета с игровым процессом. Мы создали спутник корабля ИИ по имени Джил (JIL), который будет анализировать журналы. Если Джил определил цель, мы будем хранить соответствующий журнал в определенной папке на корабле. Это ненавязчивый и удобный способ включить систему целей в игру, которой должен управлять игрок. Кроме того, повествование стало постоянным элементом игры; все журналы, с которыми надо сверяться, сохраняются в разных прохождениях. Это связано с другой важной вещью, на который опирается наш дизайн, – реализмом. Игрок запоминает содержание журналов во время нескольких прохождений, и этот факт лучше включить в повествование, вместо того

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

Повествование как приманка Управляющий контент необходим для продвижения в новых направлениях В нашей предыдущей игре, A Virus Named TOM, выяснилось, что некоторые награды, которые мы закладываем в игру, на самом деле требуют, чтобы игрок играл в игру совершенно иначе, чем если бы его поощряли за обычное прохождение этапов. Мы всегда чувствовали, что это лучшие виды наград, потому что они обеспечивают новый гейм-плей. Теперь мы спросили себя: можно ли сделать то же самое с повествованием Duskers, и усилит ли это опыт игрока? Мы много играли в Duskers в процессе создания игры. С нами случались невероятно забавные вещи, по мере того как формировался наш собственный игровой опыт. В какой-то момент мы пристыковали наш корабль к воздушному шлюзу на заброшенном корабле, чтобы наши дроны могли сбежать. Когда шлюз открылся, из стыковочного отсека корабля-носителя выскочил инопланетянин и в считаные секунды уничтожил весь отряд дронов! Мы поняли, что инопланетянин каким-то образом забрел в стыковочный отсек нашего корабля и переправился на брошенный корабль внутри него. Этот эпизод вспомнился нам, когда в другой раз мы отчаянно пытались устроить побег дронов, но не смогли убрать врага с пути к воздушному шлюзу. Поэтому на этот раз мы оставили стыковочный отсек открытым, подождали, пока инопланетянин забредет внутрь, и заманили его в стыковочный отсек. Затем снова стыковались с другой стороны брошенного корабля и выпустили врага – таким образом освободив путь к воздушному шлюзу. Теперь мы использовали стыковочный отсек как средство транспортировки инопланетянина. Это нам очень понравилось, но мы понимали, что многие игроки никогда не получат такой опыт, и мы придумали повествование, которое могло бы частично его воссоздать. Одна из теорий гибели человечества в игре – пандемия. Журналы можно было найти у ученого-медика доктора Дж. Холмса, который создал алгоритм для обнаружения данных о патогенных веществах. Требовалось, однако, сканировать одного из органических врагов-инопланетян. Для этого игроку нужно было загрузить алгоритм на корабль и заманить врага с карантинного заброшенного корабля в сты-

102

 Глава 8. Управляющий нарратив в Duskers

ковочный отсек, чтобы начать сканирование. Затем игроку понадобится как-то найти корабль Холмса, чтобы проанализировать результаты. Создавая цель, согласно которой игрок должен заманить врага в отсек и просканировать, мы стимулировали игрока к тому, чтобы проработать один из самых захватывающих сценариев, которые мы случайно обнаружили во время тестирования. Затем мы прочитали множество историй игроков на форумах о том, как выполнялась цель и какого врага добывали играющие. Игроки насыщали рассказ всевозможными домыслами по поводу того, как и почему все это происходило. Я сделал это! Я нашел доктора Дж. Холмса. У меня осталось всего два дрона. Каждую миссию я выполнял по минимуму, просто добывая то, что мог, в первых, самых безопасных помещениях. Мне даже удалось осуществить хитрый план по захвату биологического врага в моем отсеке и запустить сканирование. Потом я сжигал свои ресурсы, чтобы обеспечить работу зонда и собирателя… выбрасывал металлолом… просто охотился за медицинскими кораблями, отчаянно пытаясь найти ключ к тому, что означает 1185. Черт возьми, я мог умереть, у меня могло кончиться топливо, но я намеревался истратить то, которое у меня было, лишь бы доставить образец! На мой взгляд, это могло – да, могло! – спасти то, что осталось от цивилизации. И наконец я нашел его. Почти не осталось топлива и каких­либо ресурсов, которые можно было бы сжечь. Регистрационный журнал наконец сообщил мне, где находится корабль доктора Дж. Холмса и как он называется. (Мне сообщение оставили на медицинском корабле, если кому­то это пригодится.) ...А я ведь там уже побывал. Пост на Reddit (автор – Nathin) Во-первых, история этого игрока показывает уникальные способы достижения цели (о которых мы говорили в предыдущем разделе) с использованием процедурного содержания игры: топливо на исходе, усовершенствование зонда и собирателя, обдумывание «хитрого плана» и т.  д.  Во-вторых, мы видим, как управляющее повествование привело Nathin’а к захватывающим приключениям, которые в противном случае обошли бы его стороной, и как оно расцветило его игровой мир: «отчаянно пытаясь найти ключ к тому, что означает 1185», «я мог умереть, у меня могло кончиться топливо, но я намеревался истратить то, которое у меня было, лишь бы доставить образец» и т. д.

Компилируя все подряд  103

Компилируя все подряд Итак, во время разработки Duskers мы нашли несколько способов отладить статический контент так, чтобы он формировал интересную историю игрока. Началом послужил простой ход: разбить историю на фрагменты поменьше и допустить их проработку в разной последовательности. Предоставление игрокам свободы выбора фрагментов привносит новый смысл и усиливает взаимосвязь между игроком и авторским повествованием. Наконец, интеграция повествования в игровой процесс и подсказывание новых способов игры еще больше укрепляет эту связь, так что история игрока заимствует элементы авторского повествования. Игроки на форуме часто не просто рассказывали свои истории, но и обогащали нашу авторскую задумку своим переосмыслением. Вот что приводилось читать: «меня обескуражила необходимость захватить одного из этих монстров в моем отсеке, но ради науки я отважился взойти на борт корабля. И вы не поверите, что произошло…» Это, по сути, и было нашей целью: чтобы выстроенный нами мир укрепил и сделал ценной историю игрока. Многое можно исследовать, если вы обогащаете повествовательный опыт взаимодействием с игроками (и наоборот). Мы многому научились, развивая Duskers, но еще больше нам предстоит узнать. Мы надеемся, что, рассказывая об этом процессе разработки, мы вдохновим вас на то, чтобы еще глубже погрузиться в тему. И уже вы расскажете нам, какие открытия вам удалось совершить.

Глава

9 Впечатляющий текст: смешение статического и процедурного контента Кевин Сноу

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

Southern Monsters Когда я демонстрировал игру Southern Monsters на одной небольшой конференции, один любопытный участник захотел сломать игру. Он прочитал удручающее вступление, поговорил с одним-двумя NPC, а затем отправил своего персонажа в душевую – и так делал вновь и вновь. «О, в этот раз текст изменился! – сказал он после второго душа. – А вот сейчас я уже начинаю скучать…» Совершив омовение раз девять или десять, он хмыкнул и вышел из кабинки. Хотя текст Southern Monsters в душевой кабине генерируется просто, этот процесс в достаточной степени заинтересовал «скучающего» посетителя. Southern Monsters – это сочетание статического и процедурного текста. Сюжетные события, как и разговоры персонажей, имеют подвижную структуру, но текст в основном остается неизменным. Повторяющиеся действия, вроде трапезы или принятия душа, слегка меняются в зависимости от состояния игры (рис. 9.1).

Southern Monsters  105

Нет

Сегодня принял душ? Да Недавно принимал душ?

Да

Нет Ты ненавистен самому себе?

Тебя что-то беспокоит? Нет

Нет

Показатель настроения? Высокий

Тон текста: все просто прекрасно!

Да

Показатель настроения?

Низкий

Высокий

Тон текста: дела идут помаленьку

Тон текста: все печально

Низкий

Тон текста: глубокая депрессия

Рис. 9.1

А все потому, что контент Southern Monsters информировал структуру  – это медленный процесс, который заставил меня несколько раз пересмотреть основные системы в первый год разработки игры. Southern Monsters – отчасти автобиографическая игра о подростке из Южного Арканзаса, который модерирует форум для тех, кто интересуется паранормальными явлениями. По ночам герой обыскивает болото возле своего дома в поисках местной разновидности снежного человека, называемой болотно-ручьевым монстром. Все системы в Southern Monsters исследуют, как этот подросток, Cripplefoot (Хромоножка), переживает травматический опыт домашнего насилия. Персонаж не понимает, в чем тут дело, почему он так реагирует. В игре показано, как сложно персонажу совершать рядовые действия, показаны его депрессивные мотивы. Немногое выходит на поверхность – здесь нет какого-либо «показателя депрессии». Игрок должен чувствовать себя таким же беспомощным, как и персонаж, предполагая, что в работе есть некая слишком сложная для понимания логика. Игровые системы были смоделированы на основе моего собственного поведения в прошлом, после многих лет терапии и размышлений. Настроение Хромоножки регистрируют цифровые данные и слова. Измеряемый показатель настроения – это процентное соотношение, которое преобразуется в целое число от 1 до 3, чтобы упростить пространство

106

 Глава 9. Впечатляющий текст: смешение статического и процедурного контента

возможностей. Этот численный показатель не вполне точен, так что система (а следовательно, и поведенческие особенности Хромоножки) хоть и может быть изучена, не всегда поддается «геймификации». Существует также квалификатор, который добавляет контекст к численному показателю, – current mood («текущее настроение» – по названию одной из функций LiveJournal). Ни одно из настроений не видно игроку, но оба влияют на выбор и генерацию текста. Посетитель конференции, который настойчиво принимал душ в игре, тем самым вызвал настроение «ненависть к себе». Фактически текущее настроение добавляет особый фильтр: почему Хромоножка чувствует себя именно так? Процедурная генерация текста в Southern Monsters руководствуется этими системами и должна усилить их назначение. Если Хромоножка съедает пирожное, настроение героя повышается – если только какой-то фактор не нейтрализует этот эффект (например, за короткое время герой съел слишком много). Таким образом, игра учитывает сразу несколько факторов, решая, какой текст вывести. Как чувствовал себя Хромоножка прежде, чем съел пирожное? Как сказывается его настроение на еде – и наоборот? И что будет после? Когда в Southern Monsters происходят некоторые события, например герой модерирует тему форума или говорит с NPC, игроки извлекают особый опыт из этих процедурных моментов. Мать Хромоножки может сообщить ему, что от него пахнет, если он не принял душ, и его настроение влияет на выбор вариантов ответа. Разделение статического и процедурного контента по мере развития игр стало настолько незначительным, что оно важно только для объяснения отдельных сюжетных поворотов.

Battlecakes Battlecakes  – это RPG, в которой отряд пирожных отправляется спасать мир. Игра разработана Volcano Bean; в этом проекте я выступал одним из авторов и разработчиком повествовательной линии. Хотя структура сценария весьма типична для RPG, разработчики предоставили мне свободу в работе над отдельными элементами процедурной генерации. В начале игры главный герой отправляется в библиотеку в городке Баттеруорт-Хайтс. Если игрок берет книги с полки, герой зачитывает название книги и комментирует его. Названия книг генерируются так, чтобы научная стилистика сочеталась с кулинарной лексикой (рис. 9.2). Вот ряд примеров: 1. Открытие бананового торта 2. Тайны выпечки за последние 60 лет 3. Мороженое и философия: неявные связи

Игровой текст  107 Список: структура академических названий книг

Список: десерты

Список: глаголы (кулинар. тема)

Список: ингредиенты

Список: академические дисциплины

Список: глаголы (произвольные)

Список: существительные по теме

Список: даты

Итоговое название книги

Рис. 9.2. Генерация названий книг в Battlecakes

Способность процедурного текста выдавать неожиданные результаты идеально подходит для Battlecakes. В этой игре каждый аспект повествования должен удивлять игрока – от диалогов, вдохновленных такими шоу, как Steven Universe и Adventure Time, до дизайна карты, которая влечет к исследованию территории. Генератор книг устроен просто, хотя было бы еще проще составить забавные названия книг и выводить их произвольно. Игровой опыт большинства пользователей мало изменился бы, но вся фишка здесь в абсурдности генерируемого текста. Старательно выверенная грамматика снизила бы эффект в случае с подготовленным вручную списком. Я отладил систему настолько, чтобы результаты были разнообразными, а сочетания слов – редкими, но не нарушающими правил языка. Этого я достиг, разделив слова на слоги и настроив допустимое количество слогов в одном названии. В конечном счете генератор книг не перетягивает на себя внимание, да и не ставит такой задачи. Игроки могут в любой момент бросить его, как и всякую игрушку, и двигаться дальше.

Игровой текст На конференции Konsoll 2017 Джейк Эллиот (Jake Elliott) из Cardboard Computer выступил с докладом под названием «Игровой текст», где пред-

108

 Глава 9. Впечатляющий текст: смешение статического и процедурного контента

ставил свою концепцию дизайна процедурного текста. В ней подчеркивались «открытые, органические пространства возможностей». Эллиот говорил о влиянии постмодернистского искусства на процедурный текст в 4-м действии игры Kentucky Route Zero, который намеренно, хотя и мягко, обходит традиционную дизайнерскую схему: успех процедурного текста в игре оценивается по выбору игрока и бинарному диалогу. Эллиот кратко описал значение процедурного текста в повествовании, которое за его вычетом остается статичным. Самая сложная генерация текста в Southern Monsters осуществляется в эпизоде, когда игрок смотрит видео с кошками. Функция выбирает жанр, например кошку, спящую или играющую, затем структуру абзаца, а затем отдельные структуры предложений. Горизонтальные решения принимаются следующим образом: если упоминается снег, контекст настраивается на снег. Если функция добавляет новое предложение, оно проверяет контекст и описывает соответствующую деталь. Пример вывода: Тощий кот нападает на фаршированную рыбу под одеялом. Кот рвет рыбу, разбрасывая повсюду ошметки, в то время как кто­то кричит в камеру. Я снова и снова перематываю пленку, чтобы проникнуться теплотой этой сцены. Генерация такого текста проста. Здесь не придается никакого значения отдельным словам, фразам или предложениям. Контекстная переменная – это лишь приправа, а не система тегов. Сложность только в том, что здесь создаются связи между предложениями; чаще в процедурном тексте Southern Monsters не больше одного предложения. Объем и специфика означают, что количество «плохих» выходных данных можно сократить с помощью итерации, поэтому процедурный текст не должен быть сложным. Как и другие материалы в Southern Monsters, видео с кошками регистрирует и определяет эмоциональное состояние Хромоножки. Это означает, что он может смотреть видео и впадать в уныние, демонстрируя мою худшую привычку – лениво просматривать какую-то ерунду, в то время как давно пора идти спать. Когда результат действия возвращается в переменную состояния игры, это несложно: если игрок часто совершает какой-то незначительный выбор, показатели могут меняться в тестировании игры, с контекстно-зависимыми фильтрами («текущее настроение»), улавливающими особые ситуации. В целом, впрочем, подборка «кошачьих» видео вполне оптимистична  – по крайней мере, если вы любите кошек и животных так же сильно, как я. Игра Southern Monsters не зациклена на несчастьях и страданиях. Я стремился к тому, чтобы ее процедурный текст вызывал ощущение повседневной жизни.

Memory Blocks  109

The Domovoi Я выпустил свою первую игру, The Domovoi, в 2014 году. Сделанная на Twine, она представляет собой короткий интерактивный рассказ, в котором советская фольклористка рассказывает историю о домовом, а игрок слушает. В игре есть ограниченное разветвление с двумя финалами и интенсивно используются функции рандомизации Twine для тонкого изменения текста. «Ваше представление изменится – слова будут иначе звучать в ваших воспоминаниях, чем когда вы впервые их услышали»,  – предупреждает рассказчица игрока в начале истории. Подтекст – это для трусов. Игра довольно прозрачно намекает на мой опыт жизни с посттравматическим стрессовым расстройством; этот диагноз я получил после демобилизации в 2010 году. Если рассказчицу сердят предположения игрока, она меняет историю так, чтобы домового отколотили молотком. После этого рассказчица забегает вперед и сообщает, как это повлияло на домового; ее эмоциональная реакция указывает на то, что рассказчица сама пережила нечто подобное и теперь перекладывает на слушателей бремя своего печального знания. Игроку произвольным образом предлагается девять вариантов, в каждом из которых я представил различные аспекты влияния кошмаров и повторного травматического опыта на мои переживания. Если рассказчицу устраивают предположения игрока, то дело обходится без побоев и насилия. Рандомизированные элементы текста делают повествование трудноуловимым, так что игроку трудно запомнить точный текст. Это подчеркивает борьбу, которую я вел со своими воспоминаниями, регулярно всплывавшими то здесь, то там.

Memory Blocks Memory Blocks  – антология на базе Twine, созданная Присциллой Сноу (Priscilla Snow). Она отсылает к известной карточной игре на запоминание, раскрывая наше отношение к памяти как таковой. Мой вклад в этот проект – история о вымышленной игре Animal Town, вдохновленной Animal Crossing (точнее говоря, это письма, отправленные NPC – жителями деревни). Игрок читает статичные письма, отправленные вымышленным владельцем карты Animal Town, а затем процедурно сгенерированные письма, которые жители деревни отправляют в ответ. В реальной серии Animal Crossing есть три типа ответных писем: положительные, отрицательные и смешанные. Там очень мало процедурного текста; содержание письма определяется личностью NPC и некоторыми условными переменными (например, приложил ли игрок подарок к письму). В Animal Town, напротив, используется явная процедурная генерация, подчеркивающая странноватый характер писем NPC (см. рис. 9.3).

110

 Глава 9. Впечатляющий текст: смешение статического и процедурного контента

Тон письма

Положительный

Отрицательный

Смешанный

Строка 1.1

Строка 1.1

Строка 1.1

Строка 1.2

Строка 1.2

Строка 1.2

Строка 2.1

Строка 2.1

Строка 2.1

Строка 2.2

Строка 2.2

Строка 2.2

Последняя буква

Рис. 9.3

Процедурный текст в данном случае усиливает роль фантазии, которую игроки привносят в свои отношения с NPC. Владелец карты Animal Town пишет искренние, личные письма жителям деревни, которые отвечают на них случайным набором слов, который контрастирует с глубоким лиризмом писем отправителя. Это несоответствие используется для создания комического эффекта, но вместе с тем отзывается печальной ноткой.

Matul Remrit Прежде чем приступить к написанию игр, я создал мультимедийный фанфик Matul Remrit – летсплей, действие которого происходит с 2010 по 2013  годы и творчески переосмысляет прохождение игры Dwarf Fortress. Текст написан в неестественном стиле, имитирующем неловкий процедурно сгенерированный текст игры. Это история сотрудничества автора с машиной – воплощение моей фантазии, которую пробудила Dwarf Fortress благодаря своим очень подробным процедурным системам. Всю мою последующую работу с процедурным текстом определила именно увлеченность Matul Remrit. Хотя мне еще не приходилось созда-

Перспективы  111 вать какие-либо игры, непосредственно вдохновленные сложностью систем Dwarf Fortress, опыт этой игры сформировал мой интерес к тому, как процедурный текст может взрывать смыслы. В Matul Remrit воспроизводится Dwarf Fortress v0.31 – версия, где дварф может закатить истерику в ответ на, казалось бы, незначительные замечания. Matul Remrit берет за основу эти фактические события и приписывает им некую мотивацию, которая исключает любые другие толкования. С тех пор большую часть своей писательской карьеры я посвятил прямо противоположному процессу: использовал процедурный текст, чтобы усложнить или подчеркнуть смысл статичного повествования.

Перспективы Чем больше коммерческих контрактов я заключаю как сценарист, тем меньше процедурного текста могу в них включить. Хотя я не особенно заостряю внимание на рабочих инструментах (процедурная генерация, которую я реализую, достаточно проста, чтобы выполнять ее несколькими способами), хочу подчеркнуть, что выбор инструментов в этом процессе важен и позволяет смешивать статический и процедурный текст. Как фрилансер я очень надеюсь на то, что студии используют диалоговые инструменты, где имеются специальные опции для процедурного текста – такие как движок Ink и Spirit Character Engine. Это упрощает работу, которую легко поручить ведущему дизайнеру или редактору. Озвучивание может быть несовместимо с процедурным текстом, но даже в полностью озвученных играх имеется немало сопроводительного текста – представьте себе написание сложного генератора для сотен книг серии Elder Scrolls. Эти инструменты позволяют реализовать процедурные элементы на практике.

Глава

10 Драматический гейм-плей в The Sims Даниэль Клайн

Есть особая форма игры, в которой все так или иначе участвуют, но в видеоиграх она до сих пор встречается редко, – игра драматическая. Вы наблюдаете это в LARP1, на театральных подмостках, в образах супергероев и в детских играх на игровой площадке. Взрослые и дети договариваются: «Давайте притворимся, что мы…» У нас даже нет четкого слова для обозначения такого рода игры. Я называю это драматическим гейм-плеем. Ролевые видеоигры больше акцентируются на тактике и продвижении, чем на театрализации. Иногда используется повествовательная линия самих игроков, но эти игроки не рассказывают сколько-нибудь осмысленные истории. Они не сильно заботятся о повествовании. На самом деле они: • • • •

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

The Sims – это одна из самых успешных серий видеоигр в истории, которая отмечена ярким драматическим гейм-плеем. За два десятилетия игру продали в количестве более 100 млн экземпляров и дополнений. Игроки The Sims рассказывают о том, как они ценят своих персонажей, насколько они интересны и как им нравится играть в них. The Sims – отличный пример реализации четырех основных принципов драматического геймплея. Первый фундаментальный принцип заключается в том, что игроки берут на себя определенную роль. Вся драматическая пьеса – игра, суть которой в том, чтобы актер на время притворился кем-то другим. Это притворство. Это эмпатия в игровой форме. Игроки мотивированы отыграть 1

Live action role-playing game – «живые ролевые игры»: люди изображают персонажей, вживаясь в роли и делая себе антуражные костюмы. – Прим. перев.

Перспективы  113 своих персонажей, чтобы увидеть, куда они идут и кем становятся. Часто они сознательно отметают свои знания, способности или личные амбиции в попытке вжиться в роль. Мастерство выражается не в традиционном соперничестве и оттачивании навыков, а в совершенном перевоплощении. Трудности преподносит сама роль и ее природа, а не игровые системы. Роли могут быть сложными, даже абстрактными. В The Sims роли – это активные домохозяева, сами симы. Симы – это центр «живого» режима и режима создания персонажа CAS2. Игроки неосознанно идентифицируют себя с тем или иным симом в семье, ведя повествование то от первого, то от третьего лица. Они даже примеряют различные роли к каждому симу, которым управляют. И это преображение значимо. Если игрок ничего не сделает, симы не выживут. Сим нуждается в игроке. Второй фундаментальный принцип – персонализировать, индивидуализировать роль. Она должна быть особенной для игрока. Он выбирает ее не просто так. Обычно он сопоставляет роль с другими вариантами выбора по нескольким параметрам. В The Sims учитываются внешность героя, характер, манера одеваться, навыки, карьера, отношения и многое другое – детали, с помощью которых описывается роль. Третий фундаментальный принцип заключается в том, что игрок должен уметь исполнять роль. Он должен быть в состоянии частично выразить ее через текст. И это действие должно быть свободным и обдуманным, а не заданным игровыми ограничениями. С точки зрения дизайна это означает взрывной рост числа доступных вариантов, ряд которых явно выламывается из текущей роли или ситуации. В The Sims это осуществляется за счет кругового меню – всплывающих подсказок, дающих понять, что может совершить персонаж с тем или иным предметом и другими симами. Часто механические различия между взаимодействиями в таком меню несущественны. Но каждое заключает в себе особый оттенок, который позволяет игроку выразить себя в данной роли. Последний фундаментальный принцип – то, что игра должна признать вас в выбранной вами роли. Игроки, проживающие роль драматически, пытаются освоить игровой мир и чувствуют удовлетворение, если игра отвечает адекватным образом. Это своеобразное поощрение за хорошую игру, побуждающее и дальше выбирать этого персонажа. В The Sims такое признание может выражаться по-разному: в доступных пунктах кругового меню, в результатах каждого выбора, в отклике целевого объекта, отклике игрового мира, результирующих изменениях следующего кругового меню и долгосрочном воздействии на самого сима. Давайте рассмотрим некоторые ключевые способы обслуживания драматической игры в The Sims. 2

CAS (режим отладки, или режим разработчика) можно разблокировать с помощью читов. Дает игроку полную свободу действий в отношении персонажа. – Прим. перев.

114

 Глава 10. Драматический гейм-плей в The Sims

Примеры дизайна в The Sims 1. Расширяйся The Sims 4 – большая, растянутая, засасывающая игра. Игровые расширения появляются несколько раз в год, и игроки тут же их осваивают. Это противоречит всем теориям гейм-дизайна об элегантности, стратегическом выборе и доступных элементах управления, но это работает! Почему? Потому что каждое расширение обеспечивает более драматичный игровой процесс (рис. 10.1).

Рис. 10.1. The Sims 4: City Living (2016). Публикуется с разрешения Electronic Arts

Sims 4: Cats & Dogs добавляет в игру новые роли – любителей домашних животных. Так появляется новое качество характера симов. Вы можете настроить внешний вид своего питомца, подобрать характер, повадки, умения, костюмы и многое другое. Это привносит в игру массу вариантов: «Вы заботитесь о своих домашних животных? Общаетесь с ними? Они спят с вами?» – и ваш питомец всегда на экране, ходит за вами по пятам, напоминает о себе… В Sims 4: Get to Work введены новые типы работы, которые позволяют вам управлять симом в течение рабочего дня и при этом запускать бизнес, чтобы продать почти все, что доступно вам в игре. Фотографии. Картины. Ваши сочинения. Все роли стоят того, чтобы их опробовать на себе! Sims 4: Parenthood содержит массу воспитательных нюансов, дополняя популярную роль и добавляя новые роли и модели поведения детей. Sims 4: Jungle Adventure позволит вам провести отпуск в южноамериканских джунглях и поиграть в археолога, культурного антрополога или даже расхитителя гробниц. Sims 4: Vampires не только добавляет роли вампиров и охотников на вампиров, но и содержит абсолютно новый аспект

Примеры дизайна в The Sims  115 персонализации существующих героев. За четыре года после запуска игры The Sims 4 было выпущено 22 расширения контента. Может показаться, что это создает откровенный хаос. Когда у вас 10 пакетов расширений, это в конце концов утомляет. Но для любителей драматической игры это как валерьянка для кота! Это именно то, чего они ждут. И все части стыкуются, каждая новая линия учитывает предыдущую. Хотя игрокам может нравиться не каждая роль, те, которые им по душе, заставляют их переживать за своих персонажей и погружаться в игру на много лет, хотя она не направлена на классическую «отработку навыков» и не наполнена «глубоким содержанием». Более узконаправленный и глубокий дизайн отлично подходит для других игр, но драматические игры требуют широты выбора. Они громоздкие, довольно топорные и лишены всяческих тонкостей; зато в них полно уникальных ролей, обеспечивающих самовыражение, и люди хотят играть эти роли в новых обстоятельствах.

2. Ошибки, ведущие вперед Драматический процесс требует интересных результатов, вознаграждающих игрока за исполнение роли. При ролевой игре игроки выбирают особую тактику. В отличие от большинства игр, провал персонажа не равносилен провалу игрока. Игрок может на самом деле продемонстрировать мастерскую игру! В этом плане фиаско – это даже весело, и благодаря своей неудаче игроки только продвигают роль вперед. Если выбор игрока не меняет мир, неудача диктует варианты «сохранить/перезагрузить» или «попробовать еще разок». Это приводит к тому, что игроки теряют азарт, перестают играть в ролевые игры и начинают шлифовать задачи с предсказуемыми результатами. Гораздо интереснее, если неудача персонажа приводит к изменению состояния мира! «Удачным» примером провала в The Sims может быть пожар, фейспалм из-за бестактности персонажа, ошибка в офисной работе. Фактически это всего лишь подчеркивает особенность роли. «Я пробовала готовить. Мне это плохо удается. Я устроила пожар и с криком выбежала из дома». Каждая неудача добавляет новые штрихи к образу героя. Не каждый выбор должен приводить к существенным изменениям. В  иных случаях предполагается, что вы должны попробовать еще раз  – «авось получится». Но по меньшей мере в 20 % случаев встречаются «правильные» ошибки. Это создает ощущение, что каждый выбор может изменить будущее. Это ключевой компонент признания ролевой игры. Еще один способ признания роли  – суперуспешность, демонстрация определенного таланта с результатами, которые улучшают или меняют события будущего. Например, профессиональные повара-симы могут преуспеть в кулинарии, создавая настоящие шедевры. Однако суперуспехи

116

 Глава 10. Драматический гейм-плей в The Sims

обычно не так эффективны, как неудачи; получение «бонуса» менее интересно, чем нечто деструктивное. Даже смерть в The Sims – это обычный пример «неудачи, продвигающей вперед». Другие симы скорбят о вашем персонаже в течение нескольких дней, меняя характер каждого будущего выбора. Также они встречаются с Мрачным Жнецом, популярным персонажем в The Sims, и иногда молят о воскрешении мертвого сима, используя различные навыки и симуляции. Даже рядовое использование навыков и общение имеют шанс изменить ваши перспективы. Приготовление пищи может окончиться пожаром, но в иных случаях это просто шанс использовать свободный час или испортить ужин. Если вы допустили оплошность в разговоре, это повод извиниться, смутиться или рассердиться и начать драку. Иногда вы можете вторично осуществить тот или иной маневр в надежде на лучшее; разные результаты одних и тех же действий The Sims 4 будут создавать мистическое ощущение, что нельзя дважды вступить в одну реку.

3. Удивительные повороты Моделирование в The Sims 4 преподносит множество сюрпризов – как в части результатов взаимодействия, так и в части поведения NPC. Один из распространенных вариантов: «горячий парень подходит к вашему симу – что вы делаете?» Игроки сразу решают для себя, как лучше реагировать. Существует с десяток возможных способов действия, и все они разные для разных ролей. Симы могут флиртовать, отшивать незнакомца, говорить, что он им неинтересен, извиняться перед его ревнивой женой… Так или иначе, игроки исполняют свою роль, инстинктивно действуя так, как считают нужным (рис. 10.2).

Рис. 10.2. The Sims 4: City Living (2016). Публикуется с разрешения Electronic Arts

Примеры дизайна в The Sims  117 Такие неожиданные эпизоды имеют мощный эффект: • они побуждают к действию, вызывающему сильные эмоции и являющемуся прелюдией к эффектным сценам; • они дифференцируют симов. Возможные конфликты раскрывают характеры персонажей в ситуации морального выбора; • они уводят игроков с наезженной колеи и обогащают роли в результате нескольких прохождений; • они показывают игрокам возможные ходы. Одна из главных проблем, связанных с драматической игрой, – вовлеченность игроков. Романтический герой сообщает девушке-симу: «А ты могла бы подумать о личной жизни. Встречаться с парнем, выйти замуж и, возможно, нарожать детей»; • они заставляют игроков с интересом следить за тем, что будет дальше. Элемент недосказанности держит игроков в напряжении.

4. Вещи, за которыми интересно наблюдать Наблюдение в драматической игре – великое дело. Оно замедляет ход пьесы. Оно позволяет отключиться от импульсивных действий и открывает дорогу творчеству. У игроков появляется время подумать и осмыслить свои рутинные действия. Сильный показатель драматического геймплея – игрок углубляется в жизнь своего персонажа и наблюдает за ним. Если игрок отвлекся от персонажей, слишком быстро действует или ускоряет время, он начинает отключаться от процесса ролевой игры. The Sims 4 поощряет игроков оставаться в теме и наблюдать за событиями с помощью: • выразительных и забавных анимаций; • отображения мыслей сима в «облачке» над его головой; • сюрпризов и переменных результатов (как было показано выше).

5. Реакции Как и в любой игре, важна четкая обратная связь с вознаграждением. Но в драматических играх эти награды принимают необычные формы. Игрок хочет получить положительный отклик от игрового мира и других персонажей – это показатель того, что он хорошо играет свою роль. Важно, чтобы NPC адекватно реагировали на роль игрока. Со временем мир может стать отражением характера игрока и его действий. Должен появиться новый выбор, учитывающий роль персонажа, его недавние действия и состояние мира. Особое внимание в The Sims 4 уделяется NPC во время интеракции. Игра воспроизводит один, два или даже три дополнительных ответа в ходе клю-

118

 Глава 10. Драматический гейм-плей в The Sims

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

Рис. 10.3. The Sims 4: Get Together (2015). Публикуется с разрешения Electronic Arts

В The Sims 4 предусмотрено больше возможностей для отражения роли игрока. В распоряжении игроков интерактивные объекты, которые можно размещать в мире; благодаря этому можно просматривать стиль, навыки и интересы персонажей. Симы демонстрируют те или иные эмоции, обеспечивающие новые взаимодействия. Если игрок простаивает, симы пытаются играть свои роли автономно. The Sims гипертрофирует все это для создания комического эффекта и дает понять, что игра реагирует на игрока и его драматические действия немаловажны.

6. Характеристики персонажей Актеры хотят получить роль, которая подчеркивала бы их особенности. The Sims 4 использует для этого такие системы, как черты характера и стремление к достижению целей. При этом своей спецификой наделены как персонаж игрока, так и NPC и драматический гейм-плей. Требования в каждом случае различны: • Специфика NPC подчеркивает социальное взаимодействие или рядовое поведение NPC. Если игроки не могут видеть особенности NPC или взаимодействовать с ними, то фактически их как бы и нет. Характеристики NPC приносят бонусные очки, если игроки могут их удачно использовать и если они провоцируют сюрпризы или конфликты. «Зло» – классический пример яркой характеристики NPC.

Примеры дизайна в The Sims  119 • Идентичность игроков  – это способы определения роли, вовлекающей игрока в создание персонажа. Например, жизнерадостный тип, меломан или романтик в The Sims 4 отражают возможные чаяния игрока. Это ролевые указатели, диктующие направление развития образа. Стремления в режиме создания сима выполняют ту же функцию. Они ставят вопрос так: кем хочет быть этот сим? Системы идентификации игроков всегда дают обратную связь во время игры. Это нормально. Их задача – вдохновить на первичное выстраивание образа. • Драматические черты гейм-плея дают симу возможность проявить свой характер во время игры. Благодаря этому в разной обстановке всплывают разные варианты. В The Sims 4, например, Bro (Братан) появляется в круговом меню всякий раз, когда вы общаетесь. Lazy (Ленивый) уместен всякий раз, когда ваш сим дремлет или спит. Loves Outdoors (Любитель прогулок) счастлив, когда оказывается на улице. Это важно и потому, что таким образом создаются вариации игрового процесса, и потому, что вам лишний раз напоминают об уникальности каждого сима. В идеале ваши характеристики игрока одновременно хороши и для NPC, и для создания яркого драматического гейм-плея – но это необязательно. Фактически они могут стать контрпродуктивными, если ограничивают ваш контент. Гораздо важнее освоить как можно больше ролей, чем создать расширенную систему характеристик. Примечательно, что признаки драматического гейм-плея не обязательно должны строиться на контрастах. Это иногда полезно для драматической линии, которая выстроена на противоположностях, определяющих сильные архетипы; но они в меньшей степени подходят для потребностей NPC и идентичности игрока. В драматической пьесе характеристики  – мощные инструменты, которые должны отвечать своей цели, максимально подчеркивая индивидуальность. Самая важная часть проектирования характеристик – представление о том, что дает та или иная из них. В противном случае игрок забывает, что они вообще существуют. Чтобы показать, что тот или иной выбор доступен из-за определенного признака, The Sims 4 помещает значки признаков на кнопки в круговом меню. Если выбор был изменен именно из-за какой-то характеристики, игра добавляет подсказку, объясняющую это изменение. Кроме того, характеристики также дают случайные баффы с подсказками. К сожалению, эти методы не работают в отношении признаков NPC или автономного поведения PC. Всякий раз, когда вы разрабатываете систему характеристик, подумайте о том, как игроки должны понять, что это меняет в игре в плане различий между персонажами.

120

 Глава 10. Драматический гейм-плей в The Sims

7. Реалистичный вымысел Основное подспорье в обживании некоей роли – это использование узнаваемых и привлекательных архетипов. Если игрок уже изучил роль и мечтает ее сыграть, он при любом удобном случае выберет именно ее. Использование реалистичных декораций способствует этому. В реалистичной обстановке могут действовать необычные персонажи, а также герои с яркой индивидуальностью, выламывающиеся из первоначального дизайнерского замысла (взять хотя бы Алису и Кева в Sims 3). Индивидуальность очень трудно спроектировать, но современный мир именно таков  – узнаваем и вместе с тем своеобразен. Фантастические миры порой предлагают специфический язык и вымышленные сюжеты, с которыми игрокам гораздо трудней разбираться. The Sims 4 – одна из немногих игр, которая полностью воссоздает современную жизнь. На фоне типичного западного пригорода, с которым основная часть аудитории знакома и в реальности, роли становятся более выпуклыми (рис. 10.4).

Рис. 10.4. The Sims 4: Cats & Dogs (2017). Публикуется с разрешения Electronic Arts

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

Примеры дизайна в The Sims  121 В The Sims есть чрезвычайно широкий диапазон новых для современного общества и неоднозначно трактуемых ролей: возможны ЛГБТ-отношения и межрасовые связи, можно играть за персонажей-трансгендеров или фантастических существ вроде вампиров и ведьм. Даже простые роли могут содержать некий элемент недозволенности. Так, ребенок может завести в игре домашнее животное, которое в реальной жизни родители ему не позволили брать. А девочка-подросток, уже задумывающаяся об отношениях полов и о беременности, может попробовать себя в роли молодой матери. Отыгрывание этих ролей может быть чрезвычайно мощным и убедительным, открывая игрокам перспективы и давая шанс, который в жизни они не проявили. При проработке ролей в вашей игре подумайте: можно ли отразить в ней реальные жизненные запросы, интересующие отдельных игроков?

9. Относительная несложность В драматической игре важно, чтобы неудача не была наказанием. Игроки должны чувствовать себя достаточно сильными, творчески настроенными и свободными для принятия на себя той или иной роли. Если случайные неудачи будут сурово караться или для достижения успеха потребуются слишком сложные навыки, ролевые игры перестанут вызывать интерес. Это не значит, что драматическая игра (такая как The Sims) исключает понятие мастерства. Просто мастерство в ней сводится к умелому исполнению роли и хорошему знанию игрового мира. Это равнозначно выполнению сложного маневра или победы над сильным противником в играх другого рода. Один из побочных эффектов такого расклада  – относительно низкая значимость игрового баланса. Все должно быть разработано так, чтобы вы достаточно регулярно получали награды за хорошую игру. Став бизнесменом, вы должны разбогатеть, если справитесь с ролью. Тогда следующая роль, которую вам предстоит осваивать, – «богач». В худшем случае вы можете отказаться от роли и взяться за другую (роли можно легко сменить даже в середине игры). Обратите внимание, что The Sims 4 предлагает глубокий контент, на разблокировку которого потребуется несколько часов игры. Но это скорее традиционная схема – признание вклада в роль, а не награда за мастерство игрока и не жестко сбалансированный механизм продвижения и разблокировки.

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

122

 Глава 10. Драматический гейм-плей в The Sims

ными. По мере того как игрок накапливает опыт, цели могут становиться более открытыми и требовать больше времени. В драматической игре эти цели должны развивать роли игроков или давать им возможность двинуться в новом направлении. Так выполнение той или иной задачи вознаграждает игрока за усердие. The Sims задействовала разные ходы в этом плане. Один из примеров – пожелания и обещания в The Sims 3. У игроков есть четыре желания, которые можно обещать выполнить. Выбор возможных желаний основан на недавних действиях сима, и с течением времени эти возможности становятся все более глубокими. Также у симов есть заветная мечта – глобальная цель, к которой стремится персонаж (ее тоже определяет игрок). Список таких целей зависит от характеристик симов, что еще больше индивидуализирует роли.

11. Игровая валюта В играх часто встречаются денежные поощрения в «местной валюте», правда? Это и в драматических играх так. Деньги могут выдаваться как баллы за выполнение роли. Валюта может привязываться к игроку или к роли (в последнем есть особый смысл). Часто денежные сбережения можно потратить на некоторые абстракции, развивающие роль, или способы контролирования игрового мира (соответственно, повышающие шансы роли на успех). Выполнение желания в The Sims 3 дает симу пожизненные баллы удовлетворенности. Их можно использовать для покупки особых характеристик или объектов, которые заставляют сима чувствовать себя более сильным и успешным или помогают будущим симам играть быстрее.

12. Абстракция и юмор Драматическая игра очень хорошо поддерживает абстракцию. Игроки весьма снисходительно относятся к игре, которая не может похвастать реалистичностью, если они в полной мере могут раскрыть свои роли. The Sims в этом плане всегда располагала некоторыми уловками. Симы могут воскресать; для того чтобы переодеться, им достаточно повертеться как волчок; они без труда телепортируются в нужное место, заводят друзей за несколько часов, несут малоподъемный груз, пользуются магией, управляют разумом других симов, дерутся, поднимая вокруг мультяшное облачко, и – «вву-ху!». Личность симов задается набором характеристик, а их взаимоотношения отражаются в виде зеленой шкалы. The Sims полна нереалистичных абстракций. У игроков есть определенные ожидания в отношении своих персонажей, но производительность в игре – не то же самое, что в реальной жизни. В то время как игрок следует роли и игровой мир как-то на это реагирует, игра может многое урезать и абстрагировать.

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

Драматические приемы в играх других жанров Итак, мы увидели, как The Sims поддерживает драматическую игру. Другие доступные для исследования игры – Stardew Valley, Middle Earth: Shadow of Mordor, Rim-World, Mass Effect, Sim City и Dwarf Fortress. Особенно примечательна Skyrim: это основная игра уровня AAA, которая приобрела небывалую популярность у любителей ролевой игры. Важно отметить, что драматическое действо допускает полутона. Ваши игры могут подходить для разных игроков. Не бойтесь сделать несколько реверансов в сторону драматических игроков, даже если они не являются вашей основной аудиторией. Драматический сюжет можно естественным образом внедрить в РПГ, симуляторы и многопользовательские игры. Это может быть хорошая «игра в игре»; она может обеспечивать паузу в линейном сюжете или делает персонажей нарративного проекта более человечными. Рассмотрим знаменитую сцену в Uncharted 2: в середине игры главный герой попадает в тихую тибетскую деревню. Некоторые распространенные методы разработки могут испортить драматическую игру, и их введение требует осторожности. Напомним, что существует четыре компонента драматической игры: • нарратив и кат-сцены: текст «от автора» переводит игрока в пассивный режим, часто мешая ему индивидуализировать персонажа и играть свою роль; • сложные элементы управления, труднодостигаемые цели, быстрый темп и значительная сложность обучения: игрок все время тренируется, испытывает сильные эмоции, и выполнение миссий в игре забирает все его внимание, отвлекая от проработки роли; • негибкие характеры: речь аватары игрока обычно жестко прописана и допускает лишь небольшие вариации. Нет ничего плохого в заранее проработанном персонаже  – в конце концов, игроки выбрали его, купив игру. Но в процессе игры тот, кто любит театрализацию, хочет как-то обогатить роль, не ограничиваясь настройкой внешнего вида персонажа. Решение игрока о том, кем ему быть и как самовыражаться, должно приниматься в каком-то разумном диапазоне, иначе игра превращается в строго линейную, из серии «иди по следу из хлебных крошек». Ролевые игры, в которые надо играть с бумагой и ручкой, имея дело с мастерами (Game Masters), часто рассматриваются как следующий шаг к развитому нарративу в видеоиграх. Но причина, по которой этот вид роле-

124

 Глава 10. Драматический гейм-плей в The Sims

вых игр представляет интерес, не в наличии мастеров. В таких инди-играх, как Fiasco, их и вовсе нет. Другие игры, наподобие Blades in the Dark, отводят им второстепенное место. Дело не в «мастере», который ведет игру – дело в вашем мастерстве, исследовании роли, понимании того, что происходит с вашим героем. The Sims пошла именно по этому пути и именно потому приобрела стольких поклонников, которые постоянно ждут от нее чего-то большего. Театрализация  – часть нашей природы. Каждый ребенок в каком-то смысле актерствует. Таким образом мы учимся и растем. Это одна из тех вещей, которые делают нас людьми. The Sims – лишь надводная часть айсберга, и многое в этом направлении еще предстоит сделать. Подумайте, как вы будете использовать драматический компонент в своей следующей игре.

Глава

11 Памятные истории о простых правилах: The Curious Expedition Риад Джемили, Maschinen-Mensch

Повествование в игре The Curious Expedition включает в себя сотни процедурно объединенных фрагментов. Ниже я покажу, как набор простых правил позволяет создавать уникальные запоминающиеся сюжеты. В 2014 году, после ухода из проектов уровня AAA, мы с Йоханнесом Кристманом (Johannes Kristmann) основали инди-компанию Maschinen-Mensch в Берлине. В нашем дебютном проекте The Curious Expedition (CE) игроку надо собрать экспедиционную команду и припасы, а затем отправиться в путешествие, чтобы изучить неисследованные памятники викторианской эпохи. Это истории о победах и поражениях, об амбициях, эксплуатации и смерти. Для достижения эффекта новизны и таинственности процедурная генерация игрового мира и самого повествования представлялась не просто допустимой, но и необходимой. Основной игровой процесс СЕ подразумевает циркуляционную стратегическую механику: вы составляете маршрут путешествия и медленно прорабатываете карту (рис. 11.1). Выбирать наилучшие варианты следует с учетом проходимости территории, опасности, требуемого инструментария, настроения команды и других факторов. Каждый маленький сектор на карте – это полный день пути, и на прочесывание местности, сгенерированной с помощью шума Перлина, могут уйти недели. Наша цель состояла в том, чтобы представить путешествие в качестве основного геймплея, вместо того свести роль карты к яркому рисунку для выбора уровня. Во время путешествия команде надо документировать заслуживающие внимания события. Для этого используется процедурный текст дневника; крупным планом показаны продвижение участников экспедиции, окрест-

126

 Глава 11. Памятные истории о простых правилах: The Curious Expedition

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

Рис. 11.1

Три уровня абстракции Вот один из типичных примеров события в игре: однажды ночью, когда вы разбили лагерь, один из членов команды, не чуждый суеверий, замечает стервятника, кружащего над лагерем. Он просит вас, чтобы вы подстрелили птицу (рис. 11.2). Как и в любых неоднозначных ситуациях, «правильного» решения нет. Убив стервятника, вы израсходуете ценные боеприпасы. Но если проигнорируете просьбу собеседника, вызовете его недовольство.

Рис. 11.2

Три уровня абстракции  127 Чтобы это событие появилось, следует наложить друг на друга различные процедурные системы: слой игрового мира, слой событий и слой предложений.

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

Слой событий CE использует декларативный синтаксис текста для описания всех событий. Простое событие может состоять только из идентификатора, текста и некоторого базового эффекта: { id: evt-basic-example sanity: +20 text: Мое состояние улучшилось. }

Одни события могут ссылаться на другие и указывать, какие из них и в каком количестве следует обработать. Текст и эффект каждого обработанного события добавляются на одну и ту же страницу дневника. В вышеприведенном примере с ночным лагерем дневник запускает событие evt-nightRest-sanityLow. Оно содержит вводную текстовую строку («Я разрешил членам экспедиции распаковать вещи и устроиться на отдых») и список, ссылающийся на 50 с лишним событий. Его можно сравнить с кулинарной книгой: каждое событие определяет «ингредиенты», необходимые для прохождения игры, как в рецепте. Вот сокращенная версия этого события, содержащая требование и три ссылочных события, из которых случайным образом выбирается и обрабатывается одно удовлетворяющее требованиям:

128

 Глава 11. Памятные истории о простых правилах: The Curious Expedition

{ id: evt-nightRest-sanityLow reqSanity: 20..50 text: Я уже улегся, как вдруг... select: [evt-vulture, evt-fight, evt-calmNight] }

Самые интересные мероприятия – те, в которых задействованы отдельные члены экспедиции. В следующем примере ключевое слово charEffects используется для указания вложенного события, которое проверяется для каждого участника похода в отдельности и считается допустимым, если по крайней мере несколько членов отряда отвечают указанным требованиям. В данном случае мы ищем двух персонажей, которые могли бы вступить в спор: id: evt-sanity-fight charEffects: { count: 2 reqCharFlags: +humanoid -special text: Диалог между $name перерос в отчаянный спор actions: { actionText: Арест $name text: Мы попытались скрутить $name но $he ускользнул. removeCharacter: true } } }

Предположим, что система нашла двух персонажей – их зовут Ричард Веллингтон и Акульта. В тексте события используется ключевое слово $name, вместо которого подставляются имена членов отряда, прошедших отбор. В результате имеем: «Диалог между Ричардом Веллингтоном и Акультой перерос в отчаянный спор». Дневник также покажет две кнопки действий: «Арест Ричарда Веллингтона» и «Арест Акульты». Эти системы позволяют нам отображать события с различными требованиями и эффектами, которые могут ссылаться на другие события для повышения модульности и усиления вариативности.

Слой предложений На уровне предложения можно применить еще один слой вариации. Тексты, объявленные событиями, также поддерживают рандомизацию слов. В этом отрывке произвольным образом используется один из вариантов в квадратных скобках:

Яблоки в NetHack  129 «[Он|Она] [предложил|предложила] нам разбить здесь лагерь. Я [оценил|отклонил] идею. Нам бы стоило остаться здесь [на короткое время|пока мы не найдем в себе силы двигаться дальше]». Изначально выводимый на экране текст содержал большое количество синонимов, но мы поняли, что синонимы затрудняют локализацию, а события от этого интереснее не становятся. Гораздо лучше запоминаются оттеночные, иногда даже противоречивые вариации в рамках одного предложения. В вышеприведенном примере нам сообщается об остановке в пути. В этом контексте мы вольны поиграть с настроением героя, который может согласиться или не согласиться на долгосрочный отдых.

Одно событие – разные интерпретации Мы установили три уровня абстракции, которые используются для построения каждой страницы дневника. С помощью простого набора правил можно создать немало разнообразных историй. Рассмотрим одно из моих любимых событий, отраженных в дневнике: один из участников экспедиции подходит к вам после приятного отдыха в одной из деревень. Он влюбился в кого-то из местных и хочет остаться здесь. Когда игроки подходят ко мне на мероприятиях и отмечают особо запоминающиеся эпизоды, об этом они говорят чаще всего. Вот несколько вариантов развития событий, о которых мне рассказали: • британский солдат влюбился в местную женщину; • бородатый моряк влюбился в местного парня; • миссионер влюбился в местную женщину. Одно и то же событие затрагивает разных персонажей; учитывая их род деятельности и гендер, каждая ситуация окрашена по-своему и даже касается табуированных тем. Игроки, которые рассказывали об этом, находили эпизод смешным, трогательным или глубоко интимным.

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

130

 Глава 11. Памятные истории о простых правилах: The Curious Expedition

разила меня до глубины души. Поскольку NetHack является игрой с открытым исходным кодом, у меня была возможность посмотреть этот фрагмент кода: if (food) { Вы ("подавились %s.", foodword(food)); if (food->oclass == COIN_CLASS) { killer = "неподобающая еда"; } else {

Всего несколько строк простого кода – я ждал чего-то куда более изощренного! Понадобилось немного усилий, чтобы я вообразил себе невесть что. Подобно тому как я обманулся с яблоками, игроки CE не знают точно, насколько глубок уровень симуляции. Они готовы поверить в сложность системы, объясняя этим пробелы в наборе правил. Это отличный путь преодоления недоверия. До тех пор пока мы обеспечиваем достаточную последовательность в наших процедурных историях, игроки с радостью будут принимать участие в создании правдоподобного мира.

Сюжетная арка Когда мы начинаем соединять отдельные события, связывая причины и следствия, вполне естественным образом возникают так называемые арки. Вот, например, правдоподобная последовательность событий в CE. Наши запасы здравомыслия подисчерпались, и мы начали есть листья коки, чтобы справиться со стрессом. Кухарка, Мари-Элиза Александер, изза нервического расстройства стала чересчур суеверной (то есть характеристика «суеверие» спровоцирована внутренними причинами). На ночь мы разбили лагерь, и Мари-Элизу беспокоит стервятник (если бы у нее не было черты «суеверие», это событие не появилось бы). Мы отказываемся тратить на птицу боеприпасы, которые надо экономить; Мари-Элиза недовольна этим и приобретает качество «сердитость». Во время очередной остановки Мари-Элиза повздорила со скаутом из-за мелочи (событие обусловлено сердитым настроением героини). Мы вмешиваемся, желая поставить Мари-Элизу на место, но она убегает в джунгли. Мы решили не догонять ее. Через несколько дней, когда у нас уже не осталось ресурсов и удача отвернулась от нас, из леса вдруг выходит печальная Мари-Элиза. Она давно наблюдала за нами и теперь просит разрешения вернуться. К счастью, она принесла и еду. (Предыдущее событие удалило ее из отряда, но сохранило ее в резерве персонажей, которые существуют в фоновом режиме и могут использоваться в будущем.) Каждое из этих событий инициируется благодаря особым условиям. Каждое приводит к результату, который способен вызвать или исключить

Сюжетная арка  131 другие события. При этом не задействована система, посвященная разработке долгосрочных сюжетных линий. Тем не менее, неявно связывая отдельные события благодаря определенным зацепкам, мы выстроили последовательную интерактивную сюжетную линию. Не все сюжетные ходы подобного рода будут производить глубокое впечатление. Отчасти это связано с характером персонажей, умирающих или покидающих отряд, а отчасти с тем, что мы как разработчики намеренно ослабляем контроль действий игрока. Но когда серия взаимосвязанных событий приводит к сюжетному повороту, весьма существенному для игрока, мы вознаграждены тем, что эти эпизоды воспринимаются как нечто уникальное и ценное. Таким образом, процедурная генерация истории может дарить удивительные переживания.

Глава

12 Дизайнерские темы и эмоции в игре Даниэль Кук, Spry Fox

Во время прототипирования я обращаю немало внимания на то, какие эмоции возникают при воспроизведении даже самых простых систем. Часто ранние прототипы включают в себя простые формы, абстрактные числа и мало намекают на то, что типичный игрок воспринимает как сюжет (или хотя бы тему). Однако я регулярно замечаю, что даже простая переменная, значение которой растет или падает (когда я, например, теряю ресурс), оказывает воздействие на игрока. Правда, большинство игроков не сильно следит за оттенками ощущений во время игры. Особые успехи или неудачи, особенно в абстрактной игре, конечно, не остаются незамеченными, но тонкие нюансы теряются, так что игрок не очень-то их и ценит. Не считая небольшой группы людей, у которых сильно развито абстрактное мышление, эмоциональная нагрузка «умных» игровых систем пропадает втуне. Мы хотим усилить этот аспект, связать его с интересными темами и сделать эти сплетения смыслов и эмоций видимыми для обычного игрока. Когда я продумываю повествование в своих играх, то редко обращаюсь к линейному построению сюжета, которое характерно для «статических» видов искусства, например литературы и кино. Вместо этого я следую двухэтапному процессу. Во-первых, какие стимулы или обратную связь можно добавить к различным циклам взаимодействия, чтобы усилить эмоции от игры? Во-вторых, как использовать резонансные темы реального мира, чтобы преобразовать «сырые» эмоции в значимый опыт? Мы поговорим о реализации этих двух целей в моей игре Triple Town, а также о некоторых неудачах, которые поджидали меня на этом пути.

Triple Town: эмоции завоевателя В 2010 году я разработал казуальную головоломку под названием Triple Town. Игроку необходимо накидывать объекты на доску; если рядом ока-

Triple Town: эмоции завоевателя  133 зались три одинаковых объекта, они сливаются в новый, более высокоуровневый объект. В конце концов пространство заполняется этими объектами, и требуются ум и расчетливость, чтобы создать из них объекты самого высокого уровня. Triple Town – очень простая абстрактная игра, но с глубоким событийным гейм-плеем, который так привлекал игроков, что они наигрывали тысячи часов. Я регулярно получаю сообщения от людей, которые играли в Triple Town много лет, а ее базовая механика была заимствована такими популярными играми, как Threes и 2048.

Наблюдение за эмоциями в прототипе Механика может порождать эмоции. Стефан Бура (Stephane Bura) описал основы этого процесса в своем основополагающем эссе Emotion Engineering in Videogames («Эмоциональный инжениринг в видеоиграх»)1: помещая игрока в ситуацию, когда критические переменные либо ограниченны, либо движутся свободно, мы вызываем инстинктивную досаду из-за потери или, напротив, радость приобретения. • Переменные, за которыми стоит наблюдать, могут быть любыми, главное – чтобы они имели ценность в игре: время, территория, валюта, предметы – все, чему вы придадите значение. • Скорость изменения: существует целый спектр эмоциональных воздействий, обусловленных скоростью изменения переменных. Медленное истощение ресурса вызывает иные чувства, чем внезапная потеря. • Направление изменения переменной также важно. Существенный выигрыш резко отличается от существенного проигрыша. • Предсказуемость изменений: на эмоции влияют темп и диапазон изменений. Предсказуемый устойчивый спад ощущается совсем иначе, чем быстрая и неожиданная флуктуация. Игроки по большей части тестируют игровой мир и пытаются предсказать, что произойдет дальше. Их эмоциональное состояние в значительной степени зависит от этих прогнозов и ожиданий. Играя в ранние прототипы Triple Town, я пытался отследить различные эмоциональные сигналы. Я не увлекаюсь теоретизированием – просто я внимательно наблюдал за своим эмоциональным состоянием во время игры. И вот что заметил. • Решительность: я предпочитал составить план – в каких местах соединять объекты. Располагая четкой информацией, я знал, что могу неплохо спланировать продвижение в игре. 1

www.stephanebura.com/emotion/

134

 Глава 12. Дизайнерские темы и эмоции в игре

• Предвкушение: чтобы реализовать свой план, я ожидаю, пока нужный мне объект появится среди рандомно выпадающих. Однако с большой вероятностью прогнозировать появление нужного объекта невозможно. • Напряжение: несвязанные объекты занимают много места, и когда оно заканчивается, вы проигрываете. Чем дольше мне приходилось ждать правильных фигур, тем быстрее заполнялась доска и тем больше я рисковал проиграть. С точки зрения Стефана Бура, критическая переменная территории все больше размывалась, предвещая неминуемый провал. • Облегчение: когда нужная мне фигура все-таки появлялась на поле, я наконец мог объединить несколько объектов. Таким образом освобождалось место на доске, и я начинал строить новые планы. Игра в том виде, в каком я ее описал, на практике была скучноватой. Строить планы, а потом ждать, пока выпадет нужная фигура, было не слишком увлекательно. Поэтому мы добавили случайный движущийся элемент – блокировщик, который мешает совершать определенные движения. Первоначально это были черные квадраты, которые случайным образом появлялись за каждый ход. Их добавление всколыхнуло целый ряд новых эмоций. • Разочарование: вы получили идеальный объект, но тут именно в том месте, которое вы для него подобрали, появился блокировщик! Тут уж любой огорчится. Надежный ресурс (тактически значимое пустое пространство) внезапно становится недоступным. • Злоба: блокировщики движутся абсолютно произвольно, но иногда игроку кажется, будто они мешают намеренно. • Агрессия: игрок начинает подозревать, что у черных квадратов есть свой коварный умысел, и мечтает расправиться с врагом. С точки зрения скорости добавление блокировщиков добавило игре новое свойство, которое я с интересом изучал. Игрок строит планы, затем возникают новые обстоятельства, и приходится эти планы корректировать. Тем не менее умные игроки быстро поняли, что гораздо лучше выбрать правильное соотношение двух нижеследующих задач. • Планирование вариантов: обеспечить надежность долгосрочных планов в условиях дисперсии. • Оппортунизм: не упускать из виду краткосрочные возможности. Каждое движение – это сознательный компромисс между настоящим и будущим. Если воспользоваться терминологией Сида Мейера (Sid Meier),

Настройка темы  135 плотность интересных решений резко возросла. Это уже не просто какая-то холодная логика; поощрение игрока к обдумыванию стратегии в нескольких временных диапазонах расширяет и спектр эмоций. Раньше каждое движение порождало лишь один эмоциональный окрас. Теперь же каждый ход поднимал целый пласт эмоций. Я мог бы расстроиться из-за какого-то сиюминутного результата, но еще надеялся на долгосрочный план. Такой невероятно простой прототип можно было использовать часами и при этом испытывать глубокую вовлеченность.

Настройка темы На этом этапе прототипирования я был поражен тем, насколько сильную неприязнь вызывают абстрактные черные квадраты. Я разрабатываю игры не просто как функциональный коммерческий продукт, но и как средство самовыражения и самонаблюдения. Даже при создании абстрактных игр я нахожу чрезвычайно полезным изучить на их примере человеческий фактор. Это подталкивает к развитию новой механики, которая подарит игрокам знакомые ощущения при входе в вашу игру. Многие темы, которые я использовал в играх, опираются на мой личный опыт, и Triple Town не исключение. Я вырос в сельской местности штата Мэн. На этой территории были река, бумажная фабрика и поселение. Среди моих одноклассников были потомки англичан, прибывших в Америку около 400 лет назад, и местных жителей, которые населяли район задолго до этого. В школе мы читали о зверствах, которые колониалисты учиняли в отношении местных. Однако теперь все мы как-то ладили, вместе играли в баскетбол, встречались, дружили… Странное дело – осознание этого диссонанса пришло лишь спустя годы. Впервые я задумался об этом, гуляя в лесу летом. Вдруг я понял, что здесь творился геноцид. Тяжелые мысли, ощущение беды, пришедшей в эти края сотни лет назад и наложившей отпечаток на жизнь моих современников… Меня охватил ужас, а вместе с тем я не мог отделаться от наивного вопроса: как так вышло? Почему одни люди могут так откровенно издеваться над другими? В абстрактном игровом прототипе с обновляющимися объектами и малоприятными черными квадратами я вдруг увидел некое подобие ответа. В Triple Town игроки начинают ненавидеть абстрактную фигурку только лишь из-за того, что она занимает место, на которое они претендуют! Я начал относиться к прототипу как к маленькой чашке Петри, в которой можно наблюдать механизмы поведения человека. Мне хотелось уловить хотя бы какие-то закономерности. Тогда я не подозревал, что подобные эксперименты с системами уже довольно давно используются в социальной психологии и теории игр.

136

 Глава 12. Дизайнерские темы и эмоции в игре

• Вы разбиваете систему на простые взаимодействия агентов, основанные на правилах. • Каждое действие агента имеет свою стоимость и сулит определенное приобретение. • Каждый агент следует стратегии, которая направлена на оптимизацию результата. Иногда люди корректируют свои стратегии с тем, чтобы одолеть соперника. Например, в игре «камень, ножницы, бумага» вы заметили, что другой игрок всегда показывает «бумагу». После этого вы начинаете показывать «ножницы». • При наличии определенного набора вознаграждений и компромиссов возникают устойчивые модели выбора стратегий; аналогичные процессы происходят и в реальном мире. Поведение, которое мы порой объясняем традициями («так сложилось исторически»), на самом деле имеет сильные структурные регуляторы, в которых гораздо больше корысти, чем нам кажется. Если использовать терминологию гейм-дизайна, то люди ведут себя так, потому что правила созданы для поощрения определенных доминирующих или дегенеративных стратегий. В частности, Никки Кейс (Nicky Case)2 выполняет любопытнейшую работу (основываясь на гораздо большем объеме данных) и использует эти модели для изучения дискриминации, конкуренции, сегрегации, правил поведения толпы и других аспектов человеческого поведения. Играя с числами в моем прототипе, я исследовал идею, которая в детские годы запала мне в душу: колонизация – это стратегия захватчиков и эксплуататоров, основанная на системе ценностей, в которой даже самых невинных людей почитают за врагов, которых надо уничтожить или обратить в рабство. Именно такие ассоциации из реального мира я хотел преподнести игрокам в абстрактной форме.

Использование тем для усиления эмоций Чтобы понять, как придать такой глубокой теме эмоциональное звучание средствами механики, нам нужно было разобраться в том, как работают эмоции. Эмоции возникают по меньшей мере на трех уровнях. 1. Тело: существует изначальная физиологическая реакция, когда ваше тело воспринимает нечто и принимает решение. «Бей или беги», благосклонность и дружба  – примеры самых грубых, инстинктивных телесных реакций, с выплеском адреналина или окситоцина. Обычно это реакции «животного уровня», которые подготавливают тело к действию. 2

http://ncase.me/

Использование тем для усиления эмоций  137 2. Ум: вы маркируете события, учитывая контекст и извлекая из памяти похожие ситуации. 3. Цикл обратной связи: наконец, два вышеназванных уровня объединяются, чтобы умерить или усилить первоначальную реакцию. У человека, приготовившегося драться, начинается сердцебиение, тело напружинивается. Но если вы увидели, что навстречу вам идет не враг, а ваш добрый знакомый, наступает эмоциональная разрядка  – вы смеетесь. Чтобы поподробнее изучить тему, обратитесь к двухфакторной теории эмоций: вы найдете массу примеров того, как разные контексты могут преобразовать базовую физиологическую реакцию в мириады тонких эмоций. Большая часть эмоций, которые я наблюдал в своем первоначальном абстрактном прототипе, может быть отнесена к реакциям на уровне тела, но и на ментальном уровне случаются прорывы. По мере того как игрок привыкает к системе потерь и выигрышей, он на краткий миг погружается в самоанализ: было ли в его жизни нечто напоминающее этот опыт? Ваша работа как дизайнера заключается в том, чтобы обеспечить стимуляцию тех или иных переживаний (рис. 12.1).

Рис. 12.1. Оформление экрана лучших результатов: тема «Колонизация»

В Triple Town мы конкретизировали абстрактный гейм-плей в нескольких отношениях.

138

 Глава 12. Дизайнерские темы и эмоции в игре

• Территория: игровая доска превратилась в небольшой остров. Так реализуется идея о том, что территория может быстро переполниться. • Заполнение: обновляемые объекты – леса, здания, поселения. Это подчеркивает мотив строительства, расширения и роста, характерный для колонизации. • Империя: расширение вашей вымышленной империи оценивается как прогресс в игре. • Медведи: черные квадраты превратились в мирных гигантских медведей. Я мог бы включить в игру более очевидных жертв колонизации, но это вызвало бы у игроков, которые прежде имели дело с черными квадратами, стандартную реакцию. Игроки не стали бы размышлять о системах и привязались бы к нарративу. А мне хотелось чего-то более нейтрального, чтобы дать людям подумать о своих реакциях. Многие выступают против убийства медведей, однако существует долгая история формирования антигуманного подхода («это же не люди, а животные!») и ослабления моральных норм; так что этот неоднозначный образ хорошо подходил для игры. • Военная тематика: вместо того чтобы ликвидировать черный квадрат, игрок должен убрать медведя с поля, применив оружие. Эта тема вдохновила меня на изменения и в области игровой механики. • Миграция. Медведь не телепортируется, а перемещается с квадрата на квадрат, как будто бы идя по своим делам. • Резервации. Это предсказуемое движение позволяет игрокам заманивать медведей в ловушку, окружая их деревьями или другими зданиями. Удобнее разместить медведей подальше от места строительства. Эта эволюционирующая стратегия тоже напоминает поведение колонизаторов (перемещение аборигенов с окультуренных территорий в резервации, гораздо более скромные по размеру). • Церкви. Если слишком много медведей скучилось в закрытой местности, они вымирают, и на соответствующем месте появляется могильная плита. При появлении и объединении нескольких надгробий возникает церковь, напоминая о том, что места массовых убийств часто отмечены развитием культа. Метафора инвестирования в религию буквально на костях местных жителей казалась мне довольно очевидной, но лишь немногие игроки ее оценили.

Triple Town как провальный эксперимент Теперь, оценивая игру Triple Town с точки зрения повествования, я могу сказать, что она оказалась провальной во многих отношениях. Вот как бы я оценил свои усилия.

Проблемы коммуникации  139 • Личностный рост: успех. Как дизайнер я чувствую, что мое исследование систем колонизации не прошло для меня даром. Я получил несколько глубоких уроков о том, как сбалансированная система раскрывает моральный облик игрока. Если оценивать игру как средство личностного роста ее автора, она получилась удачной. • Смысловое наполнение: неудача. Очень немногие игроки стремились в процессе игры преодолеть свои комплексы «колонизатора». Если рассматривать Triple Town как интерактивное послание игроку, содержащее мою позицию по поводу захватнической тактики, оно явно не дошло до адресата. • Этический посыл: неудача. Многие игроки, которые все же обратили внимание на моральную подоплеку, были неприятно удивлены. Поднимать такую серьезную тему в казуальной «мультяшной» игре, по их мнению, было как-то неуместно.

Проблемы коммуникации Мой первый провал можно рассматривать как неудачу в области коммуникации. Прагматическая (не художественная!) теория коммуникации подразумевает автора, сообщение и аудиторию. Типичный пример неудачной коммуникации – плохо продуманное сообщение неискушенного автора не достигает аудитории. Коммуникация – по сути своей очень сложный процесс, осложненный целым рядом возможных помех, начиная от несовершенства канала связи до невнимательности слушателей, их недостаточной эрудиции и личных особенностей. Таким образом, для автора сообщения важно 1) понять коммуникационные ограничения; 2) подготовить настолько ясное и эффективное сообщение, насколько это возможно. С этой точки зрения многие мои посылы в адрес игроков не достигли цели. • Симпатия. Милые мишки навели многих игроков на мысль, что в такой игре не может быть серьезного подтекста. Симпатичный зверек в западной культуре воспринимается как образ для детей или, во всяком случае, что-то простенькое, незатейливое. (Иногда в таком восприятии кроется немалая доля сексизма.) Я-то надеялся, что забавные медведи заставят игроков переосмыслить свои агрессивные действия в их отношении. А игроки отреагировали так, как люди чаще всего реагируют на когнитивный диссонанс! Они удвоили свою прыть и благополучно этот диссонанс подавили. • Казуальность. Triple Town – обычная игра в казуальном жанре «по три в ряд». Когда она появилась на рынке, подавляющее большинство таких игр было чисто абстрактными или с неглубоко прорабо-

140

 Глава 12. Дизайнерские темы и эмоции в игре

танными темами. Bejeweled, на тот момент самая популярная игра в этом жанре, просто предлагала собирать драгоценные камни, не отягощая игрока никакими концепциями. Не имея привычки видеть в жанре что-либо серьезное, игроки, разумеется, не стали искать никаких скрытых смыслов. Выражаясь образно, человек готов встретить волка в лесу, а не в торговом центре. • Тонкие намеки. Большинство игроков вообще не восприняли мотив колонизации. Первое их впечатление: это игра про объединение зданий, из которых надо слепить здания покрупнее. Ну да, еще там медведи бродят… Когда вы создаете игру, вам сразу нужно спросить себя: как люди воспримут вашу тему «в первом чтении»? А во втором, когда они копнут немного глубже? Тонкие нюансы, которые я запрятал в игру, подходили только для тех, кто склонен глубоко копать. Краткое замечание о сексистском подходе к играм: казуальные игры с «няшным» дизайном чаще всего рассчитаны на женщин. Те, кто предпочитает «суровые мужские забавы», эту категорию обычно разносят в пух и прах. Говорят о том, что это глупость и пустая трата времени, что подобные вещи привлекают только безмозглых куриц, которые легко ведутся на манипуляции… Журналисты и критики редко снисходят до таких игр, а уж если рецензируют их, то почти никогда не находят в них серьезной начинки. С огорчением признаю, что это всего лишь одно из проявлений исторически сложившегося подхода: то, что делают женщины, кажется менее значимым, чем мужские дела. По состоянию на 2018 год популярная игра, где герой-мужчина приканчивает своих врагов-мужчин выстрелом в голову, чаще воспринимается как продуманное произведение искусства, чем почти любая игра, которая нравится преимущественно женщинам. Тенденция любопытная, но стоит попытаться ее переломить.

Недочеты в плане этики Одно дело – спросить себя, дойдет ли твое сообщение до адресата, другое – задуматься: стоит ли вообще его посылать. То, что вы говорите, обладает определенной силой, может влиять на чужое мнение, информировать или дезинформировать. Сильные мира сего могут использовать слова в целях пропаганды; случайным словом можно обидеть ранимого человека. Игры с их системной и повествовательной нагрузкой далеко не нейтральны – нравится нам это или нет, но они влияют на игроков. Помимо того что мы должны соблюдать правила поведения в обществе, у нас есть ответственность и за идеи, которые мы доносим до аудитории в тех или иных целях.

Заключительные соображения  141 Triple Town слегка подкачала и в плане этики – по двум причинам. • Ограничения «низкого искусства». Критика захватнической политики плохо увязывается с милой коммерческой игрой: получается, что она берется за серьезный предмет с некоторой непринужденностью. Это рождает и другие, более широкие вопросы: можно ли использовать популярные, откровенно коммерческие игры в целях обсуждения серьезных тем, никого при этом не задев. • Укрепление негативных тенденций. Еще более суровое последствие (см. https://veganithaca.wordpress.com/2013/07/25/oppression-in-games-whatare-we-learning/) – игра, вместо того чтобы развенчать колонизаторов, неявно дает понять, что их система ценностей по-прежнему доминирует в обществе. Игроку, который, может быть, и не подозревал в себе ничего подобного, принимаясь за «безвредную игру», позволяют получить приятный опыт захвата земель – а в конечном счете еще больше поддерживают идеи, ценности и практику агрессоров. В общем, Triple Town – вовсе не «невинная игра»3. Ее механика и дизайн выбраны не случайно, и было бы неверно обсуждать ее в том же ключе, что и игры, где тема колонизации затронута между делом. Увы, даже игры с определенным эмоциональным посылом могут оказать воздействие, противоположное тому, на которое рассчитывал автор. Вполне возможно, что, учитывая неоднозначность темы, Triple Town только подлила масла в огонь желаний игроков. Я регулярно общаюсь с игроками и спрашиваю, что они получили от этой игры. Одни поняли, в чем дело, другие нет, третьи открыли передо мной совершенно новые перспективы. Я все это принимаю к сведению и думаю, что можно было бы улучшить.

Заключительные соображения Прошло много лет с момента создания Triple Town, и, как и все мои игры, она меня кое-чему научила.

Важность практики Первый урок, который я усвоил: апеллировать к эмоциям игроков и использовать резонансные темы полезно только тем, кто накопил подобный опыт. Часто мы читаем какую-нибудь статью, восхищаемся тем, как четко выражена идея, и думаем: «О, если реализовать эту механику, я добьюсь отличного результата: автор ведь все разложил по полочкам!» Увы и ах. Путь к мастерству – это долгие годы практики; вот когда вы натренируетесь на нескольких играх, то мало-помалу заметите, насколько все стало лучше. 3

www.lostgarden.com/2011/10/triple-town-beta-now-with-bears.html

142

 Глава 12. Дизайнерские темы и эмоции в игре

• В рогалике-головоломке Road Not Taken я решил показать, как в традиционном обществе живут люди, которые по каким-то причинам не имеют детей. • В Leap Day мы показываем, как дифференцированные средства производства формируют тесные связи в рамках микросообщества и позволяют наладить сотрудничество. • В многопользовательском симуляторе деревни Beartopia я представил сообщества, куда вливаются чужаки, которых жителям предстоит узнать, принять и полюбить. Каждый из этих проектов отнял у меня год-другой, и в каждом отмечаются серьезные недостатки. Я повторил некоторые ошибки, допущенные в Triple Town, упрямо наступая на старые грабли: игроки не ждут многого от «няшных» игр! И, конечно, на это наложились новые недочеты. Например, в Leap Day слишком высокая когнитивная нагрузка на основные механики. А в Beartopia подкачали планы распределения. В то же время прогресс налицо. Общаясь с теми, кто играл в мои новые игры, я отметил, что их эмоциональное восприятие близко к тому, чего я как автор хотел добиться. Люди рассказывают мне, как игры заставили их задуматься о своей собственной жизни и понять, что они хотели бы изменить. Этого для меня вполне достаточно, чтобы продолжать стремиться к большему.

Обывательский взгляд Мой второй урок заключается в том, что большинство игроков не сильно обременяет себя философствованием. Довольно часто я пытаюсь сообщить им такие вещи, за которые, может, не стоило и браться. То, что я силился зашифровать, им лучше было бы изложить открытым текстом, обходя ограничения компьютерных систем. Я уже смирился с этим. На то, чтобы приучить широкую аудиторию к новым, более сложным формам искусства, уйдет не одно десятилетие. Над этой задачей бьются тысячи авторов, создавая множество произведений. Моя работа сводится к тому, чтобы хотя бы некоторые игроки поняли: игры не так просты, как кажется. И я верю, что другие разработчики тоже вносят свой вклад в развитие этой темы.

Продолжаем разговор И наконец третий урок: общение – это возобновляемый процесс. Игра – лишь начало диалога, она вновь и вновь приносит обратную связь. Вы начинаете с отправки сообщения, а затем прислушиваетесь. Как отреагировали люди? Что они поняли? Что сделали после этого? Затем вы корректируете свое сообщение, чтобы оно воспринималось более адекватно.

Продолжаем разговор  143 Я перекраивал Triple Town по меньшей мере четыре раза на втором этапе работы (о первоначальном прототипе я не говорю). Один релиз игры был разработан для E-Ink Kindle, другой для Facebook, третий для Steam и четвертый для мобильных устройств. Каждый раз я вношу изменения, основываясь на том, что я услышал от игроков. И с каждым разом послание становится немного яснее. Возможно, когда-нибудь появится новый проект, основанный на системном нарративе Triple Town. Может быть, он мне удастся лучше.

Глава

13

Эмерджентное повествование в Dwarf Fortress Тарн Адамс, Bay 12 Games

Dwarf Fortress, как и многие другие игры в этом жанре, не имеет авторской истории и даже прописанных вручную персонажей или локаций. Тем не менее игроки сами создали массу впечатляющих историй по мотивам игры, и описанные в них события тесно связаны с ее механикой. Здесь мы имеем дело с эмерджентным повествованием1 – историями, которые придумывают (а иногда и распространяют) игроки, описывая свой игровой опыт и часто добавляя детали, которые в самой игре отсутствуют. С одной стороны, это уже выходит за рамки простого пересказа событий в игре, а с другой, не дотягивает до уровня фанфиков. За Dwarf Fortress закрепилась репутация сложной игры, которая опирается на процедурную генерацию; но ни одно из этих свойств еще не гарантирует эмерджентного повествования. Чрезмерная сложность порой мешает игроку понять, что происходит, а процедурность может превратить игровой мир в хаос или заставить игрока скучать. Тем не менее даже в условиях, когда игра усложняется и меньше зависит от авторского контента, можно создать основу, на которую игроки с удовольствием будут нанизывать свои сюжеты.

Проектирование эмерджентного нарратива Мы подходим к этой проблеме, как и к другим проблемам процедурной генерации. Простой, обычно результативный метод – создать пример хорошего вывода и спросить: «что я должен сделать, чтобы создать целый ряд таких же?» Возьмем для примера фрагмент истории, который рассказывает гипотетический игрок. Итак: «Кобольд прокрался в мастерскую и украл великолепный скипетр Уриста. Урист несколько дней пребывал в печали». 1

Emergent narrative – буквально «нарастающий» нарратив. – Прим. ред.

Проектирование эмерджентного нарратива  145 Это достаточно распространенное событие в Dwarf Fortress – так один игрок может пересказать другому, что произошло, – но при создании игры с нуля этот простой текст вызывал массу вопросов: • Кобольд. Кто это и какой у него характер? Откуда он появляется и как часто? Он всегда проявляет себя как вор? • Прокрался. Есть ли скрытая механика в крадущемся движении? Видно ли это на карте игры? Может ли игрок сказать, что при этом происходит? Может ли игрок предотвратить вторжение персонажа или иным образом взаимодействовать с ним? • Мастерская. Как игрок взаимодействует с мастерской? Как он может контролировать ситуацию здесь и насколько это значимо для повествования? Что находится в мастерской? • Украл. Скипетр принадлежит одному герою или целому сообществу? Какие законы существуют в этом обществе? Применимы ли они к кобольдам? Воровство как-то должно быть наказано или то, что произошло, больше напоминает ситуацию с медведем, который стащил у туристов корзину с провизией? • Урист. Ага, имя! Интересно. Откуда он взялся? Есть ли у игрока возможность самому давать имена героям? Кобольд – такое же разумное существо, как и Урист? • Великолепный. Похоже, это определяющее свойство скипетра. Что оно значит? Что этот предмет изготовил великий мастер? Предусмотрен ли в игре «рейтинг» ремесленников, которые изготавливают предметы? • Скипетр. Довольно затейливая штука! Есть ли в игре какая-то система ценностей, связанная с неживыми объектами? Каково значение скипетра? Это знак царской власти? Может ли игрок (или мастер) определить ценность этой вещи? • Уриста. Опять же, значит ли это, что предмет принадлежит лично Уристу? Или он этот предмет изготавливал в мастерской? В общем, как Урист связан со скипетром? • Пребывал в печали. Это просто эмоция или измеримый показатель, как-то влияющий на процесс игры? Для развития сюжета нам достаточно простых реакций или важна вариативность? Может ли игрок оценить, что произошло? Настолько ли это значимо, чтобы он упомянул об этом при пересказе событий? Как Урист обнаружил, что скипетр украден? Насколько качество скипетра («великолепный») повлияло на эмоцию? • Дней. Как протекает время в игре? Как это отображается? Если время сжимается, как часто бывает в играх, насколько это затрудняет повествование или игровую механику?

146

 Глава 13. Эмерджентное повествование в Dwarf Fortress

Этот фрагмент сам по себе вызывает много вопросов, но если мы последовательно на них ответим, то сможем подарить игрокам отличную историю. Какие вопросы наиболее уместны? «Дни»  – это второстепенный параметр, «великолепный» – малозначимая деталь; если мне важно поскорее создать прототип, я просто сгенерирую дварфа, который трудится в мастерской. Для краткости я присвою дварфу имя из простой таблицы; тип предмета, над которым он работает, будет выбран из другой таблицы, а мастерская будет произвольно расположена на какой-то местности, обозначенной на карте. Вот и все, чего мы добились за один-два дня работы над Dwarf Fortress – решив, что речь будет идти о гномах (дварфах), которые разыскивают подземные клады. Кобольды появились чуть позже. Об эмоциях речь зашла намного позже – это хорошая характеристика, но никак не движущая сила повествования, если она не приводит к суровым последствиям («и тогда Урист закатил истерику!»). Возможна и другая расстановка приоритетов, и она приведет к созданию других игр – вы все равно не сможете объять необъятное. Не все эти игры позволят игрокам создавать уникальные истории; зато у них будут другие достоинства. С самого начала сфокусировавшись на том, чтобы игроки могли продумать свои истории, мы сосредоточились на механике, которую в противном случае проигнорировали бы, и избегали деталей, которые вряд ли встретятся в историях игроков. Если вы не ориентируетесь на возможные истории игроков, то можете увлечься проработкой тривиальных линий, особенно если ваша игра содержит элементы симуляции. Очень легко перепроектировать симуляцию, предназначенную для повествовательных целей. В приведенном примере не описана природа скипетра. Увлеченный игрок может подробно рассказать о том, как выглядит этот предмет, но вряд ли это будет полезно для сюжета, если только от внешнего вида скипетра не зависят какие-то дополнительные ходы. Детальное моделирование не всегда связано с эмерджентным повествованием, и чрезмерная детализация может губить сюжет, засоряя память игрока незначительными фактами. В то же время нарративный потенциал связан с имитационным. Наш анализ истории подразумевает набор связанных элементов и систем – и все то, что необходимо для выстраивания конкретного эпизода. Для истории, состоящей из случайных событий, часто характерны резкие сюжетные повороты, и если они недостаточно связаны друг с другом, нить повествования легко рвется. Мы работаем над тем, чтобы вычленить механики и объекты, встроенные в повествовательный поток, и как-то их центрировать. Недостаточно намешать в игру разных механик, взболтать их и надеяться, что из этой смеси получится хорошая история! Следует обратить внимание на тип и плотность связей, спроектировать и реализовать эти связи так, чтобы вы и игрок улавливали их значение.

Проектирование эмерджентного нарратива  147 Как только вы почувствуете, как в русле созданных вами механических сочленений движется история, вступает в действие ваш общий дизайнерский замысел. Как изменение механики игры повлияет на ход истории? Тесные связи подсистем облегчают построение сюжета или заводят его в тупик? Вот еще одна причина, по которой важно как можно скорее реализовать на практике отдельные эпизоды вашей игры, пока вы еще оттачиваете повествовательную линию. Интуитивные догадки в отношении эмерджентного нарратива могут быть проверены в ходе постоянного тестирования игры. В случае с Dwarf Fortress мы наблюдаем как преимущества, так и недостатки сюжета. Исследование игрового мира и получение новых навыков – тупиковая механика: она не связана с элементами, которые традиционно важны для нарратива. Игрок может создать библиотеку, набрать команду исследователей, создавать и переписывать научные труды, добавлять книжные полки, расставлять столы и т. д., но в целом то, что происходит в библиотеке, не влияет ни на что другое. На момент написания этой статьи мы еще не внедрили в игровую механику мотив новых технологий: скажем, если бы научные прорывы позволили дварфам принципиально изменить способ работы, это привело бы к новым сюжетным поворотам. Даже ссоры между мастерами и подмастерьями еще не воплотились в игровой механике. Можно представить себе относительно интересную историю о том, как в крепость забрел ученый, но вряд ли это будет ключевая тема в истории, которую поведает нам игрок. С другой стороны – и это довольно удивительно! – одним из центральных сюжетообразующих механизмов является гравировка. Это, с одной стороны, вид работы, которую выполняют дварфы, а с другой  – важное умение в игре. Граверы могут изображать исторические события, других дварфов, их любимые блюда, животных, которых они боятся… Игрок может выбрать, куда поместить гравюру (как правило, это знаковое для него место), частично или полностью определить, что изображено на гравюре или же оставить это на усмотрение художника-дварфа. Гравюры взаимодействуют с физическими описательными системами через выбранную стену или предмет. Эти связи имеют свои последствия. Многие поразительные истории сообщества повествуют о падении крепостей, и решение о том, какую гравюру дварф делает в конце, придает сюжету особый смысл. Возможно, последний из оставшихся в живых создал эпический портрет повелителя демонов, убитого в финальной схватке? Или представил сцену, воспевающую любовь к труду, – историю основания крепости, полную надежд на лучшее будущее? А может быть, на этой гравюре запечатлены дварфы, окруженные своим любимым сыром  – но на лицах их печаль? Рисунок отражает историю и порожден ею, поскольку игровая система насыщена

148

 Глава 13. Эмерджентное повествование в Dwarf Fortress

соответствующими взаимосвязями – как физически (через дварфа-художника), так и концептуально (через исторические события и характеры персонажей); при этом выбор гравюры определяется игроком. Впрочем, некоторые тупиковые ветви не просто неизбежны – их даже разумно оставить в игре. Для любой функции, которую вы добавляете, важно предусмотреть некий пункт, который никуда не ведет в плане сюжета. Например, в Dwarf Fortress мы поиграли с названиями книг. Названия генерируются с помощью довольно простого метода списка и подстановки, и игрокам это нравится; некоторые названия иногда дают пищу для размышлений и оживляют исследование библиотеки, хотя функция у них чисто декоративная. Из-за ограничений языковой системы привязывать названия книг к другим механикам было бы слишком сложно, но нам и не нужно этого делать. Если система хорошо работает в игре, выполняет какую-то роль и не препятствует последующим дополнениям, вы можете отшлифовать ее, позволить ей делать свою работу и двигаться дальше, даже если она не вносит основной вклад в повествование. Просто помните: чем дольше вы шлифуете некий элемент, тем труднее может оказаться его улучшить, если вы сочтете это необходимым. Пунктов, где можно задержаться, не должно быть много, и вам нужно тщательно их выбирать. Как было сказано выше, длинный список названий книг Dwarf Fortress нелегко скомпоновать из-за особенностей языка, и добавление еще одного языка лишь усложнило бы задачу. И все-таки желательно довести этот элемент до блеска, так как эмерджентное повествование гораздо более эффективно, когда игрок играет в игру, которая ему нравится. А в этих целях пригодятся все ваши дизайнерские навыки. На самом деле ваш богатый опыт имеет решающее значение. Даже при большом наборе связанных механик и туго заплетенном сюжете, когда игрок постоянно сталкивается с интересными ситуациями, желание игрока достраивать сюжет и создавать связные истории на основе неполной информации не всегда побуждает его делиться своим рассказом с другими игроками и вообще с кем бы то ни было. Какие элементы вашей игры знакомы и уместны? Что поняли бы из рассказа игроков люди, которые никакого понятия не имеют об игре? Dwarf Fortress опирается на общеизвестные мотивы в жанре фэнтези. Поскольку ваш игрок будет строить свою историю, попробуйте опереться на те реалии, с которыми он имеет дело. Как элементы вашей игры соотносятся с современным миром? Вызывают ли они отклик лично у вас – и зацепят ли других людей? Можете ли вы сфокусировать игру на этих аспектах механически или эстетически (а лучше и так, и этак)? Можно ли продумать другие связи между игроками и игровыми элементами? Отличный пример для обсуждения – заданные имена персонажей и возможность игрока наделять их именами. Первое почти всегда наличествует в истории, а второе – почти наверняка нет. Размышление о роли игрока

Перспектива и видение игрока  149 (в данном случае превращение пассивного элемента в творческую задачу игрока) – это еще одна важная часть эмерджентного повествования. Давайте обсудим, что может делать игрок.

Перспектива и видение игрока Место игрока в игре определяет повествовательную перспективу, то, как игрок узнает о событиях, и возможные способы влияния на развитие сюжета. Вы, вероятно, уже сформируете некоторое представление о роли игрока, прежде чем начнете заниматься другими деталями своего проекта, но важно понять, как роль игрока повлияет на эмерджентное повествование и как использовать способности игрока для создания более яркой истории. В Dwarf Fortress мы понимаем игрока как «управляющего крепостью»; это дает дварфам относительную независимость, но все-таки игрок временами их направляет. К примеру, неявно побуждает агентов ИИ создавать пространства в шахтах, где трудятся дварфы, и присваивать этим пространствам функции и названия, что отчасти упрощает построение сюжета. Также игрок задает большинство предметов, которые производятся в форте. Пространства и объекты, созданные игроком, в большей степени наполнены смыслом, так как игрок обычно имеет более четкие намерения, чем игра; последующие события будут развиваться именно в этих пространствах, с использованием именно этих предметов. Конечно, есть и другие возможности. Игрока можно было бы наделить возможностью управлять только одним дварфом, или каким-либо духом, или божеством,  – каждая из этих ролей имеет свои недостатки и преимущества. Для нас было важно, чтобы игроки могли адекватно усваивать информацию и быстро понимать, что происходит во всей крепости; кроме того, дварфы должны были временами (особенно в свободные от работы часы) действовать самостоятельно: тогда может происходить нечто удивительное для игрока и предоставляющее дварфам «право на самоопределение» в их собственном мире. В вышеозначенных целях игрок должен знать, что происходит. Даже в небольших проектах поток данных может быть огромным, и нам нужно избирательно выделять особенности базовых систем, которые мы считаем важными. Частично это уже было сделано при выборе механики Dwarf Fortress – но это только начало. Мы можем использовать подсказки – предупреждения, объявления, окна для выбора опций и другие более тонкие индикаторы, чтобы дать игрокам понять, что история требует продолжения. Игроки могут действовать активно (ситуация порождает практическую реакцию) либо же менять намерения или просто реагировать эмоционально. Они могут всего лишь наблюдать за важным в сюжетном плане событием. Если оно их в достаточной степени заинтересовало, они могут исследовать ситуацию, используя полномочия, которыми вы их наделили.

150

 Глава 13. Эмерджентное повествование в Dwarf Fortress

Это может привести к активному действию, но даже когда игрок просто топчется на месте и в конечном счете ничего не предпринимает, это может вызывать новые связи, которые составят немалую часть истории. Если игрок не заинтересован в сигнале, который ему подает игра, он может проигнорировать его. Плохо, если это происходит слишком часто; иногда игра вынуждает игрока к действию, но определяющим фактором все равно остается его способность сознательно контролировать взаимосвязь событий. При этом не обязательно ввязываться во все, что предлагает игра. Вариант «недеяния» тоже может поддержать историю, которая возникла в уме игрока: его право – действовать, изучать, наблюдать или двигаться дальше. Это работает и в другом направлении: может возникнуть целый поток разных запросов, который мешает прохождению игры, так что хорошо бы попытаться найти какие-то опорные точки, более значимые или динамичные, чтобы освободить игрока от бремени выбора. Наиболее важными свойствами и отношениями могут быть пространственные (где находится X?) – они естественным образом просматриваются на экране, а также социальные или концептуальные (почему X разговаривает с Y? Что думает X?). Все зависит от ситуации и роли. Роль игрока, кроме прочего, ограничивает виды подсказок, запросов и действий – возможных или имеющих смысл. В худшем (с точки зрения эмерджентного повествования) случае мы возвращаем игрока к явно неинтерактивному контенту на пройденных этапах игры, чтобы дать ему возможность прочитать это и включить кое-что оттуда в свои истории. В Dwarf Fortress так происходит с подробными боевыми отчетами, которые игроки могут открыть, когда захотят. Игроки часто будут использовать эти отчеты, чтобы детализировать свои истории, если им покажется, что особенности боя могут быть интересны. Преимущество использования открытых отчетов состоит в уменьшении потока данных, который игроки «поглощают» во время активной игры; но это требует тщательной приоритизации информации. В Dwarf Fortress, например, смерть в бою отображается в главном списке объявлений, в дополнение к боевым отчетам: эти данные слишком важны, чтобы пропасть бесследно. Столь важная информация может быть пассивно получена с главного экрана и включена в нарратив игрока без каких-либо усилий с его стороны. Если, прочитав объявление о гибели персонажа, игроки хотят узнать подробности, они могут проверить отчет. На самом деле игроку вообще не обязательно действовать в игровом мире для формирования нарративов (хотя способность управлять изменениями, безусловно, помогает игрокам сосредоточиться на том, что происходит). Достаточно дать игроку возможность наблюдать и посылать запросы системе, чтобы найти в ней сюжетные потоки. Теоретически можно

Перспектива и видение игрока  151 представить себе симуляцию, которая вообще все делает сама и представляет пользователю законченный рассказ, но это как-то странно выглядит. Тем не менее в Dwarf Fortress есть режим Legends («Легенды»), в котором информационные потоки готовятся на основе сгенерированного набора данных, насчитывающих сотни тысяч событий и чисел; и там, где мы не особо преуспели, игроки сделали собственные моды, позволяющие лучше просеивать данные. Некоторые люди играют в игру исключительно таким образом – создавая истории и находя истории, а затем при желании делясь ими с сообществом. С другой стороны, если игрок получает возможность делать все, что ему заблагорассудится, он может немедленно пуститься во всевозможные развлечения; возможно, для короткого рассказа это сойдет, но для систем, на которых основано крупное повествование, это пагубно: им трудно оставаться «самими собой», быть достаточно независимыми от рассказчика. Так что при разработке избегайте двух этих крайностей; рассмотрите выбор доступных действий для игроков и продумайте их способность влиять на систему с учетом особенностей их роли. Общий игровой поток, увязывающий разные действия, наблюдения и исследования, может быть довольно сложным. Хотя история игрока часто заканчивается как связное единое повествование, в процессе игры начинаются новые сюжетные линии, происходит возврат к старым, они сплетаются и расплетаются… Игрок может спокойно оставить одну роль и переключиться на другую. В Dwarf Fortress мы позволили делать это явно, используя режимы Fortress («Крепость»), Adventurer («Искатель приключений») и Legends («Легенды»). Изменение роли – важная часть процесса, поскольку оно позволяет игроку рассмотреть ситуацию с другой точки зрения; смысл, который несли в себе старая крепость или искатель приключений, в роли которого игрок побывал прежде, усиливает повествовательный потенциал. Когда искатель исследует уже знакомые крепости, история каждой комнаты понятна ему, и игрок будет иметь ее в виду, продвигаясь вперед. В многопользовательских или серийных однопользовательских играх (таких как Dwarf Fortress – играх, где есть «преемственность») структура повествования может быть еще более сложной. Если вы не можете предугадать, что будут делать ваши игроки (а это удается далеко не всегда!), приглядитесь, как они проходят игры, и старайтесь предусмотреть такое развитие историй во время тестирования игр, выпуска обновлений и следующих серий. В конце концов, даже если у вас есть множество тщательно спланированных систем и роль игрока тщательно продумана, игроки будут воображать механику, которой на самом деле нет, и истолковывать происходящее по-своему. Вот и прекрасно! Мы регулярно опираемся на способность

152

 Глава 13. Эмерджентное повествование в Dwarf Fortress

игроков самостоятельно раскручивать истории, и это может потребовать некоторой изобретательности. Мы даже можем позволить им менять правила игры через моддинг и другие настройки; чем шире возможности игрока, тем больше повествовательных связей появляется в игре. В общем, если игрок может благодаря собственным настройкам получить желаемый опыт, он с большей вероятностью будет всем рассказывать, как он проходил игру. Моддинг – одно из средств расширения повествовательных ходов. Генерация мира в Dwarf Fortress была использована как автономный инструмент для тех, кто делает фэнтези-карты, и для тех, кто прорабатывает кампании в настольных играх типа Dungeons & Dragons (подробнее о генерации такого повествования рассказывается в главе 20). Если люди творчески преобразуют вашу игру или находят в ней иные способы самовыражения, значит, ее дизайн выполняет свое назначение.

Глава

14

Авторское динамическое повествование в The Church in the Darkness Ричард Раус III, Paranoid Productions

Цель игры The Church in the Darkness – рассказать очень конкретную историю в очень конкретных образах. История, которую я хотел поведать, была многоплановой, и я решил, что для нее потребуется динамичная повествовательная система. Хотя мы приглашаем игрока к созданию сюжета в большей степени, чем того требовало бы линейное повествование на ту же тему, игра задумывалась как выражение авторского взгляда. Наша цель состояла не в том, чтобы создать сложную систему процедурного повествования, которую можно было бы использовать во многих играх, а в том, чтобы она менялась достаточно для того, чтобы игроки это заметили – и помогли нам рассказать историю, которую мы считаем важной. Для создания общего представления об игре может быть полезно, чтобы читатель ознакомился с питчингом1: The Church in the Darkness  – игра о миссионерской деятельности в 1970-х годах, сюжет которой каждый раз развивается по-новому. Вдохновленная многочисленными религиозными движениями и философией нью-эйдж, развившимися в 1970-е – кризисный период для американской культуры, – наша игра представляет игрокам Миссию коллективной справедливости, группу, пронизанную в равной степени социалистическими и христианскими идеями. Возглавляют ее харизматичные лидеры Айзек и Ребекка Уокер. Группа испытывает глубокую неприязнь к правительству США, и члены ее панически боятся, что правительство прикажет их уничтожить (опасения эти родились не на ровном месте: существуют документы, подтвержда1

Презентация проекта на выставке или перед потенциальными спонсорами проекта. – Прим. перев.

154

 Глава 14. Авторское динамическое повествование в The Church in the Darkness

ющие манипуляционную тактику и внедрение шпионов в прогрессивные группы того времени). Заявив, что они всего лишь хотят жить мирно, члены Миссии перемещаются в джунгли Баттуэлы – южноамериканской страны, расположенной на Карибском побережье, и там пытаются создать социалистическую общину на севере Амазонки. Это поселение именуется Городом Свободы. Игру ведет Вик, бывший полицейский, племянник которого Алекс входит в Миссию. Когда Стелла, сестра Вика, начинает беспокоиться о сыне, Вик решает проникнуть в группу, найти Алекса и убедиться, что с ним все в порядке. Однако у Вика возникают подозрения: действительно ли Миссия – это горстка маргиналов, которые просто решили создать мирную коммуну, или в их деятельности кроется нечто более зловещее.

Рис. 14.1. The Church in the Darkness

Чтобы усложнить повествование, мы каждый раз меняем природу культа в начале игры, так что игроку приходится взять на себя роль детектива, чтобы выяснить, что на самом деле происходит. Сюжет The Church in the Darkness полон тайн: вы не только не знаете, кто убийца, но и не уверены, что убийство произошло (или когда-либо произойдет). Это детективная история, в которой подозреваемые иногда оказываются злодеями, а иногда – героями.

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

Вдохновение  155 их силком никуда не тащил. Вопреки распространенному мнению, люди, входящие в такие общины, не всегда являются слабовольными чудаками, которых легко обмануть. Часто это очень волевые, идеалистически настроенные люди, которые хотят что-то улучшить – в себе ли, своих ближних или во всем мире. Но по мере развития культа эти планы могут размываться. А если еще нашелся харизматичный лидер, которого наделили абсолютной властью, можно понять, почему все временами идет не так… Впрочем, не обязательно. Многие группы, которые окружающие принимают за секты, не совершают ничего противозаконного. Большинство прихожан никому не вредит, в том числе и себе. Они порой отказываются от комфорта или разделяют убеждения, которые общественность считает странными; но многие из них искренне полагают, что их пребывание в группе единомышленников с лихвой компенсирует эти неудобства. Так как же узнать, кто перед нами – безобидные маргиналы или опасная секта? Способность проводить различия меня прежде всего и интересовала при разработке The Church in the Darkness. Как гейм-дизайнер, я часто задумываюсь о серьезных вещах, которые было бы любопытно изучить в игровой форме. Изучить религиозный культ и понять, звучат ли в нем апокалиптические нотки, – достаточно эффектная и интригующая тема, чтобы сделать из этого игру. Мистические истории, по сути, представляют собой головоломки (сможете ли вы выяснить, в чем тайна, прежде чем дочитаете книгу?) и очень хорошо работают в игровом контексте, подбрасывая игроку настоящие пазлы. Недостаток этой разминки для мозга, будь то кроссворд, головоломка с металлическим кольцом или детективный роман, заключается в том, что после того как вы решили задачу, она уже становится неинтересной. Радость поиска решения заново не испытать. Итак, если главная загадка в нашей игре – «опасна эта группа или нет», вполне логично, что при каждом прохождении ответ должен быть другим. Отчасти потому, что игрок получает возможность играть несколько раз, а отчасти потому, что это дает повод проанализировать разницу между опасным и безопасным – весьма, если вдуматься, тонкую. Нам потребуется очень специфическая процедурная система повествования, чтобы наша история заработала как надо. Представление о том, какую историю мы хотим рассказать, напрямую повлияло на архитектуру наших повествовательных систем.

Вдохновение Как в гейм-плее, так и в построении сюжета проявились реалии бурных 1970-х в Соединенных Штатах – здесь даже упоминаются некоторые реальные культы того периода. Изучая их, мы поняли, что кое-что в их отношении удивительно подходит для такой игры, как наша. Расположение в джунглях – идеальная для игры замкнутая среда, естественным образом

156

 Глава 14. Авторское динамическое повествование в The Church in the Darkness

ограничивающая пространство повествования. Почти для всех культов характерно недоверие к чужакам; это объясняет тот факт, что большинство людей, которых игрок встречает в Городе Свободы, пытается либо напасть на него, либо убежать. Это означает, что мы можем создать симуляцию целого сообщества, не делая интерактивными всех персонажей поголовно. Вместо этого мы взяли ряд персонажей, которые не так щепетильны в отношении «чистоты» культа, и хорошенько их проработали; они-то и будут общаться с игроком. Большую часть информации игрок получает благодаря сообщениям, которые передаются по громкоговорителям в Городе Свободы. Это еще одна реальная тактика, используемая религиозными группами. Это естественный ход для экшен-игры такого рода; во время игры вы слышите голоса лидеров общины, читающих проповедь. И догадываетесь, что ни одно слово не случайно: все это пропаганда, и она обрушивается на вас со всех сторон (рис. 14.2). Кроме того, невидимые ораторы через динамик могут оповещать город о событиях, в которые был вовлечен игрок, с некоторыми искажениями – так показано, что религиозные лидеры могут использовать свою проповедь для дезинформации (еще одна распространенная тактика). Беседуя с людьми, которые входили в секты, я выяснил, что одно и то же событие они порой трактовали совершенно по-разному – в зависимости от того, насколько испытали на себе силу внушения.

Рис. 14.2. Пропаганда действует на всей территории комплекса

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

Вдохновение  157 ложительное – помогает людям избавиться от наркотической зависимости или уйти от жестокого обращения, вытаскивает их из нищеты, обещает заботиться о них, когда они состарятся, или призывает бороться за улучшения в мире. Непрерывная пропаганда в игре – это способ продемонстрировать характер верований и убеждений, со многими из которых игрок, возможно, согласится. В то же время всегда остается чувство, что есть здесь какая-то заковыка. Независимо от того, насколько хороши ее изначальные намерения, Миссия коллективной справедливости в своем стремлении переустроить мир заходит довольно далеко, а в отдельных случаях – чересчур далеко. Вдохновлялись мы не только историческими реалиями, но и другими играми. Настольные игры по своей природе продуманы так, чтобы в них можно было играть повторно; в этом плане компьютерные игры, которые предполагают лишь одно прохождение, отходят от многовековых традиций настольных игр, существовавших прежде них. Естественно, в настольных играх с сильным нарративным компонентом должен быть какой-то способ обеспечить повторяемость. Один из самых удачных примеров – Cluedo (Clue), где моделируется ситуация убийства, каждый раз с новой жертвой и новым преступником. Но, ограничиваясь этими перестановками, Cluedo не предлагает ничего такого, что повлияло бы на сам сюжет. Одна из ранних компьютерных игр, Murder on the Zinderneuf (1983), меня в свое время очень заинтересовала; она воспринималась как компьютерный аналог Cluedo, но использовала преимущества компьютеризации для развития сюжетности. Вместо банального сбора улик, предлагаемого Cluedo, Zinderneuf использует систему Madlibs, чтобы обеспечить более разнообразный опыт прохождения. Для персонажей имеются предварительно написанные сценарии с открытыми слотами для имен, атрибутов и черт характера. В игре используются различные сценарии, в которые вписываются слоты пассажиров на борту дирижабля Zinderneuf. Главная механика игры – допрос, который ведет детектив (игрок может выбрать одного из ряда персонажей). Разные герои по-разному реагируют на разных следователей. Игра даже включает в себя персонажа, который запутывает следствие, но, как сказал мне дизайнер Пол Райхе III (Paul Reiche III), «такой персонаж был задуман для изюминки, однако мы пришли к выводу, что он должен явно намекать на запутывание следов, иначе игрок уйдет далеко в сторону». (Подробнее об игре и о процессе ее создания рассказывается в главе 6.) Я воспринял это как важный урок для разработчиков процедурных игр с детективным содержанием: игроки настолько непривычны к процедурным повествованиям, что если вы в какой-то момент захотите подтолкнуть их к выигрышу, то на определенном этапе придется сделать историю довольно очевидной, чтобы дать подсказку.

158

 Глава 14. Авторское динамическое повествование в The Church in the Darkness

Еще одна игра, которая меня некогда очаровала,  – приключенческая Blade Runner (1997). Она очень похожа на приключенческую игру 90-х годов из серии point-and-click («укажи и нажми»), но под этой маской на самом деле кроется сложная симуляция, где любой персонаж может быть убит в любое время, и персонажи, которые являются репликантами, определяются произвольно, так что и сюжет меняется соответственно. В итоге возможно 40 с лишним концовок. Луис Касл (Louis Castle), исполнительный продюсер и режиссер игры, сообщил мне в приватной беседе: «Мы не строили сложное ветвящееся дерево, а вместо этого запустили симуляцию всех аватаров в мире; у нас была сложная база входных переменных, которые будут выявлять события и подсказки... фактически подсказки передавались от одного аватара к другому, создавая впечатление, что аватары реагируют на игрока. Событийная игра позволяла игроку преследовать тех, кто его видел, чтобы предотвратить распространение слухов о неосторожности игрока... Но на самом деле полный повтор был почти невозможным, даже если вы загрузили старую сохраненную игру». Луис Касл, частный разговор Я был восхищен преамбулой и структурой игры, но самым замечательным в Blade Runner было то, как игроки воспринимали происходящее. Большинство игроков даже не догадывалось, что игра связана с процедурным повествованием. С одной стороны, это можно рассматривать как ее безусловную победу: если ощущения точно такие же, как от прописанной вручную игры, то процедурное повествование отлично работает! Вот что по этому поводу сказал Касл: «Выбор вариантов в Blade Runner был настроен так, чтобы повествование естественным образом адаптировалось к решениям игрока... Мы, разумеется, видели обе крайности, но сознательно решили поддержать каждую крайность и все значения в пределах этого диапазона... [Это обсуждалось] при проработке маркетинга/PR, но дизайн игры предполагал, что нужно позволить каждому игроку поступать правильно, с его точки зрения. Мы не давили на него, не заставляли направляться по одному пути или выбирать из нескольких результатов». Луис Касл, частный разговор Хотя я и уважаю это творческое решение, мне видится в нем и кое-какой недостаток. Игроки будут играть в игру иначе, если знают, что она действительно реагирует на их действия, подобно тому как они, вероятнее всего, пройдут игру еще раз, зная, что сюжет будет другим.

Основная система  159 Хотя процедурное повествование в приключенческих играх наподобие Walking Dead намного проще, чем то, что мы наблюдаем в Blade Runner («процедурность» – вероятно, не вполне корректный термин в отношении Walking Dead), игра блестяще напоминает игроку о том, что выбор имеет значение. Поэтому все, кто играет в нее, знают, что их ждет, – и это меняет подход игроков.

Основная система Итак, вдохновляясь всем вышеупомянутым и горя желанием поведать миру историю о таинственных культах, мы выбрали повествовательные системы, которые нам понадобятся для создания динамического сюжета, который при каждом прохождении дарит игроку ощущение новизны. Поскольку мы были заинтересованы в том, чтобы игроки взялись за игру снова и снова, каждое прохождение следовало сделать достаточно коротким, чтобы играть не показалось утомительно. Первое прохождение у многих игроков может занять от двух до четырех часов, но на каждую последующую попытку обычно приходится меньше часа. Это позволяет полностью изучить сюжет и освоить гейм-плей, прежде чем игрок начнет игру заново. Как и в любых играх, где речь идет об освоении чужаком незнакомого мира со всевозможными хитростями и уловками, время на прохождение может существенно варьироваться. Некоторые действуют чересчур осторожно и избирательно, и тогда игра длится намного дольше; другие мчатся сломя голову и разгоняются все больше. Кроме того, некоторые игроки будут до последнего искать все документы и записки, которые только можно найти, а затем внимательно изучать их и пытаться сопоставить их содержимое с тем, что уже известно. Конечно, кто-то потратит на изучение информации минимум времени, просто продираясь к финалу напролом. В любом случае при каждом повторе игрок движется быстрее, поскольку уже знает, как работает игра, и понимает, что делать, начиная новое прохождение. Так как здесь нет кат-сцен или каких-либо действий, которые нужно выполнять на скорость, игрока ничто не сдерживает (рис. 14.3). Ядро системы  – рандомизация личности религиозного лидера с опорой на несколько дискретных начальных состояний. Мы могли бы начать с более сложной системы для создания этой отправной точки повествования. Хотя более сложные симуляции персонажей, с многоплановыми характеристиками, обеспечивают тонкие нюансы и могут давать очень интересные результаты (чему есть много примеров), может настать момент, когда игроки уже не воспринимают эти мелкие оттенки; увлечение детализацией порой утомляет игрока. Мы хотели подчеркнуть достаточно существенные, хорошо заметные изменения. Таким образом, создавая диалоги и повествовательные фрагменты для каждого потенциального начального состояния, мы построили то, что, по нашему мнению, игрок

160

 Глава 14. Авторское динамическое повествование в The Church in the Darkness

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

Рис. 14.3. Игрок оказался в небезопасной ситуации

При последующих прохождениях игроку предоставляется возможность выбрать то же начальное состояние, что и в прошлый раз, или то, которое, напротив, еще ни разу не попадалось, или совершенно случайное. Хотя сюжет основан на тайне, мы поняли, что некоторым игрокам захочется проработать уже известную схему (если их герой не дошел до финала). Играя в игру несколько раз, они, конечно, увидят, что некоторые детали повторяются – особенно когда выберут уже известную историю, возвратившись в предыдущее состояние мира. Но мы создали достаточно разнообразное содержание, чтобы развлечь игроков даже тогда, когда они выбирают одно и то же стартовое состояние. И хотя не каждая часть повествования окажется для них новой, повторяющиеся детали, которые они найдут, позволят им конкретизировать свои выводы и продвинуться к догадке о том, насколько опасны лидеры культа на этот раз. Рандомизировано не только начальное состояние сюжета, но также и ряд игровых факторов. Мир Города Свободы – большая открытая карта, которую игрок может исследовать любым удобным способом, начиная с главных дорог и заканчивая побочными ответвлениями и тропинками в лесу (рис. 14.4). Игрок начинает со случайной точки на периметре карты; таким образом при разных прохождениях видны различные участки карты. Местонахождение основных персонажей игры тоже каждый раз меняется. Обязательная цель для Вика – установить контакт с племянником Алексом, а затем вывести его из Города Свободы; так что основная деятель-

Основная система  161 ность игрока сводится к тому, чтобы изучить карту и собрать информацию, которая выведет на Алекса. Необязательная, хотя и вознаграждаемая цель состоит в том, чтобы найти проповедников, возглавляющих Миссию коллективной справедливости. Алгоритм помещает их в другое место на карте, далеко от Алекса и текущего местоположения игрока, причем не сразу, а только после того, как игрок завершит один из этапов прохождения. Все эти локации были тщательно разработаны, и чем ближе игрок к цели, тем жестче охраняется территория, а стало быть, возникают дополнительные сложности. Мало того что игрок перемещается по карте с движущимися целями, – рандомизированы все локации ресурсов и позиции охранников. Более сложный подход к процедурной генерации включал бы реконструкцию физической карты в нескольких конфигурациях, но эту идею мы отбросили на ранней стадии разработки, посчитав это чересчур громоздким решением.

Рис. 14.4. Город Свободы

Я уже упоминал, что поиск проповедников – задача необязательная, и это обеспечивает широту выбора. Вик просто хочет спасти племянника и исторгнуть его из лап сектантов? Или ему важно, кроме прочего, уберечь от опасности других членов Миссии? В финале не только резюмируются действия, связанные с Алексом, но и показано, что происходит с Миссией в целом. Игроку самому предстоит определить, насколько глубоко он готов копать. Вполне возможно, что он выручит Алекса и узнает, что произошло после их ухода. Более предприимчивые игроки соберут больше информации и примут более обоснованное решение о том, что делать дальше. Финал может шокировать игроков, которые ограничились тем, чтобы вытащить Алекса; и я надеюсь, что это заставит их переосмыслить свои стратегии и в играх, и в реальной жизни. Во всяком случае игра дает

162

 Глава 14. Авторское динамическое повествование в The Church in the Darkness

понять: важно провести сбор данных и доказательств, прежде чем делать поспешные выводы или предпринимать что-то такое, что приведет к необратимым последствиям. В конце концов, игрок волен в своем выборе, и мы накладываем на него очень мало ограничений, позволяя действовать по собственному расчету после того, как он добрался до Алекса. Повествование ведется с использованием нескольких ключевых приемов. Проповедники Айзек и Ребекка Уокер обращаются к своим последователям через систему местного оповещения, охватывающую весь Город Свободы (рис.  14.5). Пока игроки лавируют между охранниками и ищут Алекса, им неизбежно придется ознакомиться с догматами лидеров и с тем, чего они требуют от членов Миссии. Есть несколько «хранилищ» с репликами, воспроизводимыми произвольно; в каждом наборе есть диалоги, которые будут меняться в зависимости от того, каков характер лидеров в этом прохождении. Настроение проповедников тоже меняется от этапа к этапу, так что по мере прохождения игры (и выполнения определенных действий) диалоги будут меняться соответственно. К случайным диалогам примешивается ряд других, которые всегда воспроизводятся в одном и том же порядке, с репликами, меняющимися в зависимости от характера проповедников. Эти нерандомные диалоги структурируют информацию, которую слышат игроки, продвигаясь по территории Города. Кроме того, это единственный вид диалога, в котором лидеры культа разговаривают друг с другом.

Рис. 14.5. Часть системы местного оповещения, используемой лидерами культа

Параллельно игроки ищут тайники, чтобы получить различные ресурсы: лекарства и продукты питания (которые позволят им подкрепиться), гаджеты, оружие и прочие вещи, которое помогут выжить в Городе Свободы. Игроки также смогут обшаривать столы в поисках документов, кото-

Основная система  163 рые выполняют как практическую, так и чисто повествовательную функцию. Один из способов добраться к Алексу – изучать все более подробные карты, которые в конечном счете покажут его местоположение. Эти карты находятся только в столах, и игрокам рекомендуется искать их, чтобы поскорей выйти на Алекса. Однако помимо карт можно найти письма, документы, дневниковые записи и многие другие заметки, в которых раскрывается подлинная история Города Свободы (рис. 14.6).

Рис. 14.6. Открытка от Алекса

Система размещения предметов в столах продумана очень четко. Независимо от того, какой стол игрок найдет первым, карты всегда появляются в порядке возрастания детализации. «Повествовательные» документы бывают нескольких видов: а) об истории пребывания Алекса в лагере – такие записи всегда представлены в одном порядке, с некоторыми лишь вариациями в зависимости от стартового сценария; б) об истории остальных жителей Города Свободы – внутри каждого набора таких документов существует свой порядок, но выкладка самих наборов рандомизирована, и не все наборы будут присутствовать в конкретном прохождении; в) прочие записи, которые подкладываются случайным образом для оживления повествования. Система размещения столов оказалась одной из самых сложных в игре, с серией сложных решений, используемых для различных наборов. Игроку должно казаться, что последовательность появления документов каждый раз разная, и при всем этом она четко ориентирована на конкретное прохождение. Последний виток повествования включает побочных персонажей, добавленных для того, чтобы игрок прослушал и точку зрения членов Миссии – не только лидеров. Эти персонажи меняют свое местоположение и ведут разные диалоги в зависимости от того, что они думают о настро-

164

 Глава 14. Авторское динамическое повествование в The Church in the Darkness

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

Выбор игрока С помощью только этих систем, каждой в свой черед, игрок на каждом прохождении получит конкретную историю с некоторыми рандомизированными вариациями, определяющими детали. Но если к выбору игрока примешивается нечто еще, создается комбинированный эффект, подразумевающий гораздо больше вариаций в этом прохождении. На самом базовом уровне повествование изменяется в зависимости от того, насколько глубоко игрок решает исследовать ситуацию. Попытался ли он опросить всех благорасположенных к нему персонажей и послушать их рассказ? Рискнет ли он жизнью, чтобы поговорить с Айзеком и Ребеккой и узнать их версию происходящего? Попытается ли собрать все документы в игре? И поскольку для появления всех персонажей и всех документов, которые мы ввели в игру, недостаточно будет одного (и даже пяти) прохождений, сколько раз игрок будет начинать все заново, если задастся целью увидеть все возможные варианты? То время, которое игрок готов потратить на поиск нарративного контента, – это тоже один из выборов. Игроку приходится делать важный выбор в процессе игры (с целью завоевать доверие персонажей), а также ряд выборов, в большей степени определяемых ходом повествования. В основном быстро развивающемся стелс-гейм-плее (рис. 14.7) у игроков есть возможность убивать врагов или отказаться от этого. В последнем случае возможны варианты: хорошенько прятаться (что может быть довольно трудно) или просто убегать, как только появляется опасность; если избежать обнаружения удается довольно долго, игровые системы перезагружаются. Героя игры подстерегает смертельная опасность в лице агрессивных охранников и, в некоторых вариантах, лидеров культа, которые с высокой вероятностью казнят Вика, если он будет схвачен. Некоторые изменения повествования связаны с персонажами, которых можно было бы выслушать, но они откажутся говорить с игроком или помогать ему, если он повел себя как-то агрессивно. Сюжет будет незначительно меняться в зависимости от того, сколько раз игрока обнаруживали по мере прохождения (персонажи будут комментировать его перемещение по территории, если он продвигается чересчур активно). В гейм-плее последствия того, что вас заметили, привязаны к моменту – сигналы тревоги отдаляются, вбегают

Выбор игрока  165 охранники; но этот результат сбрасывается, позволяя игроку двигаться вперед, не застревая в петле отрицательной обратной связи только в результате обнаружения.

Рис. 14.7. Стелс-режим в игре, когда игрок приближается к двум охранникам

Игрок также выбирает, что ему делать в ключевых ситуациях. Единственная цель, которую во что бы то ни стало надо выполнить, – найти Алекса и, по крайней мере, начать с ним разговор. То, что говорит Алекс во время встречи, зависит от стартового сценария и от выборов, сделанных в процессе игры. С этого момента основной выбор игрока предусматривает варианты: позволить Алексу остаться в Городе Свободы, позвать с собой или силой заставить уйти. Еще один выбор заключается в том, отложить ли до следующего раза разборку с лидерами культа или в конечном счете убить их. Вся тонкость в том, что игроки не знают, насколько опасны проповедники: быть может, это просто люди радикальных убеждений. Игрок выносит суждение по этому поводу – и ему решать, что делать с этой информацией. Поскольку игра развивается непрерывно, не исключено, что игрок столкнется с непредсказуемыми поворотами сюжета. Например, он попытался спасти Алекса, но его убивают во время перестрелки с охранниками. Или присутствие игрока в лагере вынуждает проповедников поторопиться и привести в действие свои коварные планы раньше намеченного срока. Все эти варианты выбора со стороны игрока приводят к ветвящимся диалогам, используя системы, к которым разработчики RPG и интерактивных книг прибегают уже в течение нескольких десятилетий. Это подразумевает большой объем авторского контента: надо прописать все реплики в диалогах и озвучить их. Хотя было бы интересно предоставить часть работы системе генерации текста, чтобы обеспечить более разнообразное

166

 Глава 14. Авторское динамическое повествование в The Church in the Darkness

содержание письменных документов, мы решили не идти таким путем. Хотя системы обработки этой части информации не могут похвастать особой новизной, поскольку начальное состояние системы меняется в каждой новой игре, здесь существует гораздо больше возможностей и вариантов концовки, чем можно найти в стандартной нарративной игре, основанной на механике выборов. За всеми этими сложными вариантами выбора игроку легко потерять нить сюжета, которую он прядет. Так что мы добавили в игру систему, которая закрепляла бы опыт игроков. Она включает названия глав  – этот текст появляется на экране, когда происходят ключевые события; в начале названия стоит римская цифра (рис.  14.8). После старта игрок видит строку «I. Сквозь джунгли»; если он попадает в плен к проповедникам, на экране появляется «II. Они тебя знают»; после обнаружения Алекса можно увидеть «III. Исход» (в случае, когда Алекс уходит за Виком). Отслеживается множество других игровых событий, благодаря чему последовательность вывода названий глав меняется. Цель этой системы – дать игроку понять, что сделанный им выбор имеет реальное значение. А когда последовательность глав отображается в конце игры, игрок чувствует, что он действительно создал уникальную историю.

Рис. 14.8. Начало игры

В финале, в дополнение к этому краткому резюме и заголовку финальной главы, игрок получает более объемный текст, где рассказывается, как Миссия отреагировала на присутствие Вика в городе и что произошло после того, как он ушел. Концовки скомпонованы из трех фрагментов текста, предусматривающих разные комбинации. Во-первых, сообщается, что случилось с Алексом – или, скорее, что решил в его отношении Вик. Далее следует рассказ о том, как Город Свободы отреагировал на события с

Вывод: зачем все это строить?  167 участием Алекса, Айзека и Ребекки и других, в зависимости от того, как действовал игрок. В заключение говорится о том, что случилось с Городом Свободы (в зависимости от выбора игрока), – это своего рода эпилог. Система обработки всех этих текстовых перестановок достаточно сложна, чтобы прописывать ее с помощью кода, а не подключать к уровневой логике. Вообще говоря, она настолько сложна, что даже я на самом деле не знаю, сколько перестановок возможно – и, отвечая на этот вопрос, часто говорю: «более 20». Я с нетерпением жду, когда игроки расскажут обо всех тех уникальных концовках, которые им выпали.

Вывод: зачем все это строить? Должен признаться, я испытываю некоторое смущение, готовя главу об игре The Church in the Darkness для книги о процедурной генерации. По технологической сложности эту игру заметно опережают те, авторы которых гораздо точнее сфокусировались на процедурном повествовании. Наше решение остановиться на относительно простом нарративе было отчасти обусловлено масштабом проекта. Он занял у нас много времени, учитывая размер команды и наше желание сделать 3D-стелс-игру с приличным набором функций, отвечающим нашей сюжетной задумке.

Рис. 14.9. Признаки смятения в рядах членов Миссии коллективного правосудия

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

168

 Глава 14. Авторское динамическое повествование в The Church in the Darkness

(рис. 14.9) и игроки будут совершать разные выборы не потому, что они пытаются изучить все, что заложено в игре, а потому, что контекст этих выборов меняется. Для этих целей повествовательные системы, на которых мы решили сосредоточиться, были лучшим средством из всех, что я знал. В конечном счете The Church in the Darkness – по большей степени авторское упражнение в процедурном повествовании. Я предлагал игрокам очень специфический опыт, несмотря на то, что предоставлял им большую свободу в развитии этой истории. Мне кажется, важно, чтобы дизайнеры, программисты и писатели, которые берутся за процедурные повествовательные проекты, серьезно думали о своих намерениях. Что их игра пытается сделать с повествовательной точки зрения? О чем следует позаботиться, чтобы донести эту историю до всех? Ваша цель должна заключаться не в том, чтобы создать процедурное повествование, которое обеспечивает впечатляющий в техническом плане контент, а выбрать наилучший способ передачи идеи, которую вы транслируете.

Часть

III Миры и контекст

Широкие стартовые настройки, убедительные предыстории, запоминающиеся описания – все это инструменты компетентного писателя. Тщательно выстроенный мир раскрывает весь потенциал повествования, а хороший описательный текст затягивает читателя, готового отправиться в обещанное путешествие вместе с автором. Большинство видеоигр с самого начала зависит от существующих в них объектов и пространств; даже разработчики игр, ориентированные на процедурное повествование, неизменно сталкиваются с необходимостью создания миров, насыщенных деталями. В этом разделе мы рассмотрим несколько проектов, авторы которых творчески подошли к этому аспекту – начиная с описания планет и заканчивая историческими записями. Даже имея возможность построить целую вселенную, рассказчик не отгорожен от реального мира. Более широкий социальный, этический и политический контекст можно отыскать в любом произведении, и само произведение может отражать и преобразовывать этот контекст на благо читателя. Игры с процедурными историями тоже могут работать на этом уровне, и в следующих главах книги мы рассмотрим некоторые примеры.

Глава

15 Генерация историй Джейсон Гринблат, Freehold Games

Процедурная генерация истории – сложная задача. «Процедурализация» требует кодирования отношений в правила, а реальные истории – это запутанная система, насчитывающая массу людей, мест и событий, в сложном переплетении которых скрыта механика их отношений. Задача усложняется еще и оттого, что история выполняет риторическую функцию. То есть исторические отчеты используются для продвижения определенных культурных нарративов, которые могут опровергать факты, которые они якобы описывают (этой функцией обычно пренебрегают при обработке истории в видеоиграх, даже в случае, если игра была почти полностью написана вручную). Генерация историй – новая практика, развивающаяся область качественной процедурной генерации, и пока эти проблемы еще не имеют канонических решений. Эта глава предлагает один из способов формулировки истории, который мы разработали, проводя исследования для нашей игры-рогалика Caves of Qud о далеком будущем. Мы используем эту модель, чтобы обсудить сюжеты еще нескольких игр, затем углубимся в детали Caves of Qud и опишем специально разработанную для нее систему генерации повествования. Рассмотрим ограничения и дизайнерскую часть, а также то, как мы создавали истории и взаимодействовали с ними, и то, как система порождает когерентные повествования методом исторической рационализации. Чтобы «процедурализовать» сюжет, мы должны сначала начать распутывать клубок тесно связанных элементов. Это значит  – вскрыть предубеждения, зашитые глубоко у нас внутри, детально изучить наш предмет и сформировать некое видение для того, чтобы его смоделировать. Если мы сможем осветить таким образом нашу историю – предмет настолько же богатый, как и любая система, – то откроем для нашего искусства целый ряд возможностей.

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

Сущности и события  171 и о нашем видении системы генерации. В эту работу входило и исследование других игр, которые экспериментируют с генерируемыми историями. Модель, описанная в данной главе, появилась благодаря выявлению закономерностей в нашем собственном дизайне и проектах, с которыми мы столкнулись. Это ни в коем случае не окончательная формулировка. Это лишь только первый шаг к системному рассуждению об историях – и, возможно, опорная точка для тех, кто хочет создать свою собственную систему генерации повествования. Наша модель рассматривает историю как ряд взаимодействий между историческими сущностями и историческими событиями. Сущности – это люди, места и предметы (субъекты истории). События воздействуют на сущности и меняют их. Мы можем думать о сущностях как о «существительных» истории, а о событиях – как о ее «глаголах». В алгоритмическом плане сущности – это структуры данных (по сути, пакеты свойств), а события – функции, которые изменяют эти свойства. Таким образом, история состоит из набора исходных сущностей и последовательности событий. Процесс, который генеративная система использует для определения последовательности событий, мы называем ее исторической логикой. То, что система решает сообщить о конкретном событии, мы называем историческим свидетельством. Такие записи часто доступны игрокам в форме текста, который генерируется в соответствии с характером события. Системы, в которых реализована эта модель, выполняют следующие четыре действия: 1. Моделируют исторические объекты. 2. Моделируют исторические события. 3. Связывают события друг с другом согласно внутренней логике системы. 4. Предоставляют игрокам исторические свидетельства – (предполагаемые) результаты событий – в форме сгенерированного текста. То, как выглядят события, зависит от стиля генерируемой истории. В событиях закодировано многое из того, что придает сюжету значимость в глазах игроков. Для Caves of Qud мы позаимствовали кое-что из эстетики древнего мира, поэтому среди наших событий попадаются такие, как «#character# осаждает город» и «#character# возводит монумент»; подобные факты вполне можно вычитать из биографии какого-нибудь средневекового короля или королевы. А вот если бы вы создавали историю, скажем, учащихся средней школы, события выглядели бы примерно так: «#character# сдает экзамен» и «#character1# и #character2# собираются на первое свидание». Как система может соотносить происходящие в ней события, используя собственную логику? Есть несколько способов. В Epitaph, idle-игре Макса

172

 Глава 15. Генерация историй

Кремински (Max Kreminski), где игрокам предложено направлять развитие цивилизации благодаря выбору тех или иных технологий, возникновение одного события влияет на вероятность других. Например, если игрок подарил своей цивилизации возможность пользоваться огнем, то снижается вероятность пищевых отравлений, зато возрастает угроза лесных пожаров. Эти вероятностные объекты реализуются с помощью набора взвешенных таблиц1. В Dwarf Fortress события связаны с помощью логики более глубокого моделирования. Дварфы и другие разумные существа – примеры исторических сущностей игры – действуют в соответствии с правилами физических и социальных систем игры. Когда эти правила заставляют дварфа делать что-либо заслуживающее внимания со стороны системы, это действие регистрируется как историческое событие и его результат записывается (соответствующие архивные данные доступны в режиме «Легенда»). Кстати, именно так создаются реальные хроники: человек, обладающий достаточным авторитетом, создает повествование на основе некоего событийного ряда; при этом рассказчик может искажать события и выдавать свои домыслы за правду. Далее в этой главе мы рассмотрим другой подход к исторической логике – тот, который мы использовали для создания историй в Caves of Qud.

Субъективизм в истории Я упомянул о том, что в исторических отчетах описываются только предполагаемые результаты событий. Прежде чем мы пойдем дальше, стоит разобраться в этом и рассмотреть вопрос о риторической функции истории. Цель истории в общепринятом понимании состоит в том, чтобы точно передать события прошлого и приблизиться к объективной реальности (то есть к неоспоримым фактам). Но исторические рассказы всегда субъективны, поскольку рассказчик не может быть абсолютно беспристрастным и так или иначе окрашивает повествование в зависимости от своих культурных установок. Игры по большому счету уходят от такого субъективизма, предпочитая более скупой рассказ, зато максимально отражающий реальность. Есть, конечно, и исключения. Серия The Elder Scrolls  – особенно Morrowind – исследует проблему власти через историю еретичества, причем повествование противоречит исторической доктрине. Opera Omnia – жемчужина в мире игр, шедевр Стивена Лавелла (Stephen Lavelle)  – признает субъективность истории и делает ее своей главной темой. Вы ведете игру от лица историка, который специализируется на миграционных моделях. У вашего босса есть определенные политические 1

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

Генерация истории в Caves of Qud  173 взгляды, и вы должны цинично подстраивать свои исторические изыскания под его концепцию. Такие игры фактически выступают с открытым заявлением об истории как науке; впрочем, все игры об истории явно или неявно говорят о том же. Когда мы начинаем «процедурализировать» историю, следует помнить о том, какие аргументы мы кодируем в наших алгоритмах – особенно потому, что неполное освещение исторических событий часто используется для оправдания большого зла. При решении этой проблемы в Caves of Qud мы выделили два вида истории: историю как процесс и историю как «артефакт». Первое можно рассматривать как формирование правил и отношений, порождающих настоящее. Чтобы смоделировать этот процесс, мы могли бы попытаться воспроизвести его логику. С другой стороны, последнее является частью настоящего – тем, что мы рассматриваем через призму современности, в силу чего можем слишком просто судить о сложном. В настоящее время нам доступны только исторические сведения, а они, как говорилось выше, всегда содержат некоторые опущения и искажения. Чтобы создать в игре исторические документы, мы могли бы попытаться воссоздать логику, по которой они составляются, или предложить новую, которая воспроизводит события как они есть. Что мы и сделали в Caves of Qud.

Генерация истории в Caves of Qud «Грунтовка» Действие в Caves of Qud происходит в отдаленном будущем, среди эффектных руин. Сюжет был навеян различными источниками, где поднималась историческая тема, в том числе настольной RPG-игрой Gamma World, фантастическими книгами в жанре «гибель земной цивилизации», например Zothique Кларка Эштона Смита (Clark Ashton Smith) и четырехтомной The Book of the New Sun Джина Вулфа (Gene Wolfe), а также прорывными работами авторов научной фантастики новой волны, таких как Урсула Ле Гуин (Ursula K. Le Guin), историческими текстами наподобие The Decline and Fall of the Roman Empire Эдварда Гиббона (Edward Gibbon) и рогаликоподобными играми прошлых лет: Dwarf Fortress и Ancient Domains of Mystery (ADOM). Мы использовали сразу несколько методов, чтобы построить мир Caves of Qud. Во многом игра представляет собой сочетание ручной и процедурной систем. В отличие от большинства рогаликов, она выглядит как вручную созданное повествование, подобное тем, какие вы можете найти в традиционных RPG с открытым миром. Карта мира также статична, но отдельные области весьма процедурны и различаются в деталях от игры к игре. Многие физические системы моделируются, окружающая среда и объекты изменчивы; кроме того, имеется богатый социальный и политический ландшафт, в котором игрокам предстоит ориентироваться.

174

 Глава 15. Генерация историй

Связь человечества с историей – одна из главных тем Caves of Qud. Помещая игрока в многоуровневый лабиринт утраченных и современных цивилизаций, игра утверждает, что наше понимание прошлого всегда пропускается через фильтр настоящего.

Ограничения и эстетика Поскольку наш дизайн имеет смысл только в контексте сформировавших его целей, давайте сначала обсудим некоторые ограничения и эстетические принципы, которые определили наш выбор героев, событий и исторической логики, которая их связывает. В Caves of Qud игроки взаимодействуют с прошлым только с точки зрения диегетического настоящего, поэтому мы сконцентрировались на артефактах как исторических свидетельствах – то есть на памятниках, произведениях искусства и исторических текстах. Это означало, что при моделировании исторической логики мы можем допускать неточности, но информация, заложенная в артефактах, всегда достоверна. На нашу конструкцию влияли два основных ограничения. Во-первых, поскольку генерируемые истории добавлялись в качестве третьей системы в игре, уже достаточно далеко продвинувшейся в своем развитии, мы были ограничены ресурсами, которые обеспечивали ее глубину и сложность. Во-вторых, генерируемые истории должны были как-то комбинироваться с созданными вручную знаниями и повествованием. Чтобы эти ограничения нас не сковывали, мы завязали генерируемые истории на биографиях пяти мифических правителей эпохи Султаната, когда процветала одна из ранних развитых культур, населявших Куд (притом к этому моменту было создано множество рукописей – памятников эпохи). Мы также хотели наделить султанов яркими характеристиками, которые размыли бы грань между историей и мифом. С этой целью для каждого султана был выделен культурный архетип, который мы назвали доминантой (domain). Доминанты включают в себя культурно значимые предметы и явления, например стекло, драгоценные камни, лед, звезды, а также абстрактные понятия: силу, образованность и возможности. Они функционируют подобно эпитетам в поэтических сказаниях и мифах, где герой обычно ассоциируется с какой-то доминирующей чертой. Наконец, эстетический принцип, определяющий для множества процедурно сгенерированных компонентов в Caves of Qud, заключается в максимальном допущении чего-то нового. Нам нравится, когда генераторы работают на полную катушку. Мы даже избегали выстраивания каких-то глобальных линий биографии султанов. То есть не предусматривали сюжетные повороты в духе «султан получает такой-то опыт» или «султан преодолевает такое-то препятствие». Вместо этого мы предоставили генераторам простор для отслеживания «нетипичных» деталей биографии,

Генерация истории в Caves of Qud  175 опираясь на апофению наших игроков – то есть человеческую склонность к осмыслению определенных паттернов, к интерпретации событий. Этот момент особенно важен. Игроки истолковывают рассказы султана в игровом мире с богатым повествовательным контекстом. Султаны  – всего лишь составляющая культуры, которая включает осколки диегетического прошлого, героев и события современности, а также совокупный опыт бесчисленных персонажей. Игрок \выступает интерпретатором этой культуры, окрашивая жизнь султанов в те или иные тона. Это позволило нам рассчитывать на создание богатых биографических историй (без чрезмерной детализации) с опорой на апофению наших игроков. Поскольку в каждом экземпляре игрового мира генерируется несколько султанов и жизненные перипетии каждого из них оказывают то или влияние на прохождение игры, мы сочли возможным доверить генератору большую часть работы.

Культурные артефакты и влияние истории на генерируемый мир Давайте посмотрим, как генерируются истории и как осуществляется интеракция в Caves of Qud. В начале игры движок создания мира генерирует уникальную историю в пять периодов, каждый из которых сосредоточен на жизни одного из султанов. Исторический период в соответствии с нашей моделью включает несколько событий, для каждого из которых генерируется историческое свидетельство – текстовый фрагмент. Мы условно назвали эти исторические свидетельства «скрижалями». Внутри истории за один раз создается одна скрижаль, так что скрижали образуют основную дискретную единицу истории в Caves of Qud. На нынешнем этапе развития игры каждое событие производит одну скрижаль, но мы обсуждали расширение системы, чтобы можно было создавать несколько скрижалей для развития интерпретаций одного и того же события. Во время игры игроки взаимодействуют с генерируемой историей через скрижали, передаваемые посредством NPC или появляющиеся в описаниях памятников старины – реликвий, картин, гравюр, встречающихся в игровом мире. Эти культурные артефакты генерируются динамически, когда игроки исследуют новые области, и каждый объект представляет одну скрижаль из жизни султана, случайным образом выбранную из сгенерированной истории. На рис. 15.1 показан пример алтаря султана с соответствующей скрижалью для изображенного на нем события. Игрок может столкнуться с этими скрижалями в любом порядке. При этом они записываются в журнал и сортируются в хронологическом порядке (см. рис.  15.2). Игроки могут обмениваться скрижалями с NPC; процесс взаимообмена называется «водным ритуалом», опосредованным валютой репутации с различными фракциями в игре. Со временем игроки нака-

176

 Глава 15. Генерация историй

пливают все больше и больше скрижалей из жизни султана, выстраивая связный рассказ о его жизни.

Рис. 15.1. Святилище, где представлено историческое событие из жизни Уумаспа II – процедурно сгенерированного султана одной из древних эпох в мире Куд

Исторические события также формируют генерируемый игровой мир. Султаны посещают места, которые оформляются как цельные, исторически выверенные объекты в ходе генерации мира (см. рис. 15.3). Объекты, упоминаемые в ходе раскрытия биографий, также моделируются в целостном виде. Если султан по каким-то причинам оставил тот или иной артефакт в определенном месте, этот элемент будет ожидать игрока именно там. Игрок взаимодействует с повествованием через культурные артефакты, в которых воплощается история жизни султанов; это задает направление движения игрока, которому нужно найти и изучить другие артефакты.

Модель в действии Повторюсь: наша система моделирует историю как взаимодействие между историческими объектами (местами, предметами и султанами, представленными в виде структур данных) и историческими событиями, которые изменяют свойства этих объектов. Чтобы обеспечить согласован-

Генерация истории в Caves of Qud  177 ность генерируемого нарратива, сами события параметризуются свойствами исторических персонажей, включая те самые, которые они изменяют.

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

Рис. 15.3. Исторический объект, сгенерированный в истории игрового мира и сопровождаемый процедурным описанием

Давайте рассмотрим, как система генерирует индивидуальную историю султана (рис. 15.4). Во-первых, она создает экземпляр исторической сущности, представляющей «исходное состояние» султана с несколькими основными свойствами: имя, местоимения (в зависимости от пола персонажа), год и область рождения, местоположение в области рождения и доминанта. Затем система принимает решение о событии рождения для султана – одно из немногих предписанных событий наряду с тем, чтобы стать султаном и умереть. Затем случайным образом из пула жизненных событий выбирается одно – например, осада города. С опорой частично на состояние султана, а частично на случайное ветвление определяется

178

 Глава 15. Генерация историй

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

программный поток входной параметр

Выберите следующее событие

обновление состояния

Сущность султана Разрешить сведения о событии

Глобальное состояние

Другие структуры Состояние обновления

Рис. 15.4. Блок-схема формирования истории султана

Причинность Обратите внимание на то, что случайный выбор событий подразумевает в системе некую историческую логику, но на самом деле ее нет. Истори2

Кейт Комптон. Tracery (2015). https://github.com/galaxykate/tracery

Генерация истории в Caves of Qud  179 ческие причины и следствия не имеют внутренней сцепки. Сами события выбираются произвольно, и скрижали часто сами генерируют причины. Эта рационализация генерируется внутри событий и опосредована состоянием султана. В качестве примера рассмотрим осаду города  – событие, скрижаль которого начинается со следующей схемы: Действуя против #injustice#, #sultanName# повел армию к воротам #location#. Выбирая, что подставить на место #injustice# («несправедливость»), событие рассматривает свойства султана. Если, например, на территории, подконтрольной султану, есть какие-либо животные – скажем, лягушки – на месте #injustice# появляется, к примеру, «преследование лягушек». Таким образом, следствие события предшествует его причине. Если же из состояния султана нельзя вывести подходящую причину, событие может сгенерировать ее, скажем, изменив собственность союзных фракций султана, чтобы включить лягушек и выполнить необходимую замену. В этих случаях происходит инверсия причинно-следственных отношений: не причина вызывает следствие, а следствие вызывает причину.

Согласованность повествования Хотя нет никакой внутренней причинности в серии событий из жизни султана, параметризация событий приводит к тому, что игроки сами начинают достраивать причинно-следственные связи, что и порождает когерентное биографическое повествование. Общее состояние султана действует как цемент, который связывает рассказы о разрозненных событиях. Доминанты играют особенно важную роль в параметризации событий. Согласно правилам грамматического замещения почти все образцы скрижалей включают доминанты, то есть после подстановки отдельных слов и фраз сгенерированный текст часто ссылается на доминанту султана. В результате это качество так или иначе увязывается с личностью султана. Доминанты действуют как повествовательные нити, связывающие воедино события жизни султана. В табл. 15.1 представлен полный набор скрижалей, формирующих биографию сгенерированной султанши Антиксерпуры – с текстовыми фрагментами, размеченными в соответствии с порядком их генерации. Давайте посмотрим, как рационализация связывает мелкие части повествования. В скрижали 5 Антиксерпура торгуется с кошками и убеждает их помочь ей найти место раскопок. Затем, в скрижали 6, она освобождает кошек в битве при Старом Теггаше. Хотя свидание Антиксерпуры с кошками не сыграло никакой роли в решении системы инициировать битву при Теггаше, скрижаль утверждает обратное. Для того чтобы рационализировать битву (то есть утвердить необходимость в ней), логика событий переосмыслила

 Глава 15. Генерация историй

180

союз Антиксерпуры с кошками, на который прямо указывает скрижаль 5. Поскольку людям свойственно стремление как-то интерпретировать события, игроки сами попытаются объяснить себе, почему Антиксерпура решила сражаться на стороне кошек. Может быть, она заключила с ними сделку – они помогают ей организовать раскопки, а она борется за их освобождение. Из-за того что свойства султана ограниченны и являются общими для многих событий, подобные фрагменты повествования встречаются довольно часто. Таблица 15.1. Набор скрижалей для сгенерированной султанши в Caves of Qud Номер

Скрижали

0

(Инициализация султана; имя: Антиксерпура, местоимения: она/ей/ее, место рождения: Философский квартал Шейнрук; доминанта: лед)

1

На рассвете первого дня лета геолог нашла ребенка с ледяными сосульками в руках рядом с местом раскопок. Она и ее коллеги-геологи взяли ребенка на попечение и назвали Антиксерпурой.

2

В 230 году Антиксерпура убила султана Куда в связи с тем, что он своим указом запретил замораживать предметы во льду. В результате она взошла на трон в возрасте 21 года.

3

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

4

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

5

В ходе встречи с кошками Антиксерпура убедила их помочь ей найти место раскопок в Философском квартале Шейнрук, чтобы выкопать древние глыбы льда. Они назвали это место ледяными раскопками.

6

В битве при Старом Теггаше Антиксерпура сражалась за освобождение кошек. Она орудовала морозным молотом с таким мастерством, что с тех пор его стали называть Фростик – Друг Кошек.

7

В самых недрах Философского квартала Шейнрук Антиксерпура наткнулась на клан медведей, проводящих тайный ритуал. Из-за ее репутации убийцы с ледяным кинжалом медведи встретили ее неласково и объявили врагом их рода.

8

Во время путешествия к Старому Теггашу в Философском квартале Шейнрук Антиксерпура была захвачена бандой. Она томилась в неволе в течение 7 лет и в конце концов бежала в Урашур.

9

Бродя по Философскому кварталу Шейнрук, Антиксерпура обнаружила святилище в Майлимроде. Там она подружилась с таинственными существами и рассчитала расстояние до ближайшей звезды.

Генерация истории в Caves of Qud  181 Номер

Скрижали

10

В 300 году Антиксерпура одержала решительную победу над объединенными силами ювелирного квартала Биилитума в кровавой битве при пещере Таппа, хотя и потеряла в сражении Фростика – Друга Кошек. В результате пещеру Таппу так выстудили ветры со льдом, что ее переименовали в Ледяную пещеру.

11

В 302 году Антиксерпура одержала решительную победу над объединенными силами Суппира в кровавой битве при Миаравахе. В результате сражения Миаравах был настолько опустошен ветрами со льдом, что его переименовали в Ледышку.

12

Глубоко в историческом квартале Тунепада Антиксерпура обнаружила Тарченну. Там она подружилась с таинственными незнакомцами и углубилась в земные слои.

13

В 306 году Антиксерпура умерла по естественным причинам. Ей было 97 лет.

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

Доминанта Антиксерпуры (лед), присвоенная ей на этапе доисторической инициализации (скрижаль 0), неоднократно упоминается и в других скрижалях, связывая правительницу с архетипическим феноменом. Она была найдена с сосульками в руках (скрижаль 1), в юности боролась против запретов использовать лед (скрижали 2 и 4) и совершать паломничества в тундру (скрижаль 3). Позднее Антиксерпура предпринимает раскопки, чтобы выкопать глыбы льда (скрижаль 5), управляется с морозным молотом во время исторической битвы (скрижаль 6) и вымораживает два места с помощью ледяных ветров (скрижали 10 и 11). Фрагменты текста, где так или иначе упоминается лед, оформлены методом грамматического замещения в соответствии с доминантой Антиксерпуры, и в совокупности действуют как движущая сила повествования, обуславливающая события жизни героини. Ниспровержение исторической логики – странное решение, но оно согласуется с темой Caves of Cud и научно-фантастической концепцией. Это игра о взаимодействии с артефактами прошлого вне порождающего их контекста. Она призывает порассуждать об истоках современности в самом высоком смысле и пофантазировать о том, из какого далекого прошлого мы шагнули в тот мир, что нас окружает. Опрокидывая традиционную историческую логику, игра предлагает нам идею о том, что мы мало что знаем о мировой истории и о том, какие сложные мотивы ею управляли.

182

 Глава 15. Генерация историй

Заключение Итак, мы изложили концепцию генерации повествования и привели конкретный пример. Давайте перечислим вопросы, ответы на которые помогут нам понять, насколько верны наши интуитивные предположения, и управлять проектированием систем генерации исторического мира: • В каком повествовательном контексте развивается история? Мы будем представлять исторические события как процесс или как артефакт, который рассматривается через призму современности? • Кто рассказывает историю? Каковы взгляды этого рассказчика на историю? • Каких персонажей и какие события можно выделить в рамках рассматриваемого исторического периода? • Какова логика взаимосвязи событий? Какие аргументы использует эта логика? Я рассматриваю процедурную генерацию как способ исследовать исторические механизмы и понять, как мы их осмысляем, пользуясь неполными данными. История имеет огромное значение для социума. Она пронизывает гигантский пласт нашей культуры. Трактовка истории методом процедурной генерации – новое слово в осмыслении прошлого и настоящего.

Глава

16 Процедурные описания планет в Voyageur Бруно Диас

Voyageur появилась не так, как обычные видеоигры. Своим рождением она обязана методу, который я полюбил и хотел использовать, и инструменту, специально для нее разработанному. В конце 2015 года Эмили Шорт (Emily Short) опубликовала часть сгенерированного текста Annals of the Parrigues. Это путеводитель по вымышленной средневековой стране, в основном описывающий историю местных городов и деревень, их географические особенности и культуру. Примерно в то же время я начал обдумывать (и обсуждать в разговорах с Эмили и другими людьми) идею игры, где использовалась бы подобная техника генерации текста, – своего рода интерактивной версии Annals of the Parrigues. Что если вы могли бы путешествовать из города в город, читая их описание, создавая истории, обмениваясь вещами с местными жителями? Parrigues, наряду с библиотекой Tracery Кейт Комптон (Kate Compton), подсказала мне дизайн инструмента, который я назвал Improv, – библиотеки генерации текста, подходящей для создания документов типа Parrigues или игр вроде той, которую я задумал. Речь идет о Voyageur. Вот как должен был работать Improv: • Я хотел создать текст с использованием базовой грамматики. Я знал по опыту, что Tracery  – отличный способ создания генерируемого текста, потому что его гораздо легче воспринимать и структурировать. Кроме того, можно предполагать, что серьезные синтаксические ошибки в таких случаях  – почти наверняка продукт неисправного корпуса текста, а не какой-то непостижимой ошибки в механике. • Грамматические конструкции должны легко считываться человеком и машиной – и, вероятно, быть отформатированными как JSON. В  реальной кодовой базе Voyageur все корпусы написаны на YAML

184

 Глава 16. Процедурные описания планет в Voyageur

для удобства чтения, но переводятся в JSON (который работает с Improv) во время компиляции. • Improv должен уметь отслеживать состояние мира и генерировать текст, соответствующий этому состоянию. Скажем, если речь идет о поселении в пустыне, нельзя упоминать протекающую рядом реку. Такая система позволит создавать адекватные описания тех или иных мест. Именно последний аспект побудил меня самостоятельно создать библиотеку: Tracery не поддерживает такого рода функциональность. Методы, которые Эмили изложила в приложениях к Parrigues, использовались в качестве шаблона, но в конечном счете я сильно от них отклоняюсь.

Обстановка С самого начала проекта меня главным образом занимала идея о путешествии в один конец. С точки зрения механики это похоже на игру «исследуй и торгуй» в духе Elite: доминирующая стратегия заключается в том, чтобы найти выгодный торговый маршрут и использовать его. Но я хотел чего-то большего – поощрять странствия игрока: пусть он перемещается из одного порта в другой, никогда не возвращаясь, а по пути забирает какой-то груз. Для меня это всегда был самый интересный способ игры, и мои любимые образцы жанра были именно таковы. Например, в Pirates! Сида Мейера (Sid Meier) игрока вдоль торговых путей Карибского моря направляет ветер, побуждая его причудливо петлять по карте. Кроме того, я знал, что в процедурно сгенерированную местность не стоит возвращаться. Планеты в Voyageur принципиально статичны, и это оправданно, поскольку вы остаетесь на них ненадолго. Учитывая, что процедурная генерация дала мне «неограниченное» количество миров, которые можно представить игроку, я мог попросту устранить возможность возвращения. Вы находитесь в дельте реки, и вот вас увлекает течение; вы можете выбрать, по какому руслу направиться, если оно расходится, и от этого зависит, где вы пристанете к берегу, но назад дороги нет. Каждое место, которое вы посещаете, останется в вашей памяти таким, каким вы его увидели, и вам не дано понять, как оно изменится впоследствии. Все прочие наращения этой механики, как в плане эмоций, так и в плане повествования, и легли в основу разработки декораций и истории Voyageur. Путешествие на лодке вниз по реке дает и название игре: во Франции XIX века «вояжерами» называли франкоговорящих лодочников из Канады, которые перевозили меха по Северной Америке; это слово впоследствии приобрело более широкое значение. Отсюда я плавно перешагнул к идее космических путешествий. «Переплывать» с планеты на планету, а не тащиться от деревни к деревне – ка-

Обстановка  185 кой прекрасный способ использовать самые разные среды и настройки! Эта идея прекрасно увязывалась с процедурным характером игры и возможностью использования отдельных портов; игроки посещали многие места за одно прохождение, и исследование галактики интриговало куда сильнее, чем извилистая система рек. В Voyageur маленький космический корабль одинокого странника оснащен спусковым устройством; это часть таинственной инопланетной технологии, которая работает необъяснимым образом и неизвестно для чего предназначена. Достаточно подзарядиться электроэнергией, и ваш корабль со скоростью, превышающей скорость света, понесется куда-то к центру галактики. Вы можете немного порулить, покуда корабль ускоряется, чтобы убедиться, что вы попали в конкретную звездную систему при спуске. Но путешествовать можно только в одну сторону. Эти устройства позволяют путешественникам вести кочевой образ жизни. Все остальные космические странники используют варп-двигатели – огромные, дорогие, и нужны месяцы на то, чтобы пройти несколько световых лет. Ваше же устройство доставит вас в соседнюю звездную систему во мгновение ока! Это вселенная, обитатели которой долгое время путешествовали по звездам и за несколько поколений колонизировали большую часть галактики. Такая экспансия, направленная во все стороны, определила скорость путешествий, которые люди могут предпринимать за одну жизнь; общество космических путешественников не имеет регулярных контактов с подавляющим большинством человекоподобных существ, о которых известно только то, что десятилетиями или даже столетиями доставляли в посланиях космические корабли (то есть информация к моменту ее поступления сильно устаревает). Вот описание игры, в котором показано, с чем вы можете столкнуться: Город представляет собой сеть приземистых куполообразных строений, соединенных подземными переходами. Через полупрозрачную внешнюю часть куполов просматривается зелень. По наступлении темноты прохожих на улицах уже не встретить: они исчезают словно по какому-то невидимому сигналу, оповещающему о комендантском часе. Повсюду видны признаки формирования земной поверхности; в каждом окне доступен вид дополненной реальности, показывающей, каким этот мир будет через сто лет (в целом он похож на Землю). Вы обнаружите, что местные жители недоверчиво относятся к пришельцам вроде вас, и местные правила использования ресурсов и утилизации отходов сильно осложняют жизнь. (Voyageur) Путешествие одинокого странника не может не рождать меланхолию; каждое место, куда вы прибываете, вы видите в первый и последний раз

186

 Глава 16. Процедурные описания планет в Voyageur

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

Инструмент Improv Я создал Improv до начала работы над Voyageur – во-первых, потому, что хотел удостовериться в надежности реализации своей идеи, а во-вторых, поскольку полагал, что инструмент пригодится другим разработчикам как ресурс с открытым исходным кодом. Дело упрощалось в силу того, что инструмент был основан на заимствованной методологии. Tracery и Improv – два грамматических подхода к созданию текста (или любого контента, который может быть выражен в виде строки символов, например изображений SVG). В обоих случаях применяется ряд правил построения текста. Каждое правило состоит из имени, или ключа, и набора возможных завершений для этого правила, фраз. Предположим, мы генерируем описания кошек; правило, называемое цветом, будет содержать несколько вариантов окраса кошачьей шерсти: «рыжий», «серый», «черный», «полосатый», «черепаховый» и т. д. В Tracery (см. рис. 16.1) правила содержат простые списки фраз. В Improv фразы по данному правилу разбиваются на группы; каждая группа включает метаданные, описывающие ее содержимое, а также одну или несколько фраз.

Грамматика

Случайность

Выход

Рис. 16.1. Tracery использует случайный выбор из возможных значений, образующих грамматическую иерархию

Improv (см. рис.  16.2) в общих чертах напоминает Tracery. Генератор работает по циклу; ему дано имя правила, которому нужно следовать в качестве отправной точки. Затем он случайным образом выбирает возможное завершение этого правила (фразу) и использует какое-то простое расширение шаблона. Наиболее важная функциональность – включение других правил, которые генератор затем выполняет рекурсивно, пока не будет пройдено все «дерево» фрагмента текста. Так, мы могли бы начать с правила под названием cat_desc («описание кошки») и случайным обра-

Инструмент Improv  187 зом выбрать фразу «Это #coat_color# кот...». Затем Tracery интерпретирует #coat_color# как разметку, которая будет заменена правилом coat_color, так что вы в итоге получите: «это полосатый кот...». Модель мира Состояние модели мира Метаданные группы

Грамматика

Фрагменты

Фильтрация

Случайность

Выход

Рис. 16.2. Идеализированная схема работы Improv

Improv отличается от Tracery в выборе используемого фрагмента. У Tracery одна «истина» – грамматика. У Improv ее две: грамматика и модель мира. Модель мира – это удобное для компьютера описание реальности, с которой связан текст. Текст, адресованный читателю, обычно грешит массой опущений. Возьмем одно определение из «Википедии»: «HMS Agamemnon  – 64-пушечный линейный корабль 3-го ранга, принадлежащий Британскому Королевскому флоту». Здесь содержится довольно большой объем узкоспецифичной информации, которая не организована четким образом, а частично даже вплетена между строк. Вот явные факты, которые следуют из этого предложения: • • • • • • • • •

На этом корабле развевается флаг Великобритании. Это военный корабль. Это линейный корабль. Это линейный корабль 3-го ранга. Это корабль класса Ardent1. Это корабль XVIII века. Это парусное судно, использующее для движения ветер. Это корабль с квадратной оснасткой. Это корабль с пушками на борту.

Мы можем упорядочить эту информацию, выстроить ее иерархически и таким образом вписать в модель мира: 1

HMS Ardent («Пылкий») – подкласс линейных кораблей Великобритании; всего их было восемь – и еще два остались в планах. – Прим. перев.

188

 Глава 16. Процедурные описания планет в Voyageur

• Флаг: Великобритания • Назначение: военный корабль ○ Тип: линейный корабль ▫ Ранг: 3-й • Класс: Ardent • Эпоха: XVIII в. • Средство управления: парус ○ Оснастка: квадратная • Оружие: пушки Прежде чем выбрать конкретную фразу для выполнения правила, Improv производит фильтрацию. Фильтры, в терминах Improv, – это функции, которые принимают два аргумента: модель мира и метаданные из группы. Они сравнивают эти два параметра, возвращая либо число, либо нулевое значение. Нулевое значение означает «полностью отбросить эту группу». Число, добавленное к оценке группы, или «вес», – это показатель того, насколько подходящей или неподходящей является группа для текущей модели мира. Этот шаг дает подмножество грамматики, которая была выбрана с учетом критериев фильтрации; обычно это означает соответствие модели мира. Из этого подмножества Improv затем случайным образом выбирает, какие фразы использовать в дальнейшем. Однако Improv не знает, как выполнять фильтрацию. Генератор Improv определяется с помощью специального набора фильтров, поставляемых разработчиком. В то время как некоторые фильтры отмечают неуместные для использования фразы, Improv разработан таким образом, чтобы в основном полагаться на «мягкую» фильтрацию: сначала оценивается назначение фраз, а затем используются те из них, которые набрали достаточно высокий балл. «Достаточно высокий» – это переменная: Improv использует определяемую пользователем формулу, чтобы выбрать, что это означает, учитывая самый высокий балл в образце. С учетом m, максимального веса в выборке, формула отбора должна возвращать c – порог отбора; фразы с более низким, чем c, весом отбрасываются. С виду вроде бы мелочь, но на самом деле это очень сильно влияет на поведение генератора. По формуле c = m генератор будет всегда выбирать из наиболее весомых фраз, доступных ему, и такой выбор не слишком-то случаен. В Voyageur используется формула c = m – 10. Здесь 10 – это значение, полученное экспериментально путем настройки генератора. При использовании фильтров Voyageur и корпуса текста значение m составляет где-то около 30; эта формула чаще всего (но не всегда) отбрасывает фразы, которые не достигли 70% от максимального веса. Эксперименты показали, что это создает оптимальное соотношение непредсказуемости и согласованности.

Фильтрация, реинкорпорация и источники истины  189

Фильтрация, реинкорпорация и источники истины «Сердце» генератора  – стек фильтров. Изначально стек фильтров представлял собой попытку создать когерентный текст, который не допускал бы внутренних противоречий. И это привело к появлению того, что, по моему мнению, должно делать хорошее процедурное описание. Генератор планет в Voyageur, самый важный генератор Improv в игре, использует «секретную смесь» из семи фильтров, четыре из которых входят в библиотеку Improv, а три специально созданы для Voyageur. Вот они все: • Фильтр несоответствия сравнивает теги фразы с тегами модели мира и возвращает значение null, если теги фразы не идентичны или не являются подмножеством тегов модели. То есть отбраковывает откровенные противоречия вроде включения тегов с пометкой «тундра» в описание пустынного мира. • Выпариватель избавляет текст от повторов. Это один из самых оригинальных фильтров Improv; он отбраковывает фразы, которые уже были использованы. Именно здесь модель начинает усложняться по сравнению с идеализированной, представленной на рис.  16.3. Как это часто бывает, Improv нуждается в дополнительной памяти, чтобы хорошо работать.

Модель мира Формула отбраковки

Состояние модели мира М

Метаданные фраз

Грамматика

Фразы

й

ны аль м и с акс ве

Фильтрация

ые нн а ва слов о з ль е по евы Ис люч к

Порог насыщения

Отбраковка результатов

ые пн ва сту сло о Д ые ев юч

Случайность

кл

Выход Стек фильтров

Рис. 16.3. Improv в деталях: отбраковка и стек фильтров

190

 Глава 16. Процедурные описания планет в Voyageur

• Бонусный фильтр заметно увеличивает вес фраз с тегами, которые идеально соответствуют тегу в модели мира. Скажем, если планета помечена как пустынный мир, в ее описании с большей вероятностью встретятся фразы, характерные для пустынного мира. • Неупомянутое заметно увеличивает вес фраз с тегами, которые не присутствуют в уже использованных фразах. То есть генератор ориентирован на описание тех свойств планеты, о которых еще ничего не сказано. Цель в том, чтобы создать достаточно разносторонние описания, которые дают как можно более полное представление о планете. • Тонкая настройка: этот фильтр, специально созданный для Voyageur, прибавляет вес фразам, жестко закодированным в текстовом корпусе; некоторые фразы просто оказываются более весомыми без заметных причин. Мы еще поговорим об этой хитрости подробнее. • Призма: еще один трюк, отточенный методом многих проб и ошибок. Каждая планета в Voyageur показана через какую-либо призму, будь то культура, живые существа, населяющие планету, или еще какой-то параметр. Фразы, помеченные соответствующим тегом (то есть фразы, в которых отражается соответствующий параметр игрового мира), имеют более высокий вес. Это помогает дифференцировать описания подобных моделей; генератор каждый раз учитывает разные характеристики планеты. • Смещение склоняет генератор к обсуждению важных аспектов описываемой планеты. Это прибавляет вес фразам, в которых упоминаются особые характеристики планеты, преобладающая идеология, обитатели и др.; цель в том, чтобы каждое описание затрагивало эти основные аспекты. По сравнению с этим сложным сочетанием фильтров фактическая грамматика довольно проста; каждое описание планеты – это всего лишь необязательный зачин («ваш корабль приземляется на...»), за которым следуют некоторые произвольные сообщения о планете. Стиль описания максимально свободный, и это не случайно: я не хотел, чтобы описания были длинными, и не планировал создавать слишком большую и сложную структуру. Полагаю, существует способ генерации, при котором связь между предложениями прослеживается четче, но он требует другого подхода, чем этот вид грамматики. Чтобы отбирать грамматику в соответствии с моделью мира, Improv выполняет сложные расчеты, оценивая сразу несколько факторов. Но я еще не объяснил вам, откуда берется эта модель мира.

Откуда берутся модели мира  191

Откуда берутся модели мира Когда я впервые начал планировать Voyageur, меня волновал вопрос о том, откуда берутся модели мира – «источник истины». На мой взгляд, здесь было два подхода: • Априорная истина: модель мира генерируется отдельно – возможно, с помощью какого-то подхода, который вы выбрали случайно. Затем вы используете модель мира для «подпитки» вашего генератора. • Апостериорная истина: вы указываете генератору сгенерировать фразу. Затем теги этой фразы добавляются обратно в модель мира (процесс, который я называю реинкорпорацией). Последующие фразы подчиняются этой измененной модели мира. Второй подход мне по-настоящему понравился  – именно его Эмили Шорт использовала в Parrigues, и это позволило текстовому корпусу определять частоту всего происходящего в игре. Тогда, если бы я, скажем, написал много текста для пустынных миров, я бы в конечном счете получил больше пустынных миров  – и замечательно, поскольку у меня было бы много контента для них! Я начал строить Voyageur исходя именно из такой схемы работы, поэтому реинкорпорация является основной особенностью Improv (рис. 16.4). Все, что вам нужно сделать, – включить его с помощью переключателя, когда вы создаете экземпляр генератора.

Модель мира

Преобразование метаданных

Формула отбраковки

Состояние модели мира

М

Метаданные фраз

Грамматика

Фразы

й

ы льн ма с и с е ак в

Фильтрация

е ны ан лова в о с льз е по евы Ис люч к

Порог насыщения

Отбраковка результатов к

ые пн ва сту сло о Д ые в че лю

Случайность

Выход Стек фильтров

Рис. 16.4. Как работает Improv с реинкорпорацией

192

 Глава 16. Процедурные описания планет в Voyageur

Однако этот план почти сразу же провалился. Во-первых, планеты в Voyageur не одиноки в безграничном космосе – они входят в некий регион, у которого свои собственные особенности (например, правительство и культура). Эти особенности образуют своего рода субстрат, на котором будут «произрастать» описания планет. Поскольку я исследовал возможности, фактически кодируя Voyageur, я быстро пришел к гибридной модели. Она-то и используется в итоговой версии игры. Планеты в Voyageur изначально отмечены некоторыми базовыми признаками – классом планеты (пустынная, тундровая, металлическая, венерианская и др.), а кроме того, в некоторой степени отражают особенности своего региона. Это позволяет мне обойти одну из слабых сторон Improv – проблему выражения более сложной логики взаимоотношений между различными частями модели мира. Так, городской мир должен иметь развитую неагрессивную экономику; такого рода логика обрабатывается не генератором Improv, а кодом, который «насаживает» в игре планеты с исходными метаданными. Также быстро выяснилось, что разрешить корпусу текстов определять частоту всего происходящего в мире – не такая уж хорошая затея. Чтобы сбалансировать экономику игры, мне нужно было иметь возможность настраивать рычаги напрямую. Было бы проблематично, если бы для того, чтобы сделать менее частотным какой-либо тип ресурса или события, мне пришлось бы удалить некоторые строки из корпусов текста либо добавить больше записей для всех других видов планет. Огромное количество времени разработки было потрачено на написание корпусов текста генератора планет Voyageur. Процедурная генерация – это, по сути, способ получения 200 % контента с 400 % работы. Некоторые элементы корпусов текста Voyageur (в основном списки имен) вычищаются из общедоступных данных, но эти списки должны быть проверены и просмотрены человеком (в данном случае – лично мной), прежде чем их можно будет сознательно использовать. По большей части корпус текста состоит из множества фрагментов описаний, созданных вручную, небольших фраз, которые я организую так, чтобы машина могла их рекомбинировать… Писать в таком стиле трудно: вы не можете полагаться на естественный поток речи, который направлял бы вас, и должны заботиться о том, как в конечном счете будет использоваться текст. Ближе к концу цикла разработки много времени ушло на настройку генератора. Генератор планет не обеспечивал хороший результат – описания планет были слишком похожи друг на друга. Создание вспомогательных инструментов тестирования позволило увидеть, что некоторые фразы откровенно недоиспользованы. Генератор Improv довольно-таки трудно понять. Improv преподнес мне любопытный урок: вы можете написать алгоритм вручную, используя традиционные методы без метаязыка, и все еще не до конца понимать, как производится тот или иной результат!

Откуда берутся модели мира  193 Настройка этих систем идет медленно. Вы меняете конкретное сочетание используемых фильтров и скоринговых значений, а затем создаете несколько планет, чтобы посмотреть, хороши описания. Затем тысячи раз запускаете систему и собираете статистику, чтобы подтвердить свои предположения… Это сводит с ума! Мне потребовалось много времени, чтобы понять, в чем моя проблема. Фильтры Voyageur разрабатывались для реализации прекрасных идей о том, как создать толковое описание: выберите ракурс («Призма»); акцентируйте важный материал («Смещение»); не останавливайтесь слишком часто на одном и том же («Неупомянутое»). Все это работало отлично, но некоторые фразы почему-то регулярно выпадали из обращения – независимо от соотношения факторов, которые я пытался отрегулировать! Это в особенности касалось фраз, которые редко подходят для планеты, – тех маленьких перлов, которые должны были встречаться в описаниях исключительно редко. Я потратил много времени, пытаясь настроить систему для достижения «хорошего» распределения использования фраз, и понял, что… не могу. Отдельные группы фраз оставались незадействованными, как я ни силился. Это был последний большой урок, который я получил, работая над Voyageur: временами вам нужно задать своего рода «направляющие». В конце концов я просто назначил для нескольких фраз жестко закодированные оценки веса (tweaks). Фактически это был пинок, который выталкивал вперед низкочастотные фразы. Да, я мог бы добиться этого программным образом. Но это потребовало бы еще одного шага во время компиляции или долгого и медленного «самоанализа» при запуске игры, и на выходе это была бы уже совсем другая автоматизированная система. Ручные настройки работали очень хорошо. И если вы считаете, что процедурные описания в Voyageur в целом хороши (рис. 16.5), то только благодаря этому. Генератор планеты Voyageur в итоге оказался намного сложнее, чем тот, который я замышлял. Он учитывает историю использования отдельных фраз и на основании этого решает, какой вес придать той или иной фразе из текстового корпуса. Он полагается на «направляющие», по которым движется текстовый поток. Если генератору предоставить чересчур много свободы, он вам быстро начнет выдавать однотипные «тарелки овсянки». Вариабельность он гарантирует, но для игрока она ничего не значит. Voyageur опирается на модель мира, на реальность, затрагивающую другие системы игры, чтобы случайность была не такой уж случайной. В итоге я столкнулся с проблемой, противоположной генерации «тарелок овсянки», – с тем, что я называю «проблемой жесткого построения». Когда генератор заточен на использование очень ярких, заметных фраз, когда нет достаточной случайности, то описания кажутся какими-то очень уж небанальными – форма чересчур послушно следует за функцией. Пла-

194

 Глава 16. Процедурные описания планет в Voyageur

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

Модель региона

Предварительный отсев планет

Модель мира

Преобразование метаданных

Формула отбраковки

Состояние модели мира

й

ны аль им ес с к а в

Метаданные фраз

Грамматика

Предварительно набранные баллы Фразы

Порог насыщения

М

Фильтрация

ые нн а ва слов о з ль е по евы Ис люч к

Стек фильтров Резерв фильтров

Черная магия

Отбраковка результатов

ые пн ва сту сло о Д ые ев юч

Случайность

кл

История использования тегов

Метаданные выбранной фразы

Выход

Рис. 16.5. Генератор планет Voyageur с предварительным отсевом и настройками

Заключение Описанный выше генератор текста балансирует на тонкой грани: отклонишься в сторону случайности – и генерация теряет смысл; привнесешь слишком много смысла – и за простым распознаванием состояния игры не остается никакого места эмоциям. Предоставлю вам судить, можно ли назвать Voyageur сбалансированной в этом плане игрой. Это, безусловно, тот случай, когда можно было бы улучшить ситуацию, удвоив или даже утроив объем текстов. Не скажу, что я был чересчур наивен в своих ожиданиях, но в чем я точно обманывался – так это в расчете времени, которое понадобится на то, чтобы генератор заработал как надо. Меня обеспокоил тот факт, что путь из проб и ошибок так сильно растянулся и что его будет трудно повторять в других проектах. Я и вправду не

Заключение  195 могу передать вам методологию настройки генератора, подобного тому, что я использовал в Voyageur. То, что сработало в моем случае, довольно-таки специфично и подходит исключительно для контента и механики Voyageur. Зато метод проб и ошибок помог мне составить определенное мнение о процедурном генерировании такого рода. И, как бы то ни было, генератор создал игру. Voyageur дает гораздо больше погружения в игровой мир, чем предполагалось изначально. По моему замыслу, игра должна была разворачивать непрерывные «вложенные игры», в которых вы собираете данные из описания планет и используете эту информацию для принятия разумных бизнес-решений. Вот это-то как раз и не получилось. Единственный способ заставить описания работать в качестве функциональных подсказок в процессе игры – сделать текст настолько сухим и выхолощенным, что игроку будет откровенно скучно на нем застревать. Те описания, которые в итоге создает генератор, довольно расплывчаты и не слишком информативны, но именно это придает им живость! Как настроить процедурную генерацию на создание красивого, а вместе с тем функционального текста, – это я оставлю читателю в качестве упражнения.

Глава

17

Генерация в реальном мире М. Лейзер-Уокер

Большая часть этой книги посвящена тому, как использовать процедурную генерацию для различных повествовательных целей: представлять виртуальный мир в конкретных образах, давать игроку возможность самому направлять нарратив, создавать разнообразные эффекты – смешные, неожиданные и подбадривающие игрока. Подразумевается, что миры, которые мы создаем, являются цифровыми – они живут в наших карманах, телевизорах или на экране настольных компьютеров. Все чаще люди создают нарративные переживания, так или иначе пересекающиеся с реальным миром. Будь то дополненная реальность, иммерсивный театр, квесты типа «найди выход» или традиционные трансмедийные опыты наподобие игр в альтернативной реальности (ARG), зрители жаждут более выпуклых и ярких историй. В этой главе речь пойдет о том, как сочетать вычислительно управляемую процедурную генерацию с повествованием, воплощенным в реальности. Мы исследуем некоторые методы, используемые в нецифровом мире, чтобы создать задел для эмерджентного повествования, управляемого игроком. После этого поговорим о Computational Flâneur – генеративной поэтической прогулке, которая стала продолжением моего исследования в MIT Media Lab и призвана была проиллюстрировать технические и дизайнерские процессы, которые сопровождают интеграцию цифровых генеративных систем с реальным миром.

Как аналоговые работы используют процедурность? Современные дискуссии о процедурной генерации и сторителлинге, в силу акцента на играх и цифровых технологиях, как правило, фокусируются на том, как нарратив может возникнуть на пересечении сложных интерактивных систем. Но стоит задуматься и над тем, как искусство, основанное на локации – например, иммерсивный театр и виды искусства, привязанные к местности (site specific), создают пространство для нарратива при

Как аналоговые работы используют процедурность?  197 отсуствии тяжеловесных системных подходов, к которым мы привыкли в цифровых играх.

Объединяющая сила игр Если люди вовлекаются в процедурно сгенерированный контент в реальной обстановке, эффект создается очень интересный. Настольные игры, в которые надо играть группами, вроде Apples to Apples и Cards against Humanity, опираются именно на это. С учетом случайно выбранных из колоды карт у каждого игрока есть несколько возможных процедурно сгенерированных ответов  – и он должен выбрать карту, которая создаст наилучшую (или самую забавную) пару с текущей картой. Существует определенная стратегия принятия решения: придержать какую-либо карту для того, чтобы сыграть ее позже, и угадать задумку ведущего; но этот процесс аналогичен курированию итоговых результатов твиттер-ботов. В некотором смысле подобные игры представляют собой системы генерации комических ситуаций, управляемых в равной степени алгоритмом перетасованной колоды и творческим подходом игроков. И все же это работает! Игроки по-настоящему увлекаются игрой и уверены, что полностью контролируют свои ходы. Люди обычно чувствуют себя в большей мере причастными к результатам, выдаваемым системой, если понимают, в чем их вклад. Этот эффект только усиливается, если игрок получает некий физический опыт.

Пример 1: Sleep No More Sleep No More – иммерсивная пьеса британской театральной компании Punchdrunk, в настоящее время работающей в Нью-Йорке и Шанхае. Это, по сути, невербальный пересказ шекспировского «Макбета» и «Ребекки» Хичкока, но вам трудно будет об этом догадаться, если вы не знакомы с тем и другим произведением. Sleep No More – это действо, которое разворачивается в The McKittrick Hotel – огромном, высотой более шести этажей, складе в Манхэттене, охватывающем целый квартал. Шоу  представляет собой «гипердраму», что, в сущности, то же, что и гипертекст: поскольку персонажи пьесы перемещаются по территории в режиме реального времени, вы как зритель тоже можете свободно идти в любую сторону. За те два-три часа, что вы проводите в McKittrick, вы сами выбираете, куда идти и на что смотреть. Привлекательность Sleep No More заключается именно в этих вольностях для зрителя. Если вы решили следить за Макбетом в течение двух часов – пожалуйста. А можете потусоваться в баре или даже просто пойти в библиотеку и почитать. Все это, как говорится в описании, в равной степени значимые переживания в этом спектакле. В каком-то смысле Sleep No More – четко спланированная пьеса. Актеры перемещаются по территории McKittrick в заданных направлениях, их

198

 Глава 17. Генерация в реальном мире

взаимодействие прописано заранее и все в этом спектакле работает как часы. Но огромная площадь здания, отведенного под пьесу, дает зрителю столь же богатое пространство возможностей: ни один не повторит путь другого. Поскольку ни один зритель не может за один раз испытать все, что предлагает ему пьеса, важный момент в Sleep No More – «разбор полетов» в неформальной обстановке: в конце концов вы направляетесь в бар или кафе с друзьями, рассказываете о том, что вы увидели, и слушаете о том, что вы, возможно, упустили. Но такой грубый подход к нарративу терпит неудачу в бесконечно воспроизводимых видеоиграх – обратите внимание на количество фанатских форумов и энциклопедий, полных спойлеров и летсплеев! Тем не менее идея Sleep No More отлично срабатывает на территории склада в Манхэттене: за два-три часа просмотра зритель платит около сотни долларов.

Пример 2: Then She Fell Даже в мире иммерсивного театра существуют альтернативные ходы. Then She Fell, детище Third Rail Productions, – еще одна пьеса, которую показывают в Нью-Йорке. Действие разворачивается на территории бывшей психбольницы в Уильямсбурге; при этом рассказ о приключениях Алисы в Стране Чудес переплетается с историей реальных взаимоотношений Льюиса Кэрролла и Алисы Лидделл. В отличие от Sleep No More, пьеса Then She Fell в значительной степени линейна. Спектакль может единовременно посетить лишь дюжина зрителей, каждый из которых отправляется в путешествие по строго определенному маршруту. Каждый участник спектакля получит разный опыт, но при этом два зрителя, побывавших на разных спектаклях и проследовавших одним маршрутом, получат сходные впечатления. Против ожиданий эта линейность закручивает историю игрока в специфическом направлении. Механический сдвиг означает, что впечатления большинства зрителей будут определяться взаимодействием с актерами один на один (или близко к этому). В результате отдельные моменты, которые особенно сильно запечатлеваются в сознании игроков, переживаются в гораздо более личной манере. То, как актер, с которым вы оказались в паре, реагирует на ваши слова и действия в пределах одной сцены, не влияет на общий ход сюжета, но запоминается лучше всего. Если иммерсивный театр, как правило, больше всего опирается на «послевкусие» – обсуждение спектакля с друзьями, которые пришли на него вместе с вами, – то здесь акцент сделан на наиболее значимые моменты.

Пример 3: Джанет Кардифф Частично успех Sleep No More определяется тем, что Punchdrunk полностью контролируют пространство спектакля. Как и разработчики игр,

Как аналоговые работы используют процедурность?  199 создающие цифровые миры, участники контролируют каждый звук, вид и даже запах в помещении. К тому же, хотя сюжет Sleep No More проработан четко и без отклонений от курса, благодаря актерской работе остается место для спонтанного взаимодействия, поскольку актеры и зрители каким-то образом друг на друга реагируют. Звукорежиссер Джанет Кардифф (Janet Cardiff) в своей работе не использует ничего подобного. В 2000-х годах она создала серию звуковых прогулок, на которых вы в течение получаса взаимодействуете с говорящим с вами артистом в сложном бинауральном пространстве, «надстроенном» над реальным миром. Фрагмент этого произведения 2004 года – Her Long Black Hair – доступен в интернете (https://phiffer.org/hlbh/), это запись Дэна Фиффера (Dan Phiffer). В этом случае посетитель гуляет по Центральному парку в Нью-Йорке и слушает историю. Пьесы Кардифф в большей степени о том бинауральном звуковом ландшафте, который вас окружает, чем о том, что произносит актер. Рано утром вы слышите рев полицейских сирен на 59-й улице – и вы не уверены, откуда этот звук: действительно ли проехала полицейская машина или вой сирен записан. Вы слышите, как спорят какие-то люди или смеется ребенок, и опять задаетесь вопросом: что реально, а что нет? Это не живой, дышащий театр, как Sleep No More. Это аудиозапись, которая каждому участнику прогулки – хоть сегодня, хоть десять лет назад – преподносилась в одном и том же виде, без изменений. Тем не менее аудиопоток переживается как нечто глубоко личное. Когда я познакомился с работой Кардифф, этот опыт затронул во мне что-то такое, благодаря чему тот уголок в Центральном парке приобрел для меня особое значение. Есть что-то невыразимое в опыте, разработанном для конкретного пространства, да и в игре, основанной на местоположении игрока, например в Pokémon Go; это вымысел, формирующий ваши отношения с конкретным местом. Теперь, когда я возвращаюсь в этот уголок Центрального парка, в моих воспоминаниях всегда воскресает та аудиопрогулка. В значительной степени это обусловлено тем, что Кардифф феноменально использует человеческую психологию. Я уже упоминал о «потустороннем» ощущении, когда слышишь, как какие-то двое спорят за твоей спиной, и ты не знаешь, присутствуют ли они здесь физически. Специфика аудиозаписи такова, что если вы повернете голову, звук начнет исходить из другого места, и иллюзия будет нарушена. Но, как ни странно, никто не оборачивается. Как Кардифф это делает? Прежде всего в самом начале она просит зрителя не оборачиваться. Более того, в авторское повествование зашита тема сожалений о прошлом со специфическим посылом: жить не оглядываясь назад. В какой-то момент даже используется рассказ о жене Лота. В резуль-

200

 Глава 17. Генерация в реальном мире

тате зритель изначально не настроен разрушать иллюзию этой технологии. Это похоже на волшебный трюк, и он потрясающе хорош! Инструкции аудиопрогулки не сработали бы и в том случае, если бы вы шли с неправильной скоростью. Однако этого не происходит, потому что при прогулке используются методы «кадрирования», позволяющие проверить, что вы идете в точно заданном темпе. По большей части все это инструменты проектирования, обеспечивающие последовательный опыт. Они гарантируют, что игроки находятся в нужном месте в нужное время, и эмоционально обеспечивают набор особых переживаний, которые вы ощущаете как свои личные, хотя от раза к разу они не меняются. В этих пределах Кардифф способна сыграть на случайности и непредсказуемости общественного физического пространства, синхронизируя реальные события в парке с записанным звуком. В частности, она способна отыгрывать три типа элементов: 1. То, что никогда не изменится. Когда позади вас звучат полицейские сирены, это словно бы сообщает: пока в Манхэттене есть автомобили, на 59-й улице будут выть полицейские сирены. Казалось бы, это не так уж интересно – всего лишь полицейские сирены! – но тот факт, что вы этот звук сочли специфическим и отвечающим месту, глубоко в вас откликается. Вы физически находитесь в этом месте и чувствуете, что звук соотносится с тем опытом, который у вас уже есть. 2. Вещи, которые имеют значение независимо от того, изменяются они или нет. В какой-то момент вы проходите по зоопарку, и рассказчица ссылается на белого медведя. К тому времени, когда я гулял в зоопарке, там уже не было вольера с белым медведем; возможно, этот медведь давно уже умер. Тем не менее это все еще работало – и продолжает работать! Если бы белый медведь все еще был там, это имело бы значение постольку, поскольку совпадало бы с моим личным опытом. Но несмотря на то, что медведя уже не было, его упоминание привносило другой смысл – заставляло задуматься о скоротечности и формировании общественных пространств. В любом случае это заставляло думать, что мне предложен уникальный опыт, как будто прямо для меня предназначенный. 3. То, о чем автор повествования не может знать. Если история игрока в рогалике возникает на пересечении сложных систем, а сюжет Sleep No More вырастает из комбинаторного подхода к авторскому контенту с многочисленными взаимосвязями, работа Кардифф строится на пересечении одной повествовательной нити (от автора) и случайного шума, который неизбежен в общественном месте. Это одновременно более открытая и более ограниченная

Зачем привносить цифровизацию в реальный мир?  201 по сравнению с другими форма повествования. Лично в моих прохождениях Her Long Black Hair уникальные моменты зачастую были малозначимыми – скажем, погодные условия или количество гуляющих по парку людей. Иногда они были более заметными: например, однажды мне пришлось изменить маршрут, потому что рядом с фонтаном, куда мне было нужно идти, проходили киносъемки с участием Киану Ривза. Хотя в монологе Кардифф нет возможности учитывать такие вещи, тщательно продуманная манера повествования обеспечивает тот базис, в рамках которого даже эти мелочи оказываются словно бы преднамеренными, как будто их спланировали специально.

Зачем привносить цифровизацию в реальный мир? Если имеющийся у нас реальный опыт сам по себе интересно монтируется с процедурностью, зачем добавлять сюда еще какие-то программные компоненты? Смешивать виртуальное и материальное – это проблема, с которой возиться и возиться. И тут я не из тех, кто утверждает, что у цифрового мира есть априорные преимущества и привносить технологии в «обычную жизнь» надо только потому, что мы это можем. Переживания, которые мы обсуждали, носят, скажем так, барочный характер. Sleep No More и Then She Fell – масштабные театральные проекты, в которых задействованы особые пространства и десятки актеров, а в результате цены на билеты отнюдь не дешевы. Кроме того, относительное непостоянство иммерсивного театра означает, что если вам не повезет создать нечто столь же успешное, как Sleep No More, через несколько лет ваша работа в основном будет храниться в формате статической документации. Это прискорбно для некоторых авторов, и, что еще хуже, в результате подобные работы мало обсуждаются. Дизайнерские сообщества возникают тогда, когда у людей есть общая платформа для дискуссий. Традиционный театр опирается на сильные местные сообщества; цифровое искусство и игровые сообщества по своей природе более хаотичны, но возможность бесконечно воспроизводить игру означает, что разговоры о ней могут продолжаться во времени и пространстве. Движение к созданию более «автоматизированных» форм погружения в театр – один из способов создать более долговечные работы. Такие работы, как аудиопрогулки Кардифф, не испытывают подобных проблем, но этот проект уникален. Подготовка аудиозаписи потребовала гигантских усилий. Однако, включив в аналогичные проекты хорошо освоенные цифровые элементы, можно добиться очень красивого результата, и при этом барьер для входа в эту новаторскую сферу будет понижен – ав-

202

 Глава 17. Генерация в реальном мире

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

Эксперимент Мое исследование в MIT Media Lab было сосредоточено на том, как можно смешать вышеназванные методы рассказывания историй с тем видом процедурного повествования, который используется в современных цифровых играх. Как можно было бы улучшить аудиопостановку Кардифф, создав некий аналог, обеспечивающий сенсорное восприятие с помощью смартфона? Как за счет элементов интерактивной фантастики предоставить игроку некий опыт, подобный сну – притом бесплатно, в общественном месте, вместо того чтобы нанимать актеров и арендовать помещение особого типа? Как все эти переживания могут обогатить наше взаимодействие с общественными местами? В целом я рассчитывал на создание конкретных интерактивных радиоигр, которые используют датчики смартфонов в качестве средства ввода. Только я сместил фокус с дискретного выбора игроков на эффект более тонкого преобразования истории. На раннем этапе работы мы обсудили короткий спектакль, поставленный в одном из крупнейших художественных музеев. Мы хотели исследовать одну динамическую историю, развивающуюся линейно и реагирующую на обстановку, в которой находится зритель; сюжет был одинаковым независимо от того, в какой части музея вы пребывали, но диалог тонко подстраивался под ваше местонахождение, многократно отсылая вас к произведениям искусства, которые вы видите, и учитывая внутреннюю динамику этого пространства. Еще интереснее этих диалогов, по нашему мнению, была бы фоновая аудиодорожка – подслушанные в зале разговоры: это создавало бы нечто вроде бинауральной звуковой картины Кардифф, которая позволяет подслушать, о чем говорят незнакомые вам люди. Этот фоновый трек мог бы адаптироваться с учетом разных критериев: вы услышите разные истории, находясь в музее в будний день или в выходной, зимой или летом. Некоторые фрагменты записи мы приберегли бы на случай, если на улице идет дождь или в музее ходят толпы народа. Цель состояла не в том, чтобы слушатель сам мог создать (или гарантированно создавал бы) историю из обрывков. Скорее, ему предоставлялся опыт, в котором процедурно сгенерированный авторский контент настолько синхронизирован с физическим пространством, что, как и в случае с аудиопостановкой Кардифф – если она сработала максимально удачно – вы не уверены, что было реальным, а что виртуальным. В принципе это не кажется очень уж отличным от того, что давно уже реализовано в цифровом мире. Что касается самой идеи, такие методы процедурной генерации для изменения потока истории аналогичны

Эксперимент  203 другим описанным в этой книге. И в плане технологии все не ново: язык сценариев, который я построил для прототипирования, похож на современные интерактивные инструменты, основанные на выборе. Однако мы предположили, что создание такого сенсорного интерактивного опыта в физическом пространстве возымеет принципиально иной эффект.

Проектирование для новых платформ: начните с простого Реализация новых интерфейсов обычно требует подхода снизу вверх, а не сверху вниз. Вместо того чтобы определять, каким должен быть конечный опыт, и двигаться в обратном направлении, при создании игр alt control1, как правило, лучше начать с проработки низкоуровневых взаимодействий, чтобы посмотреть, как они функционируют, а затем понемногу создавать более крупные системы и шаблоны взаимодействия. Так вы ухватите то, что по существу составляет основу предлагаемого вами сиюминутного опыта. Несмотря на то что мы рассмотрели свою задачу и на более высоком уровне, начали мы с низкоуровневых экспериментов – пытаясь выяснить, что смогут делать посетители музея и, что важнее, как они умеют использовать технологии.

Что возможно в игре? Многие технологии, которые, вероятно, будут отточены в будущем, на сегодняшний день еще не вполне жизнеспособны. В своей работе я намеренно избегал традиционной экранной дополненной реальности (типа той, что реализована в Pokémon Go) – именно по этой причине. Идея наложения визуального контента в теории интересна; на практике же, пока мы не изобрели очки дополненной реальности (а может, тут и не в очках дело!), неудобство наблюдения за миром через стеклянную пластину противоречило нашей изначальной цели – соединять людей с окружающим миром, а не изолировать их от него. Другой пример. Вначале я планировал использовать аудиотрек, определяемый геолокацией, но эксперименты с использованием датчиков движения телефона меня разубедили. Если телефон находится в кошельке или кармане, ваша ориентация в пространстве вполне однозначна, но если вы крутите головой, не поворачиваясь всем корпусом, то возникают сложности. Экранный прототип дополненной реальности может заставить посетителя, поворачивая голову, перемещать телефон в том же направлении – но, как уже сказано было выше, визуальная дополненная реальность имеет свои недостатки. «Позиционное» аудио представляло проблему, которую лучше решать с помощью дизайнерских решений в духе Джанет Кардифф, а не технических. 1

Alternative physical controls – с альтернативным физическим взаимодействием. – Прим. перев.

204

 Глава 17. Генерация в реальном мире

Во всех этих примерах мы исходим из предположения, что посетители используют свои смартфоны – ведь именно для этого мы предназначали свою затею. Отслеживание движения головы, например, не представляет проблем, если ваши настройки позволяют вам принимать решение о движении компьютерного зрения или если вы можете разместить датчики движения на голове игрока (например, с помощью VR-гарнитуры или устройства дополненной реальности). Однако в нашем случае конструкторские ограничения лишали нас возможности использовать технические решения, которые сработали бы в других ситуациях.

Что технически доступно игрокам? Современный смартфон обладает впечатляющим набором датчиков. И вопрос заключается не столько в том, что мы можем сделать с ними, а в том, что игроки в этом понимают. Например, высотомер iPhone может достаточно хорошо определять расстояние по вертикали, чтобы установить, на какой ступени лестницы вы находитесь. Один прототип, который я построил, работал в парке, пространство которого было исчерчено гигантскими лестницами, – в надежде, что можно будет использовать эти данные для приспособления относительно неинтерактивной истории к скорости движения игрока. На техническом уровне по данным высотомера легко было определить местоположение игрока на этом переплетении лестниц. Поскольку учитывалось одно измерение вместо двух, с ним во многих отношениях было легче работать, чем с GPS или другими видами геолокации. Но в реальности эти данные отличались чрезмерной детализацией. У игроков действительно не было ментальной модели для компьютерной системы, реагирующей на их движения на уровне каждого шага, а не тогда, например, когда они закончат подниматься по определенному набору лестниц. Точно так же высотомер срабатывал с гораздо большей разборчивостью в прототипе, который я построил для многоэтажного здания, сообщая игроку, когда входить или выходить из лифта. Технология работала отлично, но у нас не было соответствующего словаря, который позволил бы в полной мере использовать столь детализированные данные. Такова общая направленность целого ряда моих экспериментов. Работа над прототипом, который затем вырос в Computational Flâneur (он будет описан ниже в этой главе), начиналась с предположения, что скорость передвижения игрока по территории дает интересный вход в систему процедурной генерации, но быстро стало ясно, что у игроков нет четкого стимула для «переключения скорости», значимо влияющего на систему (с чуть более сложной зависимостью, чем «музыка становится громче, когда вы с ходьбы переходите на бег»). В результате я отказался от скорости движения в качестве входного сигнала в этой части эксперимента – несмотря на то что отслеживать ее достаточно легко даже с обычным смартфоном, оснащенным GPS.

Пример: Computational Flâneur  205

Пример: Computational Flâneur Создание ранних прототипов и отработка всяких дизайнерских ходов убедили нас, что следующий шаг должен заключаться не в переходе собственно к повествованию, а, скорее, к разработке чего-то более фактурного – чтобы стало понятно, как процедурное генерирование ощущается в пространстве. В результате появилась генерируемая поэтическая прогулка под названием Computational Flâneur, построенная для Форт-Мейсона в Сан-Франциско. Когда вы бродите по Форт-Мейсону, ваш телефон генерирует стихи в зависимости от того, где вы идете, и читает их вам. Пройдитесь мимо пушек, и вы услышите стихи о войне; пройдитесь по набережной, и вы услышите стихи о море. Важно отметить, что Computational Flâneur не пытается приблизиться к поэтическим вершинам. Он разработан для создания некоей атмосферы созерцания, в которой человек расположен к прекрасному и более охотно воспринимает искусство. С другой стороны, это в чем-то сродни дудлингу2: достаточно интересно для того, чтобы отвлечь вас от спонтанного потока мыслей, но не настолько интересно, чтобы удержать ваше внимание. Какая-то часть вашего сознания воспринимает стихи, но одновременно вы любуетесь картиной, которая открывается перед вами, и фокусируетесь на ней даже сильнее, чем если бы вы были заняты собственными мыслями. Это медитация, сочетающаяся с эстетикой абсурда.

Разработка в реальном мире Цифровая процедурная генерация – великое дело, настолько тугими могут быть петли обратной связи от ПО. От создания прототипа системы до понимания того, работает ли она как вы хотите, в цифровом мире обычно проходит гораздо меньше времени, чем в мире физических объектов. Создание гибридов наподобие Computational Flâneur, объединяющих «цифру» и реальный мир, – задача более сложная. Даже при том, что вы пишете программное обеспечение, без прототипирования и тестирования игры «в реале» не обойтись. Правда, не все аспекты работы игры должны тестировать люди  – иногда с этим благополучно справится автоматика. Стоит потратить время на разработку системы проектирования, при которой можно будет протестировать любую часть системы с минимальным количеством требуемых ресурсов. В отношении Computational Flâneur предстояло проверить следующее: 1. Генератор нейронной сети можно запустить на компьютере без GPS. Для поэтической прогулки была создана серия карт, каждая из которых имела свой набор ключевых слов. Строчки стихов генери2

Дудлинг и зентагл – техники медитативного рисования, позволяющие создавать «картины из подсознания». – Прим. перев.

206

 Глава 17. Генерация в реальном мире

ровались с использованием случайно выбранного ключевого слова в качестве исходного текста. Я произвел эту нарезку, чтобы иметь возможность генерировать выходные данные для конкретного ключевого слова, так что можно было вручную генерировать стихи по требованию для любого заданного фрагмента кода. 2. Игрок направляется куда хочет, и повсюду генератор читает ему стихи. Если я находился не в реальном парке, приложение генерировало бы случайные регионы и действовало бы так, как если бы они были реальными. Это позволяет слушать стихи в контексте: гуляя по парку, я слушал «тематические» стихи, а если бы выехал из Сан-Франциско, игра предложила бы мне что-то совсем другое. 3. Наконец, было важно, чтобы в любой момент времени игра разворачивалась на устройстве под управлением iOS, которое физически может работать в парке. Я мог бы быстрее проверить работу программы в некоей абстрактной обстановке; но оценить, как игра работает в парке, можно было только по приезде туда. Тестирование и прототипирование показывает, что большую часть этой работы можно проводить за пределами парка, что было крайне важно для максимизации объема работы и влияло на количество итераций, которые игра могла пройти перед релизом.

Границы между регионами GPS Конкретный пример проектного решения, которое может быть прототипировано только с участием реального игрока, – способ перехода от одной GPS-области к другой. Как уже было сказано, техническая реализация игры включает ряд геозон. Когда вы находитесь внутри определенной геозоны, вы слышите стихи, относящиеся к ней. Некоторые геозоны являются вложенными или накладываются друг на друга, и выходные данные это учитывают, определяя доминантную зону по ряду критериев. Но каким будет субъективное впечатление игрока при пересечении границы между зонами? Сначала я предположил, что этот вопрос везде будет решаться одинаково, но оказалось, что решение зависит от характера местности. В Форт-Мейсоне на самом деле есть собственно форт. Здесь находится самая большая парковка, и я предположил, что многие игроки запустят приложение именно там. Один из самых простых способов добраться оттуда до центральной части парка – подняться по лестнице, но она довольно большая и не слишком эффектно выглядит; в ранних тестах игры было трудно заставить игрока подняться по ней, что вызывало дополнительные проблемы. Создание отдельной геозоны для лестницы оказалось эффективным способом убедить игрока, что он идет правильным путем и что исследовать подъем тоже интересно.

Пример: Computational Flâneur  207 И наоборот, внутри форта есть масса мест, в которые, по моей задумке, игроку не стоило идти – не то что по наводке приложения, а даже и по своей прихоти. Я хотел создать стихи, которые, например, учитывали бы тот факт, что игрок вышел на набережную; но это должен был быть тонкий переход, а не резкая смена темы. Этого можно было добиться только одним способом: позволить сопредельным областям генерировать свой собственный контент. Последний пример: зеленая зона над фортом соседствует с садом, окруженным стеной. Я не хотел явно направлять игроков в сад, но рассчитывал, что системы обратной связи должны подать игроку сигнал: его ждет чтото новое, если он продолжит путь, а дальше уж его дело, воспользуется он этим или нет. Это было особенно важно постольку, поскольку вход в сад только один, так что игрок должен сознательно выбрать эту зону. В саду предусмотрена особая звуковая схема: в качестве фона для стихов используются уже не голоса играющих детей, а птичий щебет, так что переход совершенно очевиден. Все, что мне нужно было сделать, – немного расширить геозону сада, чтобы игроки прочувствовали смену обстановки еще перед тем, как войти в сад, – и это сработало.

Примечание: нейронные сети Большинство процедурных методов, используемых в играх и произведениях искусства, основанных на генерации, как правило, предусматривает, что автором системы выступает человек, который строит каркас, в рамках которого компьютер будет генерировать контент. Независимо от того, пишете ли вы грамматику в духе Tracery или генератор процедурного уровня, вы обычно пытаетесь найти правильный баланс между содержанием, созданным вручную и автоматически. Computational Flâneur генерирует стихи иначе: алгоритм обучается на большом корпусе существующих текстов (поэзия середины ХХ века) и генерирует текст, который выглядел бы как авторский. Такой подход распространен повсеместно. Даже если вы не имеете представления о цепях Маркова, вам вполне могли встречаться твиттер-боты в виде электронных книг, которые генерируют новые твиты в стиле другого аккаунта через цепь Маркова. На высоком уровне цепь Маркова производит вероятностную выборку из существующего корпуса текста для создания новых текстов. Учитывая входные данные последовательности из двух-трех слов, она говорит вам, какое слово по статистике часто следует за данным. Повторите процедуру генерации с десяток раз, используя предыдущие выходные данные в качестве новых входных – и вы получите предложение, которое статистически напоминает исходный текст. Computational Flâneur использует не цепь Маркова, а скорее символьную нейронную сеть (так называемое глубокое обучение). На верхнем уров-

208

 Глава 17. Генерация в реальном мире

не этот подход не сильно отличается от цепи Маркова. На более низком уровне обучение нейронной сети отличается математически; но с эстетической точки зрения вы можете рассматривать нейронные сети как продвинутые цепи Маркова. Самое главное, что нейронная сеть способна учитывать более широкий контекст. Вы можете дать цепи Маркова больше контекста, изучив более длинные последовательности слов, статистически часто идущих друг за другом; но результат обычно не так интересен. Если спросить цепь Маркова с относительно небольшим набором данных, какое слово, скорее всего, будет следующим в цепочке из пяти-шести слов, то вы получите гораздо меньше вариантов, чем если бы назвали только два-три слова. Кроме того, нейронная сеть оценивает контекст вашего корпуса текстов целостно и придает больший вес самому последнему сгенерированному тексту. Это приводит к созданию текста, который с виду кажется более естественным и не вырождается в простое повторение точных фраз из обучающего набора. Можно, скажем, натренировать char-rnn на корпусе исходного кода C и наблюдать, как он генерирует код, который хоть и является полной чепухой, синтаксически допустим – до той степени, что компилятор C принимает его. Текст, сгенерированный либо через цепь Маркова, либо через нейронную сеть, все-таки почти сразу обнаруживает себя как подделку и довольно быстро начинает повторяться. Этот стиль процедурной генерации не слишком подходит в случае, если вы хотите создать нечто более эффектное, чем «ботоподобный» текст. Собственно, поэтому использование данных алгоритмов чаще всего сводится к созданию твиттер-ботов. В случае с Computational Flâneur мы, впрочем, не интересовались эстетикой так глубоко. Моя цель состояла не в том, чтобы создать образцы подлинной поэзии, а в том, чтобы слова как-то сцеплялись в предложения. Пожалуй, по аналогии с живописью можно было бы сказать, что это полотна, написанные широкими мазками.

Система синхронизации Генератор поэзии на основе нейронной сети напоминает твиттер-боты в том, что действует как «игровой автомат». Это система с варьируемым вознаграждением, которая часто генерирует малоинтересный контент, но неожиданно может выдать на этом фоне что-то исключительное. В Computational Flâneur это обеспечивается двумя путями. 1. Уровень геолокации. Когда в стихотворении внезапно появляются объекты, которые вы видите перед собой, это поистине впечатляет. Одно дело, когда твиттер-бот порадовал вас подходящим анекдотом, и совсем другое, если вы услышали стихи о том, что сейчас у вас перед глазами. Это похоже на волшебство, и все сенсорные исследо-

Пример: Computational Flâneur  209 вания, которые мы проводили, ставили целью увеличить количество «попаданий». 2. Тематический уровень. Структура Computational Flâneur означает, что синхронизация дает нечто большее, чем радость узнавания. Чем-то это сродни гонгу, возвещающему о начале медитации: удивление и восторг прерывают вашу обыкновенную задумчивость и формируют более глубокое отношение к парковым видам и объектам благодаря их упоминанию в стихах.

Каденция Еще один полезный критерий оценки систем процедурной генерации – то, насколько широкий спектр эмоций они порождают. Люди, использующие процедурную генерацию для более традиционного нарративного опыта, обычно помещают сгенерированное содержание в более крупные фреймовые структуры и, таким образом, обеспечивают широкий диапазон возможностей. С другой стороны, твиттер-боты создают бесконечные потоки контента. Существует случайная редкая метадуга бота, как в случае с @horse_ebook, у которого обнаружили твиты за авторством человека; но в целом потребление контента твиттер-ботов означает, что каждый кусок сгенерированного содержимого почти наверняка будет представлять отдельную изолированную единицу (см. также главу 27). В сюжетных играх ожидается, что если пользователи остановились на каком-то этапе, они могут сохранить сессию, выйти из игры и вернуться к ней позже. Мы как создатели должны быть уверены, что любая отдельно взятая сессия воспринимается игроком как целостный, завершенный эпизод, но при этом можем создать большую повествовательную линию, не заботясь о том, растянется ли она на один сеанс или на десять. Это не работает в реальном мире, где ожидается, что «игровая сессия» дает исчерпывающий опыт и не обещает продолжения. Вы, конечно, можете создать опыт, который растянется на несколько посещений одного и того же места, но тот факт, что игроку приходится возвращаться туда вновь и вновь, затрачивая на это физические усилия, заставляет воспринимать каждое посещение как новую игру. Я хотел, чтобы Computational Flâneur побуждал людей заходить в парк, начинать игру из какой-либо точки на карте, перемещаться в любом направлении и тратить на это столько времени, сколько заблагорассудится. В результате один сеанс Computational Flâneur больше напоминал взаимодействие с твиттер-ботом, чем участие в сюжетной игре. То, что я пытался сделать на ранних этапах, – скажем, накладывать фоновую музыку, пытаясь натолкнуть игроков на какие-то выводы или вызвать определенные эмоции, – казалось настолько неуклюжим, что не стоило даже и думать о более серьезных вещах. Например, о возможности проанализировать сте-

210

 Глава 17. Генерация в реальном мире

пень внимательности и интереса игрока и, если он утомился, незаметно подтолкнуть его к завершению прогулки.

Эффект каденции при повторном запуске игры Теоретически «твиттерботоподобная» гибкость игры обеспечивает ей относительную долговечность и воспроизводимость. Если вы раз за разом окунаетесь в творчество твиттер-ботов, то каждый раз отыскиваете нечто новое и удивительное. Аналогичный дизайн моего приложения, по моим прогнозам, повышал вероятность того, что игрок снова придет в парк и насладится очередной порцией стихов. Но ожидания не сбылись. Опыт большинства пользователей Computational Flâneur ограничивался однократным посещением Форт-Мейсона. Для повторного посещения нужна была бы (как я предполагаю) минимизация физических усилий – чтобы в парк можно было вернуться так же легко, как к твиттер-боту – и при этом у игрока должно было быть достаточно оснований. Первая задача была труднодостижимой. Для моих знакомых из Сан-Франциско, которые могли бы оценить подобные развлечения, Форт-Мейсон не представляет особого интереса. Не то чтобы он был совсем от них в стороне, но просто это не то место, куда они направились бы просто так – ради прогулки, а не на какое-то мероприятие. Другая проблема в том, что в Computational Flâneur нет ничего такого, что вознаграждало бы пользователя за повторный визит. Быть может, иначе работала бы версия пьесы, которая поощряет игрока к возвращению – особенно с тех пор, как в Форт-Мейсон стало относительно легко добираться из Сан-Франциско, – но итоговая версия моего проекта ничем не привлекала людей, кроме выдачи новой порции аналогичного контента.

А почему бы не работать просто с «цифрой»? Даже если вы не заинтересованы в разработке «физических опытов», большинство процедурных систем генерации – особенно тех, которые помогают рассказывать истории! – не существует в вакууме. Проблемы объединения цифровых систем процедурной генерации с физическими системами во многом представляют собой крайнее проявление тех проблем, которые цифровая процедурная генерация таит в себе. Мы показали, как добиться того, чтобы странные входы, питающие ваш алгоритм, были понятны игрокам, а не заставляли систему проявлять себя исключительно рандомной, и как управлять другими элементами мира, которые игроки могут воспринимать как входы, но не могут контролировать и даже не полностью осознают. Мы говорили о важности разбиения проектных задач на более мелкие подзадачи, которые могут быть построены и протестированы отдельно друг от друга, более простым способом. Мы даже говорили о способах, с помощью которых можно при отсутствии

А почему бы не работать просто с «цифрой»?  211 цифровых алгоритмических систем, только за счет статических аналоговых средств, создать столь же интересный стиль повествования. Конечно, «цифровой» и «физический» мир не образуют строгую бинарную конструкцию: или/или. Многие из обсужденных нами подходов чаще находят воплощение только в одном из этих миров, хотя в принципе не предназначены исключительно для цифровых работ. Но проектирование процедурных систем генерации, которые используют данные датчиков или другие формы нетрадиционных входов и выходов, может быть намного тоньше, чем работа над приложением Computational Flâneur, созданным для прогулок по обширной территории. Осознав все это, полезно порассуждать о том, как мы можем использовать подобные инструменты, чтобы подарить игрокам восхитительный опыт.

Глава

18

«Грязное» процедурное повествование в We Happy Few Алекс Эпштейн, Compulsion Games

We Happy Few  – симулятор выживания, приключенческая игра, действие которой разворачивается в Англии. 1964 год; Британия проиграла Вторую мировую войну и в течение четырех лет была оккупирована немцами. Теперь все принимают таблетки счастья – «радостин», чтобы забыть обо всех тех ужасах, которые они некогда творили. Но ты, игрок, не подчиняешься. Так что тебе придется бежать. Мир We Happy Few – это небольшой архипелаг, где самые большие острова генерируются процедурно (рис.  18.1). При прохождении игры от лица первого персонажа, Артура, разрушенный Садовый район – два острова, а деревня Хэмлин, где счастье вменяют в обязанность, – еще два острова. (В других прохождениях цифры другие, и в этом фишка игры: что-то важное меняется от прохождения к прохождению, так как персонажи запоминают вещи по-разному.)

Рис. 18.1. Пример сгенерированного острова в We Happy Few

У тебя есть суперсила!  213 Что уж такого сложного в рассказывании историй в процедурной песочнице? На первый взгляд, ничего. Как и в большинстве однопользовательских сюжетных игр, истории трех разных персонажей проходят главные эмоциональные повороты при смене локаций. Железнодорожная станция может быть к северу или к югу от военного лагеря, но мы всегда посылаем вас сначала встретить Олли на вокзале; пока этого не произойдет, в Мемориальный лагерь Победы вы не попадете. Встречи также линейны; они управляются в Unreal с помощью чертежей и триггеров на картах, которые срабатывают в определенном порядке. Тогда что же делает эта глава в книге о процедурной генерации повествования? Встречи и истории персонажей игрока имеют наибольшее значение, когда они являются частью богатого, плотного, захватывающего мира. Мы, конечно, создаем мир и дизайнерскими ухищрениями, и с помощью игровой механики, и за счет разных артефактов (письма, журналы, граффити, вывески и другие «кирпичики» истории) – а также системного диалога (приветствия, насмешки, подслушанные разговоры…). Когда люди и места, которые населяют мир, имеют собственную историю, мир ощущается особенно богатым, плотным и захватывающим. В процедурно сгенерированном мире мы не знаем, какие фрагменты повествования игроки будут испытывать и в каком порядке. Мы не знаем, куда они пойдут и когда. Это отчасти верно и для созданной вручную песочницы. Мы можем предположить, что игроки сначала дотянутся до ближайших вещей, но на самом деле мы понятия не имеем, что они предпримут (кроме взлома игры, будь у них такая возможность). Конечно, мы можем попытаться заставить каждую историю в мире разворачиваться линейно, используя все эти надоедливые карты и чертежи… Но это до невозможности нас ограничит и потребует гигантской работы. А главное, мир тогда не будет казаться реальным. В жизни мы обычно знакомимся с теми или иными историями в любом порядке кроме хронологического. Какие-то детали перемешаны, а некоторые вообще отсутствуют. Информация, которую мы получаем, может быть противоречивой или абсолютно неверной. Чтобы выяснить, что произошло на самом деле, мы должны уметь интерпретировать.

У тебя есть суперсила! К счастью, люди нашли выход – они строят домыслы даже на основе ложной информации. Многие когнитивные ошибки объясняются лишь тем, что наш мозг настроен на выстраивание всевозможных историй по поводу всего, что попадается нам на глаза – даже если эти вещи совсем друг с другом не связаны. Скажем, когнитивная ошибка игрока, который несколько

214

 Глава 18. «Грязное» процедурное повествование в We Happy Few

раз выиграл, заключается в том, что и следующий бросок костей принесет удачу. Другой вариант: тот, кто неоднократно проиграл, заверяет себя, что вот сейчас-то точно выиграет. (См. также «ошибка конъюнкции», «ошибка выжившего», утверждение «ни один истинный шотландец…», post hoc ergo propter hoc – ошибка «после этого – значит, по причине этого» и т. д.) Я верю, что человек по природе своей склонен сочинять истории на основе известных ему фактов, точно так же, как человеческий мозг нацелен на изучение языка. Я бы не удивился, узнав, что в нашем мозге есть эквивалент центра Брока для историй! Мы просто созданы для того, чтобы интерпретировать реальность через истории. И для того, чтобы проявлять какие-то эмоции благодаря историям. Хорошая история вас трогает. Я бы даже сказал, что трудно заставить игрока почувствовать что-то кроме разочарования, уныния и удовлетворения, если игре недостает нарратива. Музыка и живопись тоже рождают глубокий эмоциональный отклик. Для восприятия музыки, похоже, даже отведена особая часть мозга: иногда люди, которые утратили способность говорить из-за повреждения мозга, могут петь песни. Как правило, в играх музыка используется лишь для подчеркивания эмоций и не берет на себя самостоятельную нагрузку в этом смысле; однако игра без истории может положиться на музыку для привнесения эмоциональности. К сожалению, игры не привыкли просить игроков создавать для себя истории. Давайте посмотрим правде в глаза: в наши дни игроков нечасто побуждают задуматься об истории! Им подсовывают хитроумные головоломки, предлагают упражняться в боевом искусстве, а что касается повествования – игроки уже приучились к тому, что каждый бит утаенной информации будет выложен им под нос с подробным комментарием. К счастью, мы можем положиться на суперсилу, которой обладают все люди, создавая истории из разрозненных фактов. Все, что нам понадобится сделать, чтобы наполнить наш мир историями о NPC, – реализовать отдельные фрагменты повествования и рассчитывать на то, что игрок все сопоставит и сложит воедино. Очевидно, что предложенные нами фрагменты должны быть частью одной истории, и нам нужно предоставить достаточное их количество, чтобы в голове игрока оформился полный сюжет, даже если некоторые детали оказались пропущены. Очевидно, что это должны быть хорошие истории. Герой хорошей истории обладает следующими качествами: • он нам небезразличен; • у него имеется некая возможность или цель; • он сталкивается с препятствиями и/или врагом и/или собственными недостатками; • ему есть что терять (существует некая опасность); • он может получить какую-то награду.

Тяни vs толкай  215 Очевидно, история должна преподноситься не в хронологическом порядке, однако ее эмоциональная ценность не разрушается неправильной хронологией. Повествование не должно зависеть от темпа прохождения игры, ожиданий или удивления. Нам нужно натренировывать игроков на созданий историй, чтобы мы им не разжевывали все подряд. И у игроков должно быть достаточно свободы, чтобы изобрести собственную историю.

Интеллектуальная работа создает эмоциональную вовлеченность Мы используем то, что я называю «грязным» повествованием: оно требует интерпретации со стороны игрока. Вы даете ему отдельные зацепки и предлагаете выяснить, к какому сюжету они относятся и как все собрать воедино. «Грязное» повествование – это удобный подход даже в рукотворном игровом мире с принудительной линейной прогрессией. Но в процедурной песочнице это тем более необходимо! Позволяя игроку заполнить пробелы между битами повествования, вы делаете его активным участником, исследователем, а не пассивным потребителем. Парадоксально, но чем больше игрок вынужден размышлять, тем больше он вовлечен в игру эмоционально. Хорошее повествование «грязного» типа обладает теми же качествами, что и любая хорошая история. Отличается оно только тем, что не пытается все разложить по полочкам, чтобы игрок понял, что с кем произошло, где, когда и как. От него намеренно ждут интерпретации.

Тяни vs толкай Вот некоторые элементы «грязного» повествования: a) b) c) d) e)

неявная ложь; ощутимое отсутствие; тайны; противоречия; опорные точки.

Все это тянет за собой рассказ. Будучи сценаристом, я понял, что самый худший способ рассказать зрителю что-либо – изложить все как есть. Чем больше накидываешь информации, тем меньше интереса. Но если у зрителя появились вопросы прежде, чем мы дали на них ответ, это уже свидетельствует о вовлеченности. Как мы использовали эти элементы в We Happy Few?

a. Неявная ложь Бывает ложь очевидная, когда вы понимаете, что так быть не может. Если ложь не вполне очевидна, она, помимо всего прочего, говорит вам что-то

216

 Глава 18. «Грязное» процедурное повествование в We Happy Few

о лжеце. Например, в We Happy Few каждый порядочный гражданин принимает наркотик «радостин» (рис. 18.2) и надевает маску с улыбкой, чтобы изображать счастливца. Веселый телевизионный диктор всегда улыбается, и в новостях сплошной позитив.

Рис. 18.2. Радостный Джек в We Happy Few

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

b. Ощутимое отсутствие В мире We Happy Few нет детей. Это само по себе не странно: в большинстве видеоигр нет детей. Тот факт, что дети могут быть разного роста, затрудняет моделирование, а уж если в игре допустимо убийство ребенка, это вызывает шквал негодования. Но наша задача была сделать так, чтобы отсутствие детей было значимым фактором. В предыстории все дети деревни Хэмлин во время немецкой оккупации были депортированы (рис. 18.3). Так что в деревне взрослые прыгают по лужам. Они играют в игру «Говорит Саймон». Телеведущий призывает вас присоединиться, потому что «кто же это сделает, если не вы?» В сгоревшем Садовом районе есть граффити, на которых у детей замазаны лица. Сумасшедшая женщина бормочет: «что мне делать с этими маленькими туфельками?» Кто-то подложил ложки и тарелки в кроватку

Тяни vs толкай  217 с детскими игрушками… Может быть, эти метафоры недостаточно сильны. «Одна смерть – это трагедия, миллион – это статистика», как сказал Сталин1. Вы быстро находите тайное убежище одного ребенка, Себастьяна Дейнти, родители которого смогли его спрятать, и читаете их душераздирающие письма о том, как он не съел торт ко дню рождения, который они ему оставили.

Рис. 18.3. Изображение детей в We Happy Few

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

c. Тайны Некоторые загадки лучше оставить неразгаданными. 1

Фраза, которую многие ошибочно приписывают Сталину – неточная цитата из романа Э.-М. Ремарка «Черный обелиск». Предполагается, что писатель заимствовал ее (с незначительными изменениями) у К. Тухольского. – Прим. ред.

218

 Глава 18. «Грязное» процедурное повествование в We Happy Few

Наш телеведущий шутит про Туманного Джека. Конечно же, его не существует. Никто не находил на улицах трупы женщин, у которых хирургическим путем изъяты органы. Люди предупреждают друг друга, чтобы никто не выходил из дома по наступлении темноты – иначе бойтесь Туманного Джека! Вы можете найти отчет о допросе в полицейском управлении: ктото услышал донесшуюся из тумана фразу «Боюсь, ваш жизненный путь подошел к концу»). Вы можете найти чемодан с карточками, на которых вытеснено все то же самое. Туманный Джек существует? Кто он и что он? Мы могли бы вам сказать, но что ж тут будет интересного! Помните старое правило создания ужастиков: монстр в тени гораздо страшнее, чем он же на солнечном свету. Монстр в тени – это 10 % спецэффектов плюс 90% того, чего каждый зритель боится больше всего. А где сейчас дети? Живы ли они? И куда девался Себастьян? Все это очень интересно.

d. Противоречия Три истории персонажей, за которых выступает игрок, пересекаются во времени. Каждый из этих трех персонажей появляется в смежных историях. Например, три эпизода с Артуром и Салли включены в прохождение от лица Артура и Салли. Как ни странно, в интерпретации Артура последние два события происходят в лаборатории Салли, а в изложении Салли – на заброшенной детской площадке. По версии Артура, он спрашивает Салли: «Как ты могла?» (рис. 18.4). Она отвечает: «Потому что он мне понравился? Потому что у него чумовая борода? Не знаю. У меня нет объяснений». Прямо скажем, не лучшее оправдание, даже если вы понятия не имеете, о чем речь.

Рис. 18.4. Мужчина в We Happy Few

Тяни vs толкай  219 По версии Салли, она отвечает: «Потому что он взял меня к себе, когда умерла моя мама? Потому что был таким великодушным? Потому что сказал, что любит меня? Не знаю. Некоторые вещи просто случаются, хочешь ты этого или нет» (рис. 18.5). Ну просто какая-то вереница загадок!

Рис. 18.5. Женщина в We Happy Few

В прохождении Артура его возлюбленная Салли очаровательна, но слегка чудаковата, если не сказать токсична. А при взгляде на ситуацию со стороны Салли именно Артур малость не в себе. И где тут истина? Да кто ж ее знает! И как это вообще можно понять? Нельзя одновременно измерить скорость и местоположение объекта. У каждого героя свое представление о происходящем. Это не просто интерпретация или объяснение, не просто разные ответы на всевозможные «почему». Это последовательность фактов, опровергающая историю и факты в изложении другого персонажа. Любой, кто был в отношениях достаточно долго, встречался с такой аргументацией: – Я же сказал тебе [***]! – Ты никогда не говорил мне [***]! В реальной жизни большинство людей в своих собственных глазах выглядит достойно. «Что есть истина?» – вопрошал Пилат. И игроку было бы

220

 Глава 18. «Грязное» процедурное повествование в We Happy Few

крайне странно судить о том, что происходит в игровом мире, ориентируясь на слова NPC. В целях экономии это оправданно: вам ведь нужно получить информацию только один раз. Но это неестественно – а то, что неестественно в художественном произведении, отчуждает. Что ценно в противоречивой информации, если она правильно обработана, – так это то, что она напоминает неявную ложь: игрок не только выясняет то, что ему следует знать, но и узнает что-то личное о героях, у каждого из которых своя версия правды.

e. Опорные точки В реальной жизни люди «сами себе герои». Они не видят свою миссию в том, чтобы вам что-то говорить. Они не предполагают у вас что-то просить и награждать вас за поиски. А вот в видеоигре квесты должны быть каким-то образом оформлены, и особенно интересно это делать при посредстве NPC. Однако игрок может узнать гораздо больше о других персонажах, если NPC будут преследовать свои цели – никакого отношения к нему не имеющие, но случайным образом дающие какие-то наводки. Вот эпизод из игры We Happy Few: вы пытаетесь найти гениального доктора Фарадей, о которой кое-что знают два полицейских (рис.  18.6). С вами они отказываются общаться, но вам удалось подслушать, как один говорит другому: некий Бобби Хикинботэм, который должен был заботиться о докторе Фарадей, чувствует себя настолько виноватым в том, что с ней произошло, что направился в клуб «Реформ», чтобы его «хорошенько отшлепали».

Рис. 18.6. Два полицейских в We Happy Few

Опасности «грязного» повествования  221 Это важная для вас информация, потому что вам нужно будет украсть его ID (квестовый предмет); к тому же это интересная примета игрового мира: оказывается, в этом обществе есть люди, которые испытывают чувство вины – настолько сильное, что сами ищут себе наказания. Насколько далеко мы можем зайти по опорным точкам, зависит от философии и дизайна игры. В столь захватывающей натуралистической игре этот бесцеремонный комментарий, сохраненный в вашем журнале, может быть единственной подсказкой, как добраться до доктора Фарадей. И ваша задача – как-то интерпретировать полученную информацию. Скорее всего, с этого момента вы поставите себе цель найти Бобби Хикинботэма в клубе «Реформ» – наряду с маркером карты этого клуба и галочкой в правом верхнем углу вашего HUD2. Поэтому в данном случае вам не придется глубоко осмыслять то, что вы услышали. Сценарист должен уметь искать компромисс с дизайнерами уровней, чтобы гейм-плей не преподнес чрезмерных сложностей и чтобы игрок, который просто хочет добраться до следующей миссии, не разгадывал головоломки слишком долго. Пять вышеупомянутых особенностей имеют кое-что общее: все они предполагают некое толкование. Мы не говорим игрокам: «Вот почему здесь нет детей!». Мы хотим, чтобы игрок сам заметил их отсутствие и спросил себя, почему это так, прежде чем мы начнем давать подсказки. Мы не говорим: «В этом обществе каждый принимает наркотик, вызывающий ощущение радости, и вот почему». Начинается все с того, что персонажи обвиняют игрока в том, что он не принимает «радостин» – он заинтригован и хочет выяснить, что это вообще за штука. Лучшее время для того, чтобы ответить на вопрос игрока, – это время, когда вопрос уже назрел. Если вы дадите преждевременный ответ или подтолкнете к нему игрока, это его только отпугнет. На самом деле пять вышеприведенных методик не существуют в чистом виде. Между ними нет жестких границ. Весь «грязный» рассказ можно было бы свести к тому, что «что-то должно быть, но этого нет» и «есть что-то такое, чего быть не должно». Список из пяти пунктов предназначен больше для того, чтобы вы задумались: как бросить вызов игрокам, чтобы они выстроили свои собственные истории, восполняя все недосказанное и основываясь на ваших намеках, щедро рассыпанных вокруг (вернее, заложенных в систему процедурной генерации, которая выполнит эту работу). Если игроков это заинтересует, они поневоле втянутся в игру.

Опасности «грязного» повествования Да, «грязное» повествование – дело рискованное. Ведь вы нарушаете правила четкого построения сюжета. Что если люди не поймут ваших намеков? 2

Head-up display, визуальный интерфейс игрока. – Прим. перев.

222

 Глава 18. «Грязное» процедурное повествование в We Happy Few

Ясное повествование «пуленепробиваемо». Если есть персонаж, о котором надо позаботиться, который чем-то занят и кому-то бросает вызов, может что-то выиграть и что-то потерять, вы обычно можете рассказать о нем все по порядку – и кое-кто будет вполне удовлетворен, а может быть, даже придет в восторг! «Грязное» повествование зависит от реализации идеи, от качества сценария: если все хорошо проработано, игра произведет фурор, но стоит в чем-то ошибиться, и результат будет ужасен. Сотрудники, отвечающие за обеспечение качества игры, периодически присылают мне ошибки, связанные со всевозможными противоречиями и умолчаниями в историях NPC. Что если игроки обнаружат такие проколы и обвинят нас в халтуре? Но есть и большой плюс. В процедурно генерируемых мирах «грязное» повествование необходимо для того, чтобы игрок сам совмещал отдельные детали, которые мы прописали, но не контролируем их расположение. В любом случае игры такого рода должны натренировывать игрока так, чтобы он проявлял фантазию и смекалку. У видеоигр немало возможностей, но в реальном мире их бесчисленное множество – мы знаем по меньшей мере миллиарды. В любой натуралистичной игре нам нужно, чтобы игроки заполняли пустоты между информационными сообщениями (рис. 18.7). Если они ожидают, что игра преподнесет им все на блюдечке, такой игровой мир будет выглядеть неубедительно. Используя «грязное» повествование, мы заставляем людей интересоваться окружающим миром и истолковывать услышанное. Они смогут.

Рис. 18.7. Меню инвентаря в We Happy Few

Святой Грааль Возможно ли процедурно сгенерированное повествование как таковое? Это ведь и есть Святой Грааль, не так ли? Игровой нарратив не масшта-

Святой Грааль  223 бируется. Каждый бит должен быть изготовлен вручную. Игрок может испытать игру с 31 возможными концовками или выбрать свое собственное приключение. Но сценарист все равно должен проработать все концовки и создать 31 рассказ, притом довольно нетривиальный. (Поверьте мне на этот счет.) Фракционное повествование, где дружба с дварфом в Железных Холмах оборачивается дуэлью в Ривенделле, может ощущаться открытым, что для игры-песочницы весьма удивительно. Но кто-то все равно должен прописать все сюжетные ходы. Если бы только мы могли процедурно генерировать сами сюжеты! Да, отчасти мы можем (как, например, в Dwarf Fortress). Мы можем создать элемент знаний, который говорит: «[имя героя (выберите из списка)] убил ужасного [тип монстра] по имени [сгенерированное имя монстра]», но это еще не создает эмоционально привлекательный зачин. Разве что некоторые варианты позабавят. Если Дороти благополучно переждет ураган, отсиживаясь в подвале дома, она не попадет в Страну Оз. Но сценарист может создавать элементы истории, которые приобретают разную значимость в случае, когда хронологический порядок может быть нарушен. Например: История 1: 1. Джек изменяет Джилл. 2. Джилл устраивается на работу в другой город. История 2: 1. Джилл устраивается на работу в другой город. 2. Джек изменяет Джилл. Это разные истории, но в обеих есть момент значимого выбора. Мы предполагаем, почему произошло то или иное событие, в зависимости от порядка их следования. Мы даже по-разному решаем вопрос о том, кто такие Джек и Джилл. Процедурный движок может разбросать фрагменты, подобные этим, по игровому миру, и мы можем позволить игрокам наделить историю собственным смыслом, смотря в каком порядке они получили информацию. Всю игру таким образом очень трудно прописать. История, состоящая всего из двух поворотов, может получить две интерпретации. Если поворотов сюжета десять, то либо они должны в каждом случае тесно сцепляться (и тогда существует лишь один способ собрать их в хронологическом порядке), или же при перетасовке всех этих фрагментов кое-какие связи окажутся непонятными. Вы не можете просто выдать игроку многовалентные элементы и ожидать, что, поиграв с ними, он в каждом случае составит из них «Царя Эдипа». Мы не обязательно пытаемся создавать отличные истории неигровых персонажей. Мы пытаемся создать иммерсивную среду. Каждая отдельно

224

 Глава 18. «Грязное» процедурное повествование в We Happy Few

взятая история не должна быть шедевром – она просто должна что-то рассказывать о природе мира. Независимо от того, ушла ли Джилл от Джека, игроки все еще находятся в мире, где ненадежные парни – это проблема. И мы пытаемся сделать так, чтобы повторная игра тоже натолкнула на значимый вывод. Для этого не нужно менять каждый поворот. Сделаем лишь несколько перестановок, которые позволят игроку реконструировать события прошлого с другим набором сюжетных ходов; или пусть даже ходы будут те же самые, но в другом порядке. Самое главное, что мы получаем в итоге, – ощущение недосказанности. Мы никогда не можем быть уверены, что знаем все факты и понимаем, что происходит на самом деле. В игре вы гипотетически можете узнать все, в реальности – нет. Осознание того, что «правильный ответ» невозможно нагуглить, потому что его в принципе не существует, создает у игроков ощущение, что они имеют дело с реальным миром, а не просто балуются с бездушными электронами.

Глава

19

Frostpunk: не только забава Марта Фиджек и Якоб Стокальски, 11 Bit Studios

Надеюсь, вы готовы выйти за рамки дискуссии о том, являются ли игры «просто развлечением». That Dragon Cancer, This War of Mine, Train и вот теперь Frostpunk – всего лишь несколько примеров игр, которые размывают традиционное представление об игре как развлечении. Они фокусируются на темах (и механике), исследующих различные аспекты человеческой натуры, обычно не затрагиваемые в мейнстримных играх. Конечно, развлекательный момент в игре  присутствует. Нет ничего плохого в том, чтобы получить удовольствие от насыщенного интерактивного процесса, разгадывания головоломок  – или просто насытиться яркими впечатлениями. Иногда полезно  расслабляться, снимать стресс, удивляться или наслаждаться. Однако, к счастью, в нашей жизни бывают моменты, когда хочется чего-то более тонкого. Я искренне надеюсь, как человек заинтересованный, что однажды мы достигнем уровня, на котором содержание игры будет важнее, чем описание ее функций и жанровых особенностей на упаковке. Но что на самом деле придает игровому контенту ценность?

Осмысление окружающего мира Через сказки людям открывается целый мир. На самом деле у нас есть врожденная способность увязывать события так, чтобы получилось органичное повествование; это происходит на автомате, хотим мы того или нет. Это позволяет нам осмыслить события и наше место в истории. Это обеспечивает личностный рост и обучение на опыте. Правда, на этом пути возможны когнитивные ошибки, но это уже другая тема (некоторые пугающие примеры описаны в книге Даниэля Канеманса (Daniel Kahnemans) «Думай медленно… решай быстро»1). Проблематично ли черпать личный опыт из различных источников? Стихи, картины, книги, фильмы – все это очень разные по форме вещи. Но все мы используем один и тот же набор когнитивных навыков при со1

Издание на русском языке – АСТ, 2017. – Прим. перев.

226

 Глава 19. Frostpunk: не только забава

прикосновении с искусством. Наш мозг всегда пытается найти смысл и связное повествование в воспринимаемых явлениях, и больше всего нас трогают истории, которые касаются общечеловеческих ценностей. Есть много моделей повествования – от классической («Герой с тысячью лиц» Джозефа Кэмпбелла (Joseph Campbell)) до более современных, таких как «Через леса» Джона Йорка (John Yorke) или «История на миллион долларов» Роберта Макки (Robert McKee). На Западе, как правило, принято во главу угла ставить конфликт и универсальные для человеческого общества ценности. Так построены самые разные произведения, от «Ромео и Джульетты» до «Властелина Колец». Думаете, игры сильно отличаются? Попробуйте подумать снова. Структура игр циклична, в противовес линейному повествованию: если в литературе и кино важны последовательность эпизодов и сюжетные повороты, игру можно пройти заново. В играх есть малые циклы (действие – отклик), краткосрочный тактический цикл достижения цели, долгосрочный стратегический цикл – и даже более того, социальный или эмоциональный цикл обратной связи и культурно-смысловой цикл2. Но независимо от того, мыслим ли мы в терминах сюжета или циклических структур, содержание может касаться того, что придает такую мощь классическим сюжетам: общечеловеческих ценностей. На самом деле в играх это частое явление. Герой, за которого вы играете, часто сталкивается с выбором: жизнь или смерть. Победа или поражение. Успех или неудача. Сегодня эти особые, порой экстремальные ситуации чрезвычайно широко используются в играх. В этом нет ничего плохого, так же как нет ничего плохого в том, чтобы запоем смотреть блокбастеры. Но если мы рассчитываем на какое-то развитие игр как вида искусства, мы можем и должны двигаться дальше. Возьмем для примера This War of Mine. В то время как основные циклы построены на теме выживания в условиях ограниченных ресурсов (имеющихся или отсутствующих), а долгосрочная стратегия касается вопроса жизни и смерти, есть и частные ситуации, затрагивающие более тонкие вопросы. Вам нужно вылечить вашего пострадавшего товарища – украдете ли вы лекарство у пожилой пары, обрекая обоих на верную смерть? Таких ситуаций, где эгоистическое начало борется с альтруистическим, масса – и четкого ответа, как правильно, вы не получаете. Давайте посмотрим, как мы пытались использовать во Frostpunk менее очевидные ценности и конфликты с целью эмоционального воздействия на игроков.

Разработка Frostpunk Теоретизировать можно сколько угодно, но в конце концов для подтверждения всего вышесказанного нам пришлось сделать игру Frostpunk. 2

См. превосходную книгу Майкла Селлерса (Michael Sellers) Advanced Game Design: A Systems Approach, рассказывающую о системном подходе к когерентной таксономии игровой структуры.

Прототип 1: общество  227 Frostpunk – это причудливая штука; если быть краткими, описать ее можно как-то так: «симулятор строительства города для выживших людей, показывающий, на что способно общество на пределе своих возможностей». Этот каркас оказался достаточно прочным для того, чтобы начать нанизывать на него многочисленные подробности. С самого начала мы знали, что Frostpunk будет социальной игрой о строительстве города. Но что это, в сущности, значит? Точного ответа у нас не было. Бродили какие-то смутные представления о трудном выборе, людях в непростой ситуации, способности к самопожертвованию и пр.  Мы читали много книг о выживании в экстремальных условиях, смотрели художественные и документальные фильмы – и поэтому понимали, какие эмоции хотим вызвать. Но и только-то. Это вызывало досаду. К счастью, нам было на что опереться! В прошлом мы работали над игрой This War of Mine, и ее гейм-плей игрокам понравился. Они сочувствовали жителям и приняли их историю близко к сердцу, поэтому мы думали, что легко будет вызвать у них те же чувства... Это была ошибка. Мы знали, что игроку придется поднапрячься, делая нелегкий выбор, если мы привнесем эмоции из This War of Mine в градостроительный проект. Этот жанр по определению ориентирован на бесстрастную оптимизацию и рассматривает город как единое целое, с которым можно экспериментировать как угодно3. Как вы догадываетесь, у большинства игроков не возникает никаких моральных терзаний, если предстоит снести бульдозером целый район в Cities: Skylines и проложить на его месте автомагистраль! Но мы-то хотели, чтобы игроки учитывали интересы населения, а иногда, возможно, требовали подчинения; и мы знали, что это будет нелегкая задача.

Прототип 1: общество Мы начали с основ: наша игра – про общество. Отлично! Но что такое, по сути, общество? После изучения спецлитературы и многочисленных обсуждений мы зацепились за фразу Оскара Уайльда о том, что это, вообще говоря, фикция: «Общество существует только как умозрительная концепция; в реальном мире есть только отдельные люди». Это было хорошей отправной точкой. Мы поняли, что не хотим, чтобы общество функционировало как абстрактная система; скорее, мы хотели получить некую «группу индивидуумов». У нас уже были некоторые основные городские здания и агенты искусственного интеллекта, и теперь надо было их как-то обыграть в человеческих терминах. Основываясь на пирамиде потребностей Маслоу, мы разработали систему базовых психологических и защитных потребностей. Каждый агент искусственного интеллекта, относящийся к персонажу, предусматривал ряд 3

Авторы хотели бы отметить, что это весьма воодушевляющее занятие.

228

 Глава 19. Frostpunk: не только забава

потребностей, которые пытался бы удовлетворить этот персонаж (или его разочарование будет расти и менять поведение агента). Например, если персонаж заселяется в дом, его потребность в убежище удовлетворена; если же нет, это его будет все больше выбивать из колеи. Время от времени мы будем проверять систему на «уровни разочарования», по существу опрашивая всех агентов ИИ, достаточно ли разочарованы персонажи из-за нехватки того или иного ресурса, чтобы выразить явный протест. Если достаточно много агентов ответило «ДА», игрок получает всплывающее сообщение: «Ваши люди злятся и хотят расселиться по домам. Что вы предпримете?» Таким образом зародилась основа нашего общества. Механика добычи еды была схожей, только система предлагала новый, более сложный вопрос: «Должны ли мы есть мертвечину?». Если игроки согласятся, у персонажей появится новый источник пищи. Аналогичным образом решался вопрос о детском труде. Время от времени система проверяла, устали ли дети и работают ли они; если да, она применяла возможность производственной аварии. В таком случае игроку надо решить, продолжать ли использовать детей или все-таки запретить детский труд. Если вы играли во Frostpunk, эти вопросы должны быть вам знакомы, но в окончательной версии мы зашли много дальше – а тогда еще даже не изобрели книгу законов. Пока мы довольствовались проработкой мелких вопросов. Это был лишь первый прототип общества, и, приступая к его тестированию, мы возлагали на него большие надежды. Тестирование прошло не очень хорошо, но мы получили некоторое представление о предмете, а также обратную связь. Основных проблем было две: 1. Всплывающие сообщения появляются в момент, когда игрок не совершает никаких действий. Таким образом, игрок воспринимает это как случайность и не может как следует планировать свой следующий шаг. 2. Нет никакого связующего повествования – вопросы выбираются из рандомного набора, без начала, середины или конца, и игрок это чувствует. Важно отметить, что сами вопросы людям нравились, и им было интересно определять судьбу персонажей в столь стесненных обстоятельствах.

Прототип 1: анализ ценностей Мы реализовали в игре все, что характерно для градостроительного жанра: зависимость от ресурсов в цикле, расходы, выгоды и прочее, что позволяло нам строить экономику словно по учебнику, ничего в особенности не изобретая. Конечно, как и весь игровой процесс, это было замешано на системе ценностей – но поначалу эти ценности были довольно шаблонными.

Прототип 2: Пророк  229 Градостроительный симулятор выживания и его гейм-плей Рефлексивный уровень (эмоциональные, культурные циклы)

???

Долгосрочный когнитивный уровень (стратегические циклы)

Вопросы жизни и смерти, победы или поражения

Краткосрочный когнитивный уровень (тактические циклы)

«Иметь или не иметь» (ресурсный/строительный цикл);

Висцеральный уровень (петли обратной связи)

Безопасность или опасность (холод);

жизнь или смерть (основные потребности) «иметь или не иметь» (запасы ресурсов; здания)

Как вы можете видеть, ничего выдающегося. При этом рефлексивный уровень (тот, который мы предполагали заполнить весьма нетривиальным содержанием) пока не проработан. Мы хотели, чтобы уровни общества обеспечивали тематический вес, что выделило бы Frostpunk в ряду аналогичных игр. Но как складывалась ситуация к концу работы над прототипом 1? Социальная основа гейм-плея Рефлексивный уровень (эмоциональные, культурные циклы)

???

Долгосрочный когнитивный уровень (стратегические циклы)

???

Краткосрочный когнитивный уровень (тактические циклы)

???

Висцеральный уровень (петли обратной связи)

Сострадание или эффективность управления

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

Прототип 2: Пророк Получив кое-какой опыт, мы приступили к созданию нового прототипа. Проблему отклика игры на действия игрока отложили на потом и решили сконцентрироваться на отсутствии повествования. Мы не хотели выходить за рамки нашего системного подхода к обществу, поэтому для развития нарратива была введена новая потребность: «смысл жизни». Да, без шуток, это была реальная системная потребность – и, как вы можете ожидать, объяснить ее игрокам было очень сложно. Но не будем забегать вперед.

230

 Глава 19. Frostpunk: не только забава

Во-первых, чтобы игрок лучше понимал вопросы, мы применили новый подход к интерфейсу. Вместо того чтобы всплывать на экране, отрывая игрока от строительства, вопросы станут неотъемлемой частью игрового мира (более или менее). Если определенные условия выполняются, над зданием или персонажем появится некий символ, и игрок может щелкнуть по нему, чтобы увидеть вопрос. Итак, теперь у нас был двухэтапный поток: призыв к действию (CTA), а затем дилемма (вопрос). Если отбросить технические крайности, главная проблема заключалась в том, что игроки не чувствовали настроения общества в целом. Можно было увидеть, насколько угнетен каждый гражданин, но не было простого способа проверить, как поживает все общество. Поэтому мы создали новый элемент  – недовольство. Все очень просто: вычислялся средний уровень разочарования всех граждан с учетом некоторых приоритетов. Мы добавили на экран большую красную полосу, чтобы игроки знали, насколько общество взвинчено. Длинная красная полоса означала, что персонажи очень недовольны, а короткая – что все неплохо. Вооружившись этими новшествами, мы начали выстраивать повествовательные линии, в основном закрученные вокруг новых потребностей и разочарований («смысл жизни», «страх» или «гнев»). Персонажи теряют веру – и появляется новый лидер, который попытается их наставить и повести за собой. Мы назвали его (как и соответствующий эпизод в игре) Пророком. Пророк представляет ряд дилемм, слабо связанных с аспектом градостроения; в основном это независимая тема – серия событий на таймерах, связанных с потребностью «смысл жизни». Игрокам сообщается, что из-за постоянного страха за свою жизнь люди сплотились вокруг таинственного персонажа по имени Пророк. Он пообещал им, что они выживут, если последуют за ним. У игрока есть несколько вариантов решить эту проблему: например, понаставить охранные посты и начать расследование. В случае успеха игроку предоставляется выбор: что сделать с Пророком. Можно казнить его или отпустить восвояси. Итак, мы снова запустили тестирование игры. Участникам было предложено сыграть в игру и заполнить анкету. Таким образом, мы могли узнать, есть ли хоть малейший шанс, что в их голове родится какой-то цельный сюжет. Помните, что в промежутке между главными событиями сценария совершались долгие градостроительные маневры, поэтому мы не были уверены, что игроки четко улавливают сюжетную часть. Реакция была неоднозначной. Мы обнаружили, что игроков увлекает сюжет, но он в их представлении как-то оторван от строительства города. Люди чувствовали себя так, как будто в одной игре объединены две автономные: градостроительный симулятор плюс приключение. Мы решили, что в следующий раз включим в игру более короткие, по сравнению с Пророком, истории, четче связанные с базовыми игровыми циклами.

Прототип 2: Пророк  231 Было и еще одно открытие, которое не состоялось бы, если бы мы не услышали, что тестировщики обсуждают за чашкой кофе. Они задавались вопросом, насколько правильно было избавиться от Пророка. Мнения разделились. Некоторые люди говорили, что в такой тяжелой ситуации иначе поступить нельзя и самое важное – выживание коллектива. Другие утверждали совершенно противоположное: да, конечно, выжить важно, но не ценой утраты человечности; даже в этой ситуации убийство совершенно неприемлемо. Очень интересно было прислушиваться к этим спорам. Мы поняли, что ухватили нечто важное. Таким образом, вдохновившись учением Макиавелли, мы и поставили ключевой вопрос в игре: «Цель оправдывает средства – или все-таки нет?». В переводе на игровой дизайн – как далеко должен зайти игрок, чтобы обеспечить выживание общества, и насколько ему придется поступиться своими моральными принципами? Мы знали, что этот вопрос должен остаться открытым и не следует давать прямой ответ (тем более что даже авторы этой главы не могли сойтись во мнениях).

Прототип 2: анализ ценностей К этому моменту мы установили, что игрокам нравится принимать решения за целый коллектив, что их интересует, оправдывает ли цель средства, и что их привлекают короткие рассказы в рассказе. Однако отклик игры на действия игрока так и не был отработан. Давайте еще раз взглянем на ценностную сторону вещей. Мы разработали градостроительный симулятор выживания наряду с процедурным механизмом повествования. Там было гораздо больше контента, основной гейм-плей был более солидным и обеспечивал более обширные пространства для принятия решений, но что касается ценностей, ничего серьезного не изменилось. Обществу надлежало добывать мясо. Уровни гейм-плея в прототипе 2 Рефлексивный уровень (эмоциональные, культурные циклы)

???

Долгосрочный когнитивный уровень (стратегические циклы)

???

Краткосрочный когнитивный уровень (тактические циклы)

???

Висцеральный уровень (петли обратной связи)

Сострадание или эффективность управления Неэтичный поступок или чистая совесть Внимание к одному или забота о многих

232

 Глава 19. Frostpunk: не только забава

Пока еще не было никакого долгосрочного гейм-плея: все принятие решений было сосредоточено на висцеральном уровне. Но у нас уже было больше контента, доказывающего, что мы можем разрабатывать игры нетривиальной тематики – при условии, что мы относимся к этим темам с уважением и используем подобающие интонации (об этом мы поговорим позже). Мы чувствовали, что можем предоставить хороший контент, но нам все еще не хватало инструментов для создания реального гейм-плея на основе конфликта ценностей. Этот вопрос следовало решить с помощью прототипа 3.

Прототип 3: вовлеченность игрока Теперь у нас была довольно солидная градостроительная игра, которая продолжала развиваться. Чтобы делать некоторые вещи параллельно и не обременять всю команду разом, мы включили в новый прототип некоторые шаги, разработанные вне основной игры. Мы хотели предоставить игрокам больше участия, чтобы они могли решать, какие решения принимать и, главное, когда. Поэтому нужна была новая часть игры, которая позволит принимать решения, на основе которых будет создана книга законов. Но на этом этапе у нас были лишь CTA4, которые появлялись время от времени. Мы начали с того, что разделили проблемы на два вида: • частные, которые так или иначе всплывают в игровом пространстве (как CTA); • глобальные, такие как детский труд или захоронение умерших. Соответствующие решения понадобится закреплять на законодательном уровне. Для чего нужна такая классификация проблем? Мы хотели, чтобы каждый закон не только влиял на основной гейм-плей (новые здания, новые способности, новые варианты занятости и пр.), но и взаимодействовал с частью общества. У нас уже было прописано «недовольство», поэтому мы добавили новую часть, которая называется «согласие с реформами». Если игрок принимает спорное решение, недовольство возрастает; если же решение всех устраивает, недовольство снижается. После подготовки перечня законов, которые мы хотели бы реализовать в первом чтении, мы обнаружили, что в этом нет никакой изюминки. Персонажам игры доступны лишь два состояния: они либо раздосадованы, либо нет. Этого явно недостаточно для отражения более сложных ситуаций. Так что мы приступили к итерациям. Сначала мы создали простой список законов (о детском труде, захоронениях, опилках в еде, самогоноварении и др.) и набор новых параметров 4

Call to action – призывы к действию. – Прим. перев.

Прототип 3: вовлеченность игрока  233 для персонажей (страх, надежда, недовольство). Принятие различных законов приводит к изменению параметров. Если недовольство или страх возрастают до предела или же надежда угасает, игрок проигрывает. Это дало нам больше свободы в оценке «веса» разных законов и, поскольку игрок мог потерпеть неудачу из-за принятия нежеланного закона, включило общество в основной цикл гейм-плея. Мы еще немного поэкспериментировали и обнаружили, что трудно решить, какие вещи оказывают влияние на страх  – особенно потому, что страх мы рассматривали как противоположность надежде. Поэтому мы вообще отбросили страх и начали тестировать двумерную систему «надежда/недовольство». Сначала мы не были уверены, как подойти к агентам на крайних полюсах этой системы. Люди, которые одновременно раздосадованы и полны надежд? Люди без недовольства, но и без надежды тоже?.. Подобные вопросы позволили нам осознать, что мы имеем в виду, говоря о надежде и недовольстве. Это был важный шаг: мы чувствовали, что эти определения должны быть согласованы на протяжении всей игры. Если бы мы не знали на 100 %, что в них вкладывать, не следовало ожидать, что игрок поймет больше нашего. В конце концов мы пришли к выводу, что надежда – это «воля к жизни», или то, насколько агент верит в выживание. В свою очередь недовольство – это в большей или меньшей степени несогласие с действиями игрока. После того как мы с этим определились, агенты с пороговыми значениями стали более четкими. Персонажи с большими надеждами и высоким уровнем недовольства твердо верят, что выживут, но только не с таким лидером. Люди, ни на что не надеющиеся и не выражающие недовольства, удовлетворяют сиюминутные потребности, но не видят цели в выживании, полагая, что грядет катастрофа. Этой концепции мы и придерживались до конца разработки. Мы добавили еще одну механику: при высоком уровне недовольства персонажи начинают терять надежду – но это не основная, очень тонкая зависимость. Так что надежда и недовольство проявляются относительно автономно. На тот момент у нас уже были в наличии законы и некоторые основы системы; но законы были просто большим набором всякой всячины, из которой можно было выбирать – без намека на какую-либо структуру или прогрессию. Трудно было сказать, ведешь ли ты свой народ в нужном направлении. Поэтому мы начали строить второй прототип свода законов. На этот раз больше сосредоточились на потоке и принятии законов, чем на системах, которые под это подложены. Честно говоря, здесь пришлось заново изобретать велосипед – мы испробовали некоторые странные интерфейсы и потоки, рекомендуемые в литературе, в том числе большую динамическую систему взаимодействий, но в конечном счете отказались от них в угоду более простой структуре, подобной стандартному дереву технологий. В ней не было ничего особенного – просто древовидная струк-

234

 Глава 19. Frostpunk: не только забава

тура с «замороженными» ветками (поэтому вы не могли принять все законы сразу) и правилом: каждый введенный закон действует постоянно5. Эти развивающиеся от раза к разу прототипы научили нас, что нам нужна была «шкала надежды» под «шкалой недовольства» и новая древовидная структура – «Книга законов». Проработав дизайн, мы готовы были снова тестировать игру. Опять же всех сотрудников компании усадили за прототип, провели опрос, отослали его на обработку, подождали немного… И вот врата обратной связи снова открылись. Игрокам понравилось! Они чувствовали, что игра откликается на их действия, и начали думать о следующих своих шагах по управлению обществом. Теперь они знали, что нужно персонажам, и занимались соответствующим планированием, управляя недовольством и надеждой. Конечно, были вещи, которые игроков не очень порадовали, например взаимосвязь законов. Для нас это было странно. Мы-то понимали, что от закона к закону надо идти поступательно, что игроки должны знать, что они строят, – но мы не догадывались, важно ли это для них. Итак, мы проработали этот момент и, учитывая ключевой вопрос (оправдывает ли цель средства?), кое-что нашли для себя. Просматривая некоторые книги по социологии, мы наткнулись на историю о лягушке в кипятке, и для нашего случая она подходила идеально! «Лягушка в кипятке»  – это метафора об опасностях постепенных изменений. Если вы возьмете лягушку и поместите ее в кипящую воду, она ошпарится и тут же выпрыгнет, чтобы спастись; однако если вы поместите лягушку в холодную воду и постепенно будете подливать горячую, лягушка не почувствует угрозы, и в итоге у вас получится отличный лягушачий супчик. С биологической точки зрения это неверно: лягушка сбежит в обоих случаях; но метафора отражает риски радикальных политических и социальных изменений, которые иногда предпринимают сильные мира сего. Вы никогда не задумывались, как рождается тоталитарное государство? Для этого нужно несколько условий, и тактика «медленной варки» – одно из них. Вы не можете проснуться утром и издать указ о том, что всех, кто любит пиццу с ананасом, надо бросить в тюрьму; но подобные абсурдные вещи неоднократно случались в мировой истории! Просто гайки закручивались раз за разом, с каждым законом, чуть больше ограничивающим граждан. Вы идете все дальше и дальше, и вот уже новый закон не кажется таким нелепым, как было бы раньше. Это просто логическое продолжение уже принятых законов. Вот почему так важно смотреть на наши правительства, когда они проводят незначительные реформы, которые не очень явным образом вторгаются в нашу зону комфорта. В конце концов это может обернуться глобальными изменениями, и тогда уже поздно будет спорить. Эта концепция 5

Еще в первой итерации прототипа «Книги законов» мы сделали так, чтобы единожды введенный закон действовал непрерывно; это сохранилось и в финальной версии.

Прототип 3: вовлеченность игрока  235 прекрасно вписывалась в нашу игру. Мы соответствующим образом настроили систему законов – особенно вторую их группу, так называемые «законы цели». Мы хотели, чтобы каждый шаг был немного смелее, чем предыдущий. Если игрок не остановится вовремя и не подумает о том, что он делает, он может обнаружить, что оказался в отчаянном положении, равно как и те, кем он управляет. Персонажи игры взбунтуются, если игрок начнет с казни заключенных; а вот если он отважился на это после многих диктаторских выходок, это уже совсем другая история… Нам также нужно было решить, какие законы ввести в игру. У нас был первоначальный список из первых прототипов, но этого было недостаточно, чтобы заполнить деревья (первоначально три; затем они слились в два). Мы провели обширные исследования, чтобы восполнить пробелы и обогатить нарратив новыми деталями. Окончательный набор законов относительно самодостаточен, но, безусловно, не является полным. Это далеко не все возможные решения в ситуациях, представленных в игре; однако мы установили, что такой ряд законов дает игрокам достаточно большой простор для выбора – и вместе с тем не является избыточным для той истории, которую мы хотим рассказать. На этот момент у нас были в наличии ключевой вопрос о целях, оправдывающих средства, концепция «лягушки в кипятке», новая система игрового взаимодействия и представление о том, что игрокам интересны короткие истории.

Прототип 3: анализ ценностей «Книга законов» позволила нам, наконец, загнать многие решения в краткосрочные и долгосрочные стратегические циклы. Игроки уже были способны выработать стратегию вокруг решений, но их последствия были не только экономическими по своей природе; они затрагивали гораздо более тонкие и менее очевидные человеческие ценности. Это то, чего мы все время и добивались. Уровни гейм-плея в прототипе 3 Рефлексивный уровень (эмоциональные, культурные циклы)

???

Долгосрочный когнитивный уровень (стратегические циклы)

Неэтичный поступок или чистая совесть

Краткосрочный когнитивный уровень (тактические циклы)

Принуждение или баланс

Висцеральный уровень (петли обратной связи)

Сострадание или эффективность управления Внимание к одному или забота о многих

236

 Глава 19. Frostpunk: не только забава

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

Выход на финишную прямую В конце концов у нас появился прочный фундамент, но мы начали понимать, что важно показать нашим людям и постоянные изменения. Мы хотели, чтобы игроки оценили последствия принятых ими законов и спросили себя: такое ли общество они хотели создать – и можно ли в нем жить достойно. Итак, принятию каждого закона мы сопоставили определенные последствия. У нас была четкая система для создания персональных историй, для чего использовались и CTA, и незначительные дилеммы. Основываясь на этом, мы создали короткие повествовательные линии, показывающие, как разные законы влияют на жизнь людей. В особенности мы хотели показать, что некоторые законы хороши для выживания группы, но сильно ущемляют личность. Например, радикальные методы лечения повысят шансы группы на выживание, но кого-то могут оставить инвалидом на всю жизнь. Как всегда, новый контент вызывает и новую проблему: стиль подачи. Легко было бы изобразить самые мрачные, жестокие и абсурдные последствия принятия каждого закона. Но зачем? В каких целях? Мы не хотели вгонять игрока в тоску только ради того, чтобы он осознал всю мрачность своего положения. Мы хотели поговорить о сложности выбора в сложные времена. Поэтому попытались зайти с другой стороны, обозначив едва заметные, тонкие последствия. Большинство из них лишь слегка удручало, да и то лишь того, кто это придумал. В общем, мы сами оказались перед довольно неприятным выбором. У нас был целый ряд вариантов в широком диапазоне. На одном полюсе – тоска, мрак и чернуха, и каждый раз, когда в игре всплывало нечто подобное, шаткий баланс нарушался: ведь на другом полюсе у нас были последствия настолько тонкие, что не все игроки их видели. Мы решили, что главное – найти в этом диапазоне золотую середину. Хотелось бы вам сказать, что мы прибегли к сложным математическим расчетам и тут же подыскали оптимальный вариант, но это будет откро-

Выход на финишную прямую  237 венная ложь! Мы использовали метод грубого приближения. Мы переписывали, переписывали и снова переписывали версии и наконец через несколько недель нашли то, что всех нас устроило. Наконец мы почувствовали, что последствия достаточно важны и при этом не отдают ни трагедией, ни комедией. Итак, мы сладили и с механикой, и с контентом. Но в начале этой главы речь шла о сострадании к отдельным персонажам в игре This War of Mine. Удалось ли нам добиться подобного эффекта во Frostpunk? Мы не были в этом уверены. Начали интенсивное игровое тестирование, пригласив тестировщиков со стороны… и – увы. Не было у них большого сочувствия к маленьким людям, зато происходило что-то гораздо более интересное, когда они оценивали свое прохождение игры. Ладно, звучит не очень оптимистично, но дослушайте. Игроки не сопереживали персонажам, но по окончании игры начинали анализировать принятые решения. Они сомневались в том, насколько этичен был их выбор, и задавались вопросом: а возможен ли вообще правильный выбор в трудные времена? Эта послеигровая рефлексия была очень интересна для нас, и мы хотели ее усилить. В этих целях мы внесли последние штрихи. Мы не хотели давать ответы – мы хотели спровоцировать вопросы и сделали единственное, что можно было в этой ситуации: показали игрокам все их прохождение и спросили их: ну как? Уровни гейм-плея в финальной версии игры Рефлексивный уровень (эмоциональные, культурные циклы)

Что означает неэтичный поступок?

Долгосрочный когнитивный уровень (стратегические циклы)

Неэтичный поступок или чистая совесть

Краткосрочный когнитивный уровень (тактические циклы)

Принуждение или баланс

Висцеральный уровень (петли обратной связи)

Сострадание vs эффективность управления Внимание к одному или забота о многих

Это доказывало, что, по крайней мере в отношении некоторых игроков, мы наконец вышли на рефлексивный уровень. Мы были очень довольны результатом. По ходу дела стало очевидно, что Frostpunk будет гораздо более «умной» игрой, чем This War of Mine, пробуждая рефлексию, а не только эмоции. Кажется, нам это удалось – во всяком случае, отчасти. Неужели мы преуспели на все сто? Ну конечно, нет! Было много отзывов и мнений, которые подтвердили результаты тестирования. Люди размышляли о том, что они сделали для выживания сообщества, задавали

238

 Глава 19. Frostpunk: не только забава

себе вопросы об этичности принимаемых решений. Был ли их тип правления авторитарным, и означает ли это, что в особых обстоятельствах нельзя обойтись без диктатуры? Вряд ли мы могли бы требовать большего от игры, которая служит «не только развлечением». Но были и те, кто проскочил эту идею. Эти игроки сосредоточились на экономической стороне вопроса и проигнорировали социальные мотивы. Они не замечали интересов населения и рассматривали содержание «Книги законов» и ее последствия исключительно в свете гейм-плея и достижения целей. И это нормально – это означает, что в следующий раз мы можем добиться чего-то лучшего. Игра имела большой успех как в плане продаж, так и в плане оценки критиками; но тот факт, что она не всех должным образом зацепила, показывает, что в играх еще остается место для проработки нетривиальных идей. Правда, мы убедились и в том, что игроки восприимчивы к этим идеям – ведь им понравился опыт, который выходит за пределы простого удовольствия; опыт, который по крайней мере частично нарушает законы жанра и формальные правила. В конечном счете нас как разработчиков это укрепляет во мнении, что полезно делать стоящие игры.

Глава

20

Процедурное повествование в Dungeons & Dragons Стивен Лампкин, Guerrilla Games

Настольные ролевые игры (TTRPG), к числу которых относится Dungeons & Dragons, – это увлекательное дизайнерское пространство. В такой отрасли, как наша, где циклы выпуска продукции регулярно растягиваются лет этак на пять, если речь о высокоуровневом продукте, и даже для менее сложных игр составляют не менее полугода, настольная ролевая игра предлагает создателям возможность быстро повторить свой творческий успех. Более того, наша настолка дает нам возможность проверить на себе и исследовать саму суть творческого процесса. В эпоху Twitch и Critical Role, когда пятое издание Dungeons & Dragons стремительно набирает популярность и все активнее продается, позвольте мне быть первым, кто оповестит вас об этой игре, если вы о ней еще не знаете. В этой главе мы рассмотрим ряд настольных ролевых игр и покажем примеры встраивания процедурной генерации в ваш инструментарий. Наконец, мы обсудим, чему может научить нас опыт создания контента высокопроцедурным методом с высокой степенью импровизации, и поговорим о природе историй игроков, их вовлеченности, а также целях, рисках и успехах процедурной генерации. Если вы никогда раньше не играли в настольную ролевую игру (далее – TTRPG), то, если определять ее очень коротко и упрощенно, это совместный опыт сочинения историй – обычно в духе фэнтези: с эльфами, волшебниками и драконами. Один игрок принимает на себя роль гейм-мастера – ведущего, основного рассказчика (иногда его величают dungeon-мастером, церемониймейстером или как-то иначе – в зависимости от того, какую игру он ведет). Мастер отвечает за создание сюжета, а также берет на себя судейство по правилам игры. Каждый из остальных участников (их может быть от трех до шести) на протяжении всей истории играет за одного персонажа. Как и во всех хороших играх, TTRPG-сессии тем удачнее, чем сильнее игроки вовлечены в процесс. В отличие от видеоигр, где параметры вза-

240

 Глава 20. Процедурное повествование в Dungeons & Dragons

имодействия жестко заданы, единственные ограничения, которые накладываются на игрока в большинстве TTRPG, связаны с фантастическим ландшафтом: «Нет, ты не можешь забраться на дерево – поблизости нет ни одного дерева» или «Ты, конечно, можешь попытаться залезть на дерево, но дракон уже вцепился когтями в твою кольчугу, так что тебе придется попотеть». В сущности, TTRPG – это диалог, где гейм-мастер предоставляет сценарий («Смерив вас холодным взглядом, бармен произносит: “Позор лесным убийцам!”»), который игроки быстро оспаривают в своих ответах: («Я велел музыканту сыграть Free Bird!», «Я выбегаю на улицу – хочу украсть ту дивную лошадь из конюшни!», «А читос у нас есть?»). Столкнувшись с проблемой сочинения истории тремя-шестью игроками с разнонаправленными интересами, гейм-мастера часто могут поддаться искушению «продавить сюжет», заставляя игроков обратить внимание на завязку: «Э-э-э, бармен выходит следом за вами! Он говорит что-то об убийствах в лесу... внезапно темная фигура подкрадывается сзади и наносит удар ножом! “Ты никогда не найдешь моего лесного логова!” – рычит незнакомец и убегает прочь». Участников все это напрягает. Поэтому позвольте мне заверить вас: есть лучший способ вести игру, и он имеет много общего с процедурной генерацией. Если вы хотите более глубоко рассмотреть механизм раскрутки сюжета TTRPG, позвольте мне предположить, что первой остановкой на вашем пути будет игра Dungeon World Адама Кёбеля (Adam Koebel) и Сейджа Латорры (Sage LaTorra). Мало того что правила доступны бесплатно в интернете (загуглите «dungeon world gazetteer»), но они к тому же не потребуют времени на подготовку перед первым сеансом игры. Сюжет разворачивается в популярном мире высокого фэнтези с эльфами/волшебниками/ драконами; правила очень просты. Вы с тремя друзьями можете сесть и начать играть прямо сегодня вечером, если захотите. Dungeon World знакомит гейм-мастеров с несколькими аспектами технологии, отсутствующими в классической Dungeons & Dragons – и для тех из нас, кто увлечен процедурным повествованием, эти аспекты жизненно важны. Отдельно хотелось бы поговорить о действиях, опасностях и неудачах, движущих игру вперед.

Действия Внутриигровые «механические» действия могут выполнять как игроки, так и мастер игры. Когда игрок говорит: «Я осматриваю каньон в поисках засады», это действие из разряда «Изучение окрестностей». Зачастую действия могут иметь неоднозначные последствия, и для них требуется дополнительный ход. Например, игрок говорит: «Я направляю меч в грудь гоблина!», затем бросает кости и, если выпало 12, считается, что он зарубил монстра. Это действие называется «Руби на куски».

Действия  241 Мастер игры тоже может делать ходы – чисто нарративные или нарративные с примесью механики: «Внезапно земля под вами начинает гудеть и колыхаться, вы слышите глухой рев откуда-то снизу…» – так он сообщает о приближающейся угрозе. Или мастер говорит: «Ладно, ты убил гоблина, но ты заметил, как задрожал потолок и как сверху что-то посыпалось? На тебя падают каменные обломки, и ты получаешь повреждение 5-й степени» (это действие «Ущерб» или «Смена местоположения»). Обратите внимание: действия могут быть исключительно нарративными, особенно когда ход делает гейм-мастер, или же привлекать механику игры: бросок кубиков, приближение угрозы и т. д. Действие может быть вызвано в результате: • механического изменения: «Прошло уже достаточно времени, и я перевожу часы ближе к Кабале Некроманта [механическое изменение]... Думаю, тебе пора делать ход!», или • развития сюжета: «Учитывая надвигающуюся угрозу, ветхость помещения и тот факт, что здесь погребен дракон… я думаю, что сейчас на кого-то полетят камни с потолка!». И игроки, и мастера игры имеют заранее составленные списки ходов, которые они могут выбрать, когда это удобно; или когда кажется, что игровой мир вынуждает к этому; или (особенно) в ответ на действия игроков, сделавших неудачный бросок. Мастеру предоставлено больше гибкости в выборе интервала ходов и количества «мягких ходов» (например, предупреждающих знаков) в соотношении с «жесткими» (такими как нанесение повреждений); это позволяет разным мастерам игры развивать свой неповторимый стиль. Мастеру рекомендуется действовать, полностью руководствуясь внутриигровой вселенной, и никогда не проговаривать все вслух. Список доступных гейм-мастеру действий выглядит примерно следующим образом: • используйте монстра или опасную ситуацию, чтобы игроки поменяли свое местоположение; • раскрывайте неприятную правду; • сообщайте о признаках надвигающейся угрозы; • наносите повреждения; • используйте свои ресурсы; • сделайте так, чтобы действия врага обернулись против него самого; • разделите силы противников; • предоставьте персонажу возможность, которая соответствует его классу; • сыграйте на недостатках класса, расы или экипировки;

 Глава 20. Процедурное повествование в Dungeons & Dragons

242

• предложите персонажу какую-либо возможность – в обмен на чтото или безвозмездно; • поставьте кого-нибудь в затруднительное положение; • изложите игрокам свои требования или предупредите о последствиях их действий; предоставьте на выбор несколько вариантов. Что мне нравится в этом списке, так это то, что он предоставляет игровым мастерам каркас, набор заранее прописанных категорий, которые можно использовать для создания напряженности в игре. «Использование ресурсов» может означать самые разные вещи – например, применение специального инструмента, когда вы пытаетесь взломать замок, подняться на скалу или найти путь через лабиринт – но последствия в каждом случае одинаковы. Отмычка ломается, склянка с зельем падает и разбивается о выступ, а факел гаснет и нужен новый. Особенно интересно, что все ходы в списке мастера глубоко нарративны по сути. Это не конкретные события, а повествовательные категории, которые вдохновляют на сочинительство. Как гейм-мастера мы «генерируем» события, которые нам нужны, на лету. Правила игры обычно предусматривают некоторые ограничения: например, «кинжал гоблина» наносит повреждение определенной степени, а вымышленная ситуация часто строится до критической точки, которая требует творческого решения мастера игры. Последний хоть и свободен выбирать из обширных категорий действий, описанных выше, обычно сводит выбор к узкому ряду действий, продиктованных текущей ситуацией. Объем повествовательной информации, доступной мастеру игры, в совокупности с широким диапазоном возможных ходов вдохновляет на принятие небанальных решений.

Опасности Dungeon World предполагает отслеживание моментов, требующих от игроков героических действий, в форме «фронтов» (например, «борьба на два фронта»), каждый из которых подразумевает ряд опасностей. Опасности Dungeon World представляют собой кластеры событийно-механической информации – мощный инструмент, позволяющий мастеру игры строить историю, которая развивается вместе с игроками независимо от того, что повлекут за собой их действия или бездействие. Давайте разберем анатомию опасности. Вот вам высокий уровень: • • • •

Тип. Какого рода эта опасность? Подтип. В чем конкретно заключается опасность? Импульс. Чего в конечном счете хочет от нас опасный субъект? Действие. Как опасный субъект ведет себя по отношению к врагам?

Опасности  243 • Пессимистический прогноз. Во что выльется эта опасность, если ее не предотвратить? • Глобальные последствия. Как опасность, если ее не остановить, изменит состояние игры? Давайте рассмотрим каждый пункт подробнее. Существует пять базовых типов опасности: тайные сообщества, планарные силы, тайные враги, орды и проклятые места. Выбор типа определяет фундаментальную природу опасности и открывает дальнейшие возможности выбора. Каждый тип имеет набор подтипов со своей собственной мотивацией. Например, тайные сообщества могут быть из разряда лжеправедных (мотивация: делать «правильные вещи» любой ценой), воровских (мотивация: добывать нечто ценное путем обмана), сектантских (мотивация: расширять круг последователей) или еще каких-либо. Подтип говорит о том, что представляет собой опасность, а мотивация позволяет понять, каковы цели врага и как он их объясняет. Когда мы говорим: «В наш сонный город внедрились адепты опасного культа…», мы уже знаем, что это значит для игроков. Каждый тип угроз подразумевает ряд возможных ходов. Тайные сообщества могут кого-то захватывать (похищать и т. п.), атаковать в открытую (поодиночке или группой), наблюдать за потенциальным врагом и многое другое. Рассмотрим эти ходы и общие способы взаимодействия с врагом. Скажем, за представителями культа могут повсюду следовать вороны, а кто-то из адептов может нарушить принципиально важное сообщение с городской охраной. Каждая опасность (или совокупность опасностей) предваряется заранее прописанной последовательностью событий  – мрачными предзнаменованиями. Это пяти- или шестиступенчатая последовательность, которая показывает, как развивалась бы ситуация в игровом мире в отсутствие игроков, а также сообщает, что произойдет, если игроки слишком медленно действуют или не смогут вовремя обнаружить важные ключи. Опасный момент может наступить даже быстрее положенного при определенном условии: например, если игроки встретились с городским священником или служители культа пропустили ход «собираем кости в карьере» и перешли к ходу «насылаем кровавый дождь!». Наконец, глобальные последствия фиксируют конечное состояние мира, изменившегося по наступлении опасного события. Если служители мрачного культа добьются своего, в игре восторжествует тирания; мирная деревня порабощена, мертвые занимают место живых. Что меня как гейм-мастера поражает в механике опасностей, так это то, что она почти как класс в языке программирования: предопределенная структура, которую можно заполнить по своему усмотрению  – и, неза-

244

 Глава 20. Процедурное повествование в Dungeons & Dragons

висимо от того, как я ее заполняю, она делает всякие полезные для меня вещи. Если кто-то из игроков совершил неожиданный ход и я прихожу в замешательство, можно взять какую-то опасность и спросить себя: «Как этот враг может поступить в данном случае? Чем он руководствуется и как может повлиять на игроков? Должен ли я запустить серию мрачных предзнаменований? Что еще можно сейчас предпринять?». Все вопросы, возникающие во время игры, по-видимому, естественным образом разрешаются на основании данных, которые генерирует угроза – точно так же, как процедурные алгоритмы выбирают один из готовых блоков контента, чтобы вывести результат в компьютерной игре. Любопытная деталь, на которую мы как разработчики игр можем обратить внимание, анализируя механику угроз и опасностей в игре Dungeon World, – нарративная глубина некоторых действий (особенно это касается описания опасностей и ходов гейм-мастера). «Сообщите о признаках приближающейся угрозы» – это нарративно тонкий ход. Он не предлагает игрокам реагировать немедля, но служит предупреждением о том, что надвигается гроза – либо из-за бездействия игроков, либо потому, что они своими действиями навлекли опасность. Это реальная сила настольной игры, дающей гейм-мастеру творческую свободу: механика распознавания образов позволяет мгновенно оценить имеющиеся возможности, воспользоваться ими и внедрить в богатый повествовательный опыт. Ограничения, порождаемые угрозами, упрощают процесс. Как гейм-мастера мы не должны заранее определять все возможные признаки каждой угрозы, но как разработчики игр мы могли бы создать такой список!

Признаки приближающихся угроз Глава культа Сильвар

Демон Ворилекс

Восставший Мертвец

1. Едкий запах, проявления магии

Запах серы в густом утреннем тумане

Убитый горем вдовец утверждает, что вчера вечером его навещала покойная жена

2. Стая мертвых воронов смотрит на вас с деревьев

Все собаки начинают лаять в час ночи, а затем бегут и прячутся ровно через 13 минут

Охотник готов поклясться, что его стрела пронзила оленя в самое сердце, но самого оленя он не нашел

3. Вы слышите, как будто кто-то царапает ногтем по доске

Появляется грозовая туча, озаренная красным светом изнутри

Трактирщик отказывается идти в подвал, поскольку за стеной слышатся странные звуки – как будто кто-то скребется

4. Все предметы с религиозной символикой в городе раскололись надвое за ночь

Молодой человек, ведущий праведный образ жизни, увидел сон, в котором он подходит к краю пропасти

Женщина, ухаживающая за своим смертельно больным мужем, рассказывает, что он выздоровел

Ошибки, движущие игру вперед  245

Ошибки, движущие игру вперед Хотя в своде правил Dungeon World это напрямую не отражено, игра опирается на концепцию «провала, вызывающего прогресс». То есть если игроки в чем-то терпят неудачу, она должна продвигать историю, а  не останавливать ее (этот прием также освещается в главе 7). Для гейм-мастера это один из основных способов сделать ход: он переходит к нему после того, как кто-то из игроков сходил неудачно либо же после кратковременного успеха столкнулся с неожиданными последствиями. В традиционной Dungeons & Dragons неспособность выбрать запертую дверь попросту означает, что игрок заблокирован в этом конкретном месте и должен найти другой способ выбраться – по крайней мере, если играть по правилам. Если игрок в Dungeon World не смог взломать замок самостоятельно, правила предложат гейм-мастеру более гибкий выбор. Можно показать признаки приближающейся угрозы и сказать: «Вы слышите сзади тяжелое дыхание и глухие шаги людоеда, идущего по коридору». Кроме того что гейм-мастер вступает в игру после неудачи, постигшей одного из игроков, он должен соблюдать еще одно условие: прогрессию ходов. Ходы должны нарастать как снежный ком, начиная с малого и вызывая все больший эффект, пока игроков не накроет как лавиной. Знак приближающейся угрозы  – например, стая ворон, кружащих по небу,  – превращается в «мягкий ход» – прерывание связи с охраной. Затем следует более суровый ход: служители культа начинают следить за игроками, подсылая к ним воронов, устраивают засады. А в конце этой цепочки может появиться сам глава культа Сильвар. Эти два принципа подсказывают нам, когда мы должны ходить и какие действия совершать в первую очередь, а какие потом. Согласно правилам игры, давление на игроков должно нарастать через регулярные промежутки времени – во-первых, становятся серьезнее сами события (контент), а во-вторых, их последствия из набора предопределенных вариантов (механика), что очень напоминает процедурную генерацию в видеоигре. Концепция Dungeon World используется и в ряде других игр, каждая из которых немного по-разному комбинирует элементы. Если вы предпочитаете играть в постапокалиптическую Mad Max Wasteland, полезно будет узнать, что Apocalypse World является прародителем системы PbtA (powered by the apocalypse), которую использует Dungeon World. Blades in the Dark – о том, как банда воров орудует в городе в стиле стимпанк, где обитают призраки прошлого. Эти две игры опираются на ту же категоризацию, что и Dungeon World, позволяя гейм-мастеру творчески подходить к игре и решать все на лету, четко указывая, какие категории событий выдавать игрокам и когда. Stars without Number Кевина Кроуфорда (Kevin Crawford)  – это TTRPG, время действия которой перенесено в далекое будущее. Это мир косми-

246

 Глава 20. Процедурное повествование в Dungeons & Dragons

ческих путешествий, лазерных пистолетов и встреч со всевозможными инопланетянами. Это не только основа создания целой звездной системы (в том числе нескольких планет со своей культурой, технологиями, обитателями и т. д.) методом бросания кубика, – это еще и задел для гейм-мастера, который может «разыгрывать» последовательности событий между игровыми сессиями, меняя и развивая мир космоса. Очень много общего с процедурной генерацией – кубик нужно бросать для того, чтобы привнести в игру элемент случайности. Лично мой выбор из всех игр, подобных Dungeons & Dragons, остановился на West Marches. Это игра в стиле hexcrawl («зачистка карты»), где игроки исследуют открытый мир, обычно нарисованный на листе бумаги в форме шестиугольника. По мере того как игроки переходят от «соты» к «соте», исследуя все места, доступные для приключения, я проверяю вероятность случайной встречи. Игрок может столкнуться с орками на равнинах, злобными растениями в лесу или крокодилами на болоте. Помимо монстров игроку осложняют жизнь странные энергетические бури или огромные стаи ворон, в карканье которых слышатся имена покойников… Готовясь к игре, я обычно наделяю каждую из этих вероятностей своим «весом», затем, когда игроки исследуют карту, бросаю кубики – и, по существу, создаю контент в стиле Dungeons & Dragons (предусматривающий большую долю ручной работы) методами процедурной генерации. Это сочетание процедурного и творческого начала дает более насыщенные варианты, чем я мог бы придумать слету. Механизм распознавания образов, заложенный в нашем мозге, распознает элементы, которые выстраиваются в ряд, и собирает из них нечто убедительное. Что мне нравится в стиле Dungeons & Dragons, так это то, что он оставляет место для открытий – и для гейм-мастера, и для игроков. Когда все мы усаживаемся за стол, никто из нас не знает, что произойдет в сегодняшней игре. У игроков, вероятно, достаточно расплывчатые цели, но правила игры взаимодействуют с генератором процедурного контента таким образом, что выстраивается четкая история. Более того, действия игрока накладываются на заранее проработанные условия игрового мира и мотивы противника, а в итоге образуются повествовательные связи, на которые мы можем положиться, чтобы рассматривать случайный результат на кубиках как естественное событие, которое вершит ход истории, а не как торжество произвола. Рассмотрим недавний пример из моей практики. Игроки исследовали лес, чтобы найти трех ящериц, поклоняющихся идолу. Одна ящерица хвастливо рассказывала, что сделала после того, как выпила из волшебного рога для питья (хвастовство само по себе было случайной деталью!). Игроки пробрались в лес, столкнувшись с четырьмя (случайно выпавшее на кубике число) орками, а затем (тоже в результате броска кубика) попали

Ошибки, движущие игру вперед  247 в ловушку богомола по имени Анкег, размером с грузовик. Оба боя стоили им заклинаний и хитпоинтов, которые трудно восстановить, ресурсов, которые трудно достать. Когда герои, наконец, добрались до леса и были захвачены (очередной случайный результат) вредными растениями, один из игроков небезосновательно предположил, что уж лучше пойти на мировую, чем тратить ресурсы, и вступил в переговоры. К моему удивлению, по правилам Monster Manual (Руководства по монстрам) считается, что все вредные растения говорят на одном языке. Мне сходу пришлось придумать, зачем растения напали на чужаков. Недолго думая я решил, что они просто хотят обеспечить флоре доминирующее положение и поэтому убивают существ из плоти и крови; впрочем, они не сильно разбирались в том, кого именно убивали. После ряда хитрых уловок игроков во время переговоров, а также в результате нескольких бросков кубиков герои договорились о безопасном проходе через лес: игроки кое-чем пожертвуют в обмен на это. Такой удивительный поворот событий стал возможным только благодаря кубикам (растения – лишь один из многочисленных видов монстров), хотя имело место и стечение обстоятельств: стремительно сокращающиеся ресурсы игроков заставили их хитрить и искать нестандартные решения, которые позволят им остаться при своих. Здесь знаний о мире, который я построил, мне оказалось достаточно для творческого шага; после торга растения вынудили игроков убить василиска, которого я предусмотрительно поместил в смежную область. Медленно пробираясь мимо старых полуразрушенных статуй предыдущих путешественников, игроки понемногу осознали, с каким врагом им предстоит иметь дело, решили вырыть яму, заманить туда василиска и убить его, пока он не опомнился. Битва была ожесточенной, один герой встретился взглядом с василиском и окаменел (отличная деталь для будущего приключения!), но в конце дня партия завершилась победой игроков. Правда, они еще не знали, что василиск и был тем самым идолом, которому поклонялись ящерицы… и теперь у меня есть кое-какой задел для продолжения истории. Даже в этом сюжете просматриваются типы фреймворков, которые придают такую ценность процедурной генерации контента. Процедурный контент как в компьютерных, так и в настольных ролевых играх зависит от нашего распознавания образов и способности выстраивать повествование. Самый мощный процедурный контент в компьютерных играх опирается на сюжетообразующие детали: дварф оплакивает свою супругу, на которую напал слон, внезапно испытывает вдохновение и вырезает красивое копье из слоновьего бивня, изобразив женщину-дварфа, плачущую перед слоном: женщина застыла в мольбе, слон выглядит грозно. Подобным же образом самое удачное использование процедурного содержания

248

 Глава 20. Процедурное повествование в Dungeons & Dragons

в настольных играх состоит в том, чтобы ввести элемент случайности в механизм распознавания образов и сочинения историй. Конечно, растения чего-то хотят; они ненавидят что-то, что находится рядом. Конечно, эти волки будут следовать за вами: ведь вы коптили медвежатину после недавнего боя. Самые неожиданные события за игровым столом могут послужить пищей нашему уму, открывая новые возможности в игре и наводя нас на сюжеты, которых мы никогда бы не придумали самостоятельно. К примеру, как только вы применяете заклинание «общаться с животными на их языке», волк внимательно смотрит на вас. И рассказывает печальную историю о том, как женщина, с которой он подружился много лет назад, была убита крысиным королем. Теперь вам вручается ее перстень с печаткой, найденный в развалинах разрушенного храма; волк и его стая будут охранять вас на пути в город, если вы согласитесь отдать ему перстень в конце путешествия. TTRPG дают нам возможность посмотреть на процесс создания контента, его обнаружения, распознавания образов и сортировки всевозможных сюжетных шаблонов в режиме реального времени. Многие TTRPG (Dungeon World, Apocalypse World, Blades in the Dark, Stars without Number и даже некоторые типы Dungeons & Dragons) могут предоставить нам дополнительные инструменты для выстраивания повествовательной структуры, естественным образом подталкивая сюжет и повышая напряжение. Использование этих инструментов может сделать процесс более ясным и помочь нам увидеть, за какие детали ухватываются игроки и гейм-мастер. Я оцениваю процедурное генерирование в настольных играх как сильное, если оно противоречит механике игры, поощряя игроков принимать интересные решения. Также интересно, когда оно вдохновляет на какието спонтанные проявления («Эврика – вот как надо поступить!»), которые подкладывают под событие некую логику, вписывая его в игровой мир и сюжет, вместо того чтобы считать его чистой случайностью, результатом, выпавшим на кубике. Проще всего гарантировать это, когда процедурный контент имеет прочные связи с остальным миром: растения, желающие расправиться с василиском, волки, которых привлек запах медвежатины… Мотивации, инстинкты и цели позволяют персонажам глубже укореняться в игровом мире, а также намеренно выполнять работу по привязке одного контента к другому, создавая сеть связей, чтобы оправдать даже самый незначительный результат броска кубика. Чем больше нарративных связей существует, тем больше игроки и гейм-мастер будут настроены на то, чтобы интерпретировать произвольные результаты и, отталкиваясь от этого толкования, выстраивать дальнейший сюжет. Попробуйте сами! Если вы интересуетесь сочинением рассказов и процедурной генерацией, то, открыв для себя любую TTRPG из тех, что я упо-

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

Часть

IV Персонажи

Тщательно прописанные характеры – ключевой элемент повествования. Мы – люди, и вымышленные персонажи, которые разделяют наши мечты, желания и страхи, вызывают наш интерес к сюжету и в конечном счете укрепляют связи между нами, когда мы вместе идем по таинственной дороге жизни. В поступках, характеристиках и диалогах персонажей умелый автор подчеркнет их индивидуальность, сделает их понятными, позволит им управлять повествованием или даже откроет нам что-то, чего мы не знали о самих себе. Даже частичное процедурное генерирование всего перечисленного для создания правдоподобных или хотя бы запоминающихся персонажей может казаться невыполнимой задачей. К счастью, некоторые из тех, кто взвалил ее на себя, выдержали испытание и готовы поделиться с вами своим опытом, дорогой читатель! В следующих главах мы сосредоточимся на личности персонажей, их речах и поступках – имея в виду, что уроки и методы из других разделов могут быть применены к описаниям героев, их развитию и связанным с ними сюжетным поворотам. На этом пути вам встретятся многочисленные подводные камни, а обычная писательская интуиция в сфере видеоигр не всегда работает. Будут ли персонажи со слишком лаконичными описаниями казаться стереотипными? «Слишком много деталей» – это сколько? Какие архетипы лучше всего работают на практике? Могут ли сгенерированные персонажи выполнять механические функции в игровом мире? В любом случае гейм-дизайнеру следует действовать осторожно и не забывать об опыте игрока.

Глава

21

Сила обаяния сгенерированных персонажей Таня Х. Шорт, Kitfox Games

Индивидуальность как в реальной жизни, так и в алгоритмах сводится к следующему: «что и почему мы делаем». Я бы сказала, что индивидуальность, то, что ее формирует, и ее проявления подразумевают четыре основных компонента: мотивацию, отношения, способности и знания; последние включают в себя рассуждение и поведение (рис. 21.1). РАССУЖ ДЕНИЯ • Воспоминания • Опыт • Понимание • Убеждения

• Потребности, желания • Добродетели, пороки, ценности • Настроения • Стремления • Паттерны, привычки

Мотивация

Знания

Запросы на операции {"$g"t:10}

Отношения

Запросы на операции {"$gt":7} • Друзья • Враги • Незнакомые люди • Предметы • «Я»

Способности • Речь • Лексикон • Навыки • Ограничения

ПОВЕДЕНИЕ Рис. 21.1. Круговая диаграмма рассуждений и поведения

252

 Глава 21. Сила обаяния сгенерированных персонажей

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

Совет 1: определите процесс интерпретации игрока Что первично: мотивация или поведение? Даже если мы думаем, что кто-то сначала размышляет, а потом действует (то есть второе определяется первым), мы можем сказать: «Аррон обычно говорит правду, поэтому он честен» (оценка персонажа) или «Аррон честен, так что обычно он говорит правду» (логическое заключение). Но для вашей игры вам нужно что-то более сильное, чем корреляция; игрок должен понять, чем руководствуется герой. Вполне естественно поощрять игрока использовать первый метод – метод оценки: если игрок заметил, что Аррон говорит правду, то может предположить, что герой честен по натуре. «Пассивное» повествование отдает предпочтение этому подходу, показывая героя, а не рассказывая о нем: мы оцениваем его поступки в соответствии со своим жизненным опытом. Игровой процесс с таким подходом к персонажам обычно встречается в авторских проектах, таких как Uncharted или почти любой роман. Однако в настоящее время в пространстве процедурной генерации предлагается противоположный опыт. Сгенерированные персонажи, как правило, описываются заранее, что ближе к подходу «рассказывай, а потом показывай»: игрок узнает что-то о характере персонажа и сравнивает это описание с его поведением, чтобы сформировать для себя ментальную модель алгоритма, определяющего действия персонажа (как, например, в Crusader Kings II, Black and White или Dwarf Fortress). Вероятно, это связано с тем, что это происходит в системных симуляторах. Привлекательность самого жанра заключается в том, что она подразумевает гейм-плей с изучением этих систем и глубокого их понимания. Поскольку причинность является ключом к пониманию смысла симуляции, сокрытие ее за суждениями о характере или другими нечеткими интерпретациями, вероятно, расстроит игроков. Игрокам нравится выводить причинно-следственные связи, в том числе когда следствие становится очередной причиной, которая создает очередной результат, и т. д.

Совет 1: определите процесс интерпретации игрока  253 В The Shrouded Isle (рис. 21.2), как будет показано ниже, генератор присваивает сельским жителям имена, внешность, пол, семейный статус, одно достоинство и один недостаток. Характеристики героев влияют на их вклад в быт деревни и обусловливают те или иные события.

Рис. 21.2. The Shrouded Isle (2017)

Например, «обличение» (хорошее качество, свойственное Наде – см. правый верхний угол рис. 21.2), скорее всего, означает, что героиня призывает людей исправлять свои недостатки, но в то же время не исключено, что при встрече с другими персонажами Надя будет предъявлять им нелепые претензии. На скриншоте видно, что способность Нади к обличению уже установлена и раскрыта для игрока. Таким образом, игрок может использовать это в своих целях. Зная, что Надя бывает чересчур пристрастной, он может более скептично оценивать ее сообщения и решать, относиться ли к ним всерьез. Если бы эта характеристика в описании Нади была скрыта в событии Shrouded Isle, то при ее попытке кого-то обвинить игроку приходилось бы лишь догадываться: возможно, Надя придирчива; или, возможно, Аррон действительно богохульствует; или и то и другое. Позже, когда истина откроется, это будет урок для игрока. В Moon Hunters мы создали полностью реактивную систему характеристик героя: игра пыталась на основе поведения и выбора игрока наделять персонажа характеристиками («хитрый», «глупый» и т. д.). Поведение игрока использовалось для расчета его возможной мотивации, а затем из этого рождалась личность героя. Возможно, эта ситуация больше устраивала бы игрока, если бы он был в состоянии повлиять на решение системы или хотя бы понять, что именно в его поведении привело к такой оценке. Чтобы использовать советы, которые будут даны ниже, вы должны сначала решить, от чего ваши система и опыт игрока будут зависеть в первую очередь: определяет ли поведение личность или личность – поведение? И как это выглядит для игрока?

254

 Глава 21. Сила обаяния сгенерированных персонажей

Совет 2: поосторожнее с тонкими штрихами Когда речь заходит о внешних проявлениях, есть много эффективных ходов, которые вы можете использовать, чтобы «включить» в сознании игрока определенные стереотипы, предположения и инстинктивные суждения. К примеру, герой склонен обращать внимание на лица и глаза, определенный цвет вызывает у него тревогу и т. д. Связи между мотивацией и поведением (то есть собственно личность) разглядеть трудно, и они основаны скорее на культурных традициях, чем на биологии. Личность составляют «четырехмерные» качества, проявляющие себя с течением времени и подлежащие интерпретации. Заманчиво скрыть некоторые аспекты, влияющие на мотивацию (потребности, желания, добродетели и  пр.), потому что так герой выглядит более естественно. Поведение персонажа и первый диалог с ним приобретают вполне реалистичный оттенок, и игрок обращает внимание прежде всего на то, как герой себя ведет, что позволяет приблизить игровой процесс к авторскому контенту. Но зачем тогда в первую очередь генерировать персонажа, если можно непосредственно генерировать поведение? Для игры без явных оценок и связанного с характером персонажа геймплея, возможно, будет хороша «чистая случайность». В текущем игровом ландшафте игроки справедливо предполагают, что непроявленные черты характера на самом деле отсутствуют. Нет веских оснований ожидать от игровых персонажей психологической глубины. Возможно, вам придется довольно топорно настраивать системы генерации, если вы хотите, чтобы сгенерированное поведение персонажа вообще было замечено – не говоря уж о том, чтобы оно было правильно понято. Это означает, что есть по меньшей мере три аспекта, когда всевозможные умолчания могут вызвать нежелательный эффект в восприятии персонажа.

«Скрытые» системы – это риск Когда я присоединилась к команде Age of Conan: Hyborian Adventures (2008) в качестве дизайнера ИИ, то уже была ярой сторонницей игры (она была выложена в предварительном доступе). Я довольно усердно играла в те первые недели и дошла почти до самого верхнего уровня. Наверное, 40 часов или около того я играла просто для удовольствия. Я посетила дюжину областей, наблюдала за системой квестов, взаимодействовала с тысячами монстров и злых NPC на своем пути к героизму. Во время собеседования я бы не удивилась, если бы мне задали вопросы о поведении ИИ. Тогда я сказала бы, что сценарии в лагерях солдат предлагают весьма интересные моменты: иногда солдаты едят, пьют, спят или болтают друг с другом, и это создает различные тактические ситуации. Однако в первые же дни работы я была ошеломлена, обнаружив, что на самом деле почти у всех NPC есть глубоко смоделированная мотиваци-

Совет 2: поосторожнее с тонкими штрихами  255 онная система, основанная на пирамиде потребностей Маслоу. Даже персонажи, единственная цель которых – заселение зон для «гринда» (массы существ, предусмотренных только для того, чтобы быть убитыми за валюту или очки опыта), сначала попытаются найти безопасное место, а затем, если уровень их голода достаточно высок, – есть, спать (если они устали), общаться и, наконец, самоактуализироваться. Солдаты болтали вовсе не потому, что так им велел программист; это была часть их внутренних, глубоко смоделированных систем. Сложный, выразительный, модульный и совершенно невидимый мир. Мне было дано прекрасное подобие живого, дышащего мира, и я его упустила! Если бы ИИ в Age of Conan был устроен иначе или мотивировал поступки героев (они проголодались, хотят спать и т. д.), возможно, я могла бы обнаружить причинно-следственные связи в их действиях. Но потребности NPC росли незаметно, и основной гейм-плей (сражение, сражение и снова сражение!) не давал бы мне возможности сильно отвлекаться на их проявление, даже если бы оно наблюдалось. Усвоив урок Age of Conan, я понимаю, почему Dwarf Fortress показывает ровно столько, сколько она дает. Это самый безопасный способ убедиться, что ваша работа не пропала даром и действительно влияет на восприятие игрока. В некоторых случаях это может быть перебор, но причину определить легче. Если мы скрываем от игрока какие-то элементы, похоже, стоит каким-либо образом намекнуть, где они. Правители в Civilization, возможно, с годами развивались, но при этом они начали более явно намекать на то, что скрыто. Это возбуждает любопытство и подготавливает игрока к тому радостному моменту, когда тайное становится явным. Полунамек на скрытые свойства позволяет игроку участвовать в обеих сторонах причинно-следственной цепочки, когда оценка личности слегка опережает умение прогнозировать поведение персонажа.

Трудноугадываемые модели поведения – это риск Люди с гипертрофированными свойствами в реальной жизни редки. Если вы воспользуетесь психологическими моделями вроде «Большой пятерки», то увидите, что наиболее распространенные характеристики формулируются так: «довольно уверенный в себе» или «чаще всего расположенный к сотрудничеству» – ну, вы понимаете, все относительно. Из пяти направлений только одно-два демонстрирует уход в крайность – да и то не всегда. Вы можете моделировать свою игру аналогичным образом, так чтобы большинство персонажей обладало «относительными» свойствами. Даже персонажам, которые в чем-то проявляют себя очень ярко (это тоже вполне реалистично!), вы можете поставить ограничения: чтобы они могли демонстрировать свою «крайность» только один раз из пяти. Но и здесь чем тоньше признаки, тем больше они вас подводят. Причина в том же, что и у неявных систем (см. выше): игроки могут вообще не уви-

256

 Глава 21. Сила обаяния сгенерированных персонажей

деть ситуацию, в которой персонаж проявляет себя в полную мощь. А вот если вы сдвинете ограничение персонажей в самовыражении чуть дальше, чем требует реализм, высока вероятность того, что игрокам такие герои запомнятся. В предыдущем примере из The Shrouded Isle мы показали героиню со склонностью к обличениям. Представьте себе, что она ходила бы по игровому миру, большую часть времени никого не пытаясь устыдить... Не стоило бы ожидать, что игроки ее раскусят! Я не работала над дизайном Crusader Kings II, но готова поспорить, что именно по этой причине персонажи Crusader Kings II так откровенно гневаются, вместо того чтобы иногда «малость раздражаться». За счет «экстремальных» типов личности системы действительно легче воспринимаются и более доступны для понимания и обнаружения. Это помогает опереться на архетипы, поскольку они тоже тяготеют к крайностям – мы привыкли к этому даже в традиционном авторском повествовании. Ученики факультета Когтевран во вселенной Гарри Поттера не «в принципе умные» – они самые умные!

Остерегайтесь пассивности и бездействия Последнее замечание по поводу затушеванных качеств: проактивное поведение, как правило, раскрывает личность лучше, чем пассивное поведение, уклонение от действия. Героя, который хочет что-то сделать, проще понять, чем того, который хочет чего-то избежать. Это проблема в отношении некоторых типов персонажей, довольно распространенных в литературных сюжетах: это люди инертные, застенчивые, замкнутые или не склонные конфликтовать. В «классическом» понимании добродетель часто предписывает целомудрие и воздержание, то есть умение быть деликатным. К сожалению, в игровом контексте это наименее привлекательные личности: они кажутся серыми и ничем не интересующимися. Возможно, в King of Dragon Pass лучше всего был прописан трикстер – самый яркий и заметный из персонажей, в то время как остальные в основном действовали взвешенно и благоразумно. В личной переписке Дэвид Данэм (David Dunham) отметил, что почувствовал необходимость в ярких персоналиях и использует подобные архетипы в Six Ages1. Есть способы выделить более пассивные шаблоны персонажей, но в целом чем больше вы настроите свой дизайн на то, чтобы персонажи активно себя проявляли, тем лучше. Например, вместо того чтобы просто воздерживаться от сексуальной активности (игрок мог бы заметить это спустя годы игры!), целомудренный 1

King of Dragon Pass – отличная игра с процедурными персонажами, в которой многие из моих советов не использованы. Дэвид Данэм недвусмысленно дал мне понять, что, по его мнению, едва уловимые нюансы могут быть полезны для создания убедительной истории. И он вправе так считать. Я бы сказала, что нужно тщательно оценивать риски проектирования. Если вас не слишком смущает, что игрок не оценит тонкую работу вашей системы, чего еще вам опасаться?

Совет 3: используйте комическое  257 персонаж может в ужасе отшатнуться от откровенного фото в журнале, пристыдить тех, кто флиртует или отпускает непристойные замечания, а также активно избегать соблазнов. Все это, может быть, немного глупо с виду, зато такую манеру поведения игрок уж точно отметит.

Совет 3: используйте комическое Писатели раз за разом обсуждают, насколько проще написать комическую историю, чем драму. Полагаю, что в случае, когда сюжет генерируется программно, хорошую комедию создать проще, чем хорошую драму. Почему? Для начала предположу, что вы не пытаетесь обмануть игрока, подсунув ему сгенерированную историю как «якобы авторскую», и игрок прекрасно понимает, что персонажи сгенерированы. Попытка провести тест Тьюринга с помощью процедурного повествования напоминает попытку продать роликовые коньки тому, кто мечтает о велосипеде; это пустая трата времени, отнимающая у вас те преимущества, которыми вы могли бы воспользоваться. Машинные генераторы могут снабдить ваше повествование массой интересных деталей, но если вы хотите создать и продать авторскую историю, найдите автора. Если вы иного мнения, просто пропустите этот совет. Итак, независимо от того, является ли это частью вашей маркетинговой стратегии или ядром вашего гейм-плея, игроки понимают, что персонажи управляются системой. Никто не питает иллюзий, что за ними стоят живые существа, будь то даже авторы игры! Игрок, который настроен на активное взаимодействие с ИИ, далек от эмоционального погружения. Чтобы добиться такого же эмоционального восприятия сгенерированных персонажей, как и в случае, когда они прописаны вручную, мы должны обеспечить игрокам внутреннее переживание. В таком случае они признают за персонажами нечто человеческое. Это значит, что между началом игры и началом драмы пройдет много (потенциально десятки) часов. Подозреваю, что Dwarf Fortress никогда не стала бы популярной, если бы основной ее гейм-плей не начинался с относительно грубой задачи – борьбы за выживание – и только потом смещал фокус на личность. Ко времени развития интересной пользовательской истории – при участии героев с ярко выраженной индивидуальностью и при четко сформированном представлении о культуре дварфов – игра длилась уже более 40 часов. В часы игры, предшествующие моменту «грокинга»2, гораздо легче создавать забавные ситуации, чем драматические. Мало того, что результаты зачастую удивительны, но ваши персонажи с их высокой степенью симво2

Грокинг – термин, заимствованный из книги «Чужак в чужой стране» Р. Хайнлайна. В этом романе глагол «грокать» (to grok) в переводе с марсианского означает «понимать интуитивно, схватывать на лету, просекать». – Прим. перев.

258

 Глава 21. Сила обаяния сгенерированных персонажей

лизма дают много поводов для шутки. Ведь очень часто смеются именно над героями и ситуациями, приобретающими символическое значение. Вот зачин типичного анекдота: «в бар заходят (существительное) и (существительное)...»

Совет 4: обеспечьте возможность анализа В идеальном мире игроки понимают все, что происходит, и предвкушают нечто важное. Тем не менее, исследуя интерактивную симуляцию, особенно когда речь идет о реакциях героев, игрок не раз спросит себя: «Подождите, это что сейчас было?!». Если в вашей системе несколько персонажей (предположительно с разными характерами, потребностями и поведением), игроки могут не сфокусироваться на важных деталях в нужное время. Поэтому нелишне предоставить игрокам инструмент, который позволит погрузиться в систему на более глубоком уровне и по размышлении понять, что произошло и почему. Вот несколько таких инструментов: • логи или журналы действий персонажа; • «обратная перемотка», позволяющая воспроизвести события с разными участниками; • фактическое ведение расследования от лица героя игры (игрок задает вопросы персонажам и т. д.). Помимо того что это движет гейм-плей, это еще и углубляет представление о персонажах – так или иначе, вашей игре это пойдет на пользу.

Совет 5: реакции ≥ действия Важно не то, что происходит с вами, а ваше отношение к происходящему. Эпиктет Обычно, прежде чем понять наклонности персонажей, вы наблюдаете за их проактивными действиями и сравниваете с другими персонажами. A  чаще говорит правду, B много лжет – похоже, что A более искренен с вами, чем B. Однако вы сможете быстрее составить представление о характере, если сравните одновременные реакции персонажей на какое-то и ряда вон выходящее событие – скажем, на травму, аварию и т. п. (рис. 21.3). Вы можете даже быстро оценить чувства целой толпы, если они проявляются в едином порыве (рис. 21.4).

Совет 5: реакции ≥ действия  259

Рис. 21.3. The Sims 4: Kids Room Stuff (2016), используется с разрешения Electronic Arts

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

Рис. 21.4. Группа героев, объединенных общим делом, реагирует на статус игрока. Redshirt (2013)

 Глава 21. Сила обаяния сгенерированных персонажей

260

Например, когда кто-то умирает, как отреагирует персонаж, управляемый ИИ? Вот ряд факторов, которые могут на него влиять: a) b) c) d) e)

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

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

Совет 6: изменение – мощное средство Люди (или, по крайней мере, их потребности и желания) обычно меняются на протяжении жизни под влиянием опыта, обучения, несчастий, выпавших на их долю, – или просто в силу естественных причин. Хотя интуитивно мы рассчитываем на то, что человек во всем последователен, в ключевой ситуации он часто действует неожиданно. Перед лицом невзгод (или просто с течением времени) некоторые люди становятся слабее и уязвимее, некоторые – сильнее, а некоторые начинают чудить. Такова жизнь!..3 В игре Darkest Dungeon самые захватывающие, кризисные моменты связаны с приобретением или утратой неких оригинальных качеств, влияющих на поведение персонажа. Дизайнер Тайлер Сигман (Tyler Sigman) подтвердил, что приобретаемые черты характера относительно произвольны; ряд возможных изменений связан с содержанием конкретной миссии. Трансформация увлекательна сама по себе, а кроме того, многое заставляет понять в отношении персонажа; она не требует пояснения мотивации, предполагая, что у игрока и так достаточно данных (состояние 1, триггер, состояние 2), чтобы составить свое представление о происходящем. Становится ли Храбрец Трусом или Несгибаемый  – Воином света, игрок в любом случае сможет как-то объяснить себе смену их амплуа.

Заключение Хотя авторы RTS-игр и стратегий десятилетиями оттачивали характеры персонажей, личность героя как отдельная система гейм-плея – предмет 3

Впрочем, существует по меньшей мере одно исследование, показывающее, что с течением жизни мы склонны приобретать большую уверенность в себе, повышать осознанность и эмоциональную устойчивость; при этом коммуникабельность и открытость к новому опыту снижается с годами: Roberts, Brent & E. Walton, Kate & Viechtbauer, Wolfgang. (2006). Patterns of Mean-Level Change in Personality Traits Across the Life Course: A Meta-Analysis of Longitudinal Studies.

Заключение  261 относительно новый, малоизученный. В этой области не проводилась долгая и подробная проработка деталей или генерация текста. Чтобы ваши персонажи оказывали наибольшее влияние на игру и игроков, необходимо помнить о нижеследующем. • Курица или яйцо? У вас должно быть четкое представление о том, определяет ли рассуждение персонажа его мотивацию или наоборот – как с точки зрения системы, так и с точки зрения игрока. • Не скрывайте слишком многое: ясно намекайте на то, что затушевано. • Остерегайтесь «нормальных» личностей: крайности легче заметить и оценить. • Остерегайтесь пассивности: действия легче распознать, чем бездействие. • Используйте комический эффект. В конце концов, ваши агенты ИИ – это не настоящие люди и никогда ими не станут… простите! • Заставьте игрока посмотреть на происходящее через лупу: немного подталкивая его к детективной работе, вы уменьшите хаос. • Реакция имеет высокую ценность: два персонажа + один катализатор = две личности. • Трансформация  – это мощный прием: даже если характеристики или поведение персонажа малопонятны, сильные и четкие изменения могут оказать убедительное воздействие.

Глава

22 Процедурные персонажи в State of Decay 2 Джеффри Кард, Йорген Тжерно, Мэтью Бозарт, Undead Labs

Одна из основных особенностей State of Decay – то, что смерть неотменима. Вы пытаетесь выжить в зомби-апокалипсисе, и каждое ваше решение на вес золота, потому что если персонаж умирает, он исчезает навсегда – вы его больше не увидите… На самом деле – не совсем. Наблюдая за тем, как люди играют в оригинальную игру, мы выяснили, что игроки довольно часто начинают прохождение заново, теряя одного из стартовых персонажей. И с началом новой сессии находили тех, кого потеряли, в добром здравии! Это, конечно, приемлемый способ игры, но когда мы разрабатывали продолжение, то поняли, что хотим усилить впечатление. Мы хотели создать мир, в котором смерть персонажей истинно значима, поскольку игроки никогда не увидят их воскресшими. А это значило, что нужно создать практически бесконечную вереницу героев, чтобы можно было скармливать их игровой мясорубке – одного за другим. В то время как многие герои оригинальной игры казались рандомными, это было обманчивое ощущение. Имена им присваивались случайные, но все характеристики (история жизни, умения, особенности, внешность) прописывались вручную, и каждому персонажу отводился определенный набор этих элементов. На самом деле в игре было всего несколько сотен возможных персонажей. Чтобы перейти от этих нескольких сотен к почти бесконечному ряду, нам нужна была система, которая могла бы генерировать новых героев на лету. Такая система не может быть простой. Помните, что одна из главных ее целей – дать игрокам понять, что персонажи уходят безвозвратно. Таким образом, каждый из них должен представлять собой уникальную личность, к тому же реалистично выписанную. Да, генерируются они произвольно, но не ощущаются таковыми – иначе игрок ими не проникнется и их смерть его не сильно тронет. Почему же процедурный генератор создает

Посредственность  263 персонажей, которые подчас кажутся фальшивыми и неубедительными? Проблемы по большому счету две: посредственность и противоречивость.

Посредственность Если каждый персонаж в игре – это «обычный человек номер пять», разве будет игрока волновать, кто именно помчится навстречу опасности? (См. также главу 1.) Две вышеназванные проблемы кажутся взаимоисключающими. В конце концов, не хотите противоречий – сделайте персонажей более посредственными. Пусть у них будет меньше отличительных черт, которые могли бы друг с другом спорить, – и вы избавитесь от всякой противоречивости, вот только персонажи ваши никому не будут интересны. Добавьте больше отличий, и персонажи сразу станут гораздо привлекательнее – зато в игре порой будут появляться курьезные типы, которым никто не верит. Реальные люди уникальны и в чем-то противоречивы по природе, как и все самые лучшие придуманные герои. Если мы хотим, чтобы наша система создавала персонажей, похожих на творение рук человеческих, нам нужно создать такую, которая сделает их особенными, но без откровенных странностей. Первой проблемой было избежать нивелирования. Мы знали, что, как ни старайся, игрок в конце концов утомится и начнет смотреть на всех наших персонажей остекленевшими глазами. Наша задача состояла не в том, чтобы слепить из каждого героя кинозвезду. Это невозможно. Вместо этого надлежало убедиться, что некоторые персонажи выделяются на общем фоне как кинозвезды – и, когда игроки ним присматривались, оказывалось легко раскрыть тайну их обаяния. И мы разработали систему, позволяющую рассказать эту историю. Все актуальные характеристики персонажа, влияющие на гейм-плей и игровой процесс в целом (здоровье, выносливость, навыки и т. д.), выводились из одного центрального набора характеристик. В то время как статистика в цифрах была довольно-таки пресной, личные качества персонажа несли на себе отпечаток его неповторимой истории и многое могли о нем поведать. Мы установили некоторые правила проявления этих качеств: 1. О качествах героя всегда сообщается от первого лица. В игре нет всеведущего рассказчика, который знает подноготную каждого персонажа. Персонаж описывает сам себя, и только. 2. Большинство характеристик – это не просто эпитеты, а история из прошлого или конкретное мнение о какой-то проблеме. Это дает персонажам повод заявить о себе и возможность произвести впечатление на игрока.

264

 Глава 22. Процедурные персонажи в State of Decay 2

Еще одна задача состояла в том, чтобы структурировать персонажей особым образом. Те их характеристики, которые будут наиболее интересны игрокам на механическом уровне, должны были отсылать к характеристикам, предназначенным для повествовательных целей. Имя персонажа – это первое, что узнает о нем игрок, и в дальнейшем оно находится в центре внимания. Поэтому мы создали систему прозвищ, которые часто звучали необычно и отсылали к тем или иным чертам характера. К примеру, персонаж, который обычно спит на дереве, чтобы избежать зомби, получает прозвище Белка. Увидев это имя впервые, игрок спрашивает себя: «Почему его так зовут?» – и исследует биографию персонажа, чтобы найти ответ. Кроме того, у персонажей имелась определенная специализация и бонусы героя – очень заметные преимущества, на которые игроки обращали внимание и прилагали усилия для их разблокировки. Мы настраивали оба этих фактора так, чтобы привлечь внимание игроков и заставить их задуматься: «Почему у этого персонажа есть такая особенность?» Поиск ответа приведет их к предыстории героев. Мы надеялись, что игрокам нужно будет лишь несколько раз заглянуть в предысторию, чтобы получить общее впечатление, и что все персонажи будут интересными и уникальными – даже те, на которых игроки никогда не удосуживались взглянуть пристальнее.

Противоречия Если персонажи отмечены особенностями, которые никогда не появятся у реальных людей, игроки охладевают к ним и не могут избавиться от чувства недоверия. Хороший автор зачастую создает персонажа, полного противоречий, а затем рассказывает историю, которая все разом проясняет в его отношении. Но мы не могли подготовить уникальную авторскую историю о каждом персонаже, такая роскошь нам была недоступна. Игроки знают, что персонажи в State of Decay 2 генерируются процедурно. Когда они видят персонажей с характеристиками, которые кажутся им взаимоисключающими, они не думают: «Какой интересный персонаж – прямо дождаться не могу, чтобы увидеть, как автор разрешит эти противоречия!» Вместо этого они думают: «Мда-а, генератор случайных персонажей опять напортачил». Итак, в отношении возможных противоречий мы должны были придерживаться более строгих стандартов, чем традиционные рассказчики. Это означало, что нам нужны правила.

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

Противоречия  265 потенциальных вариантов становится все меньше. Мы настроили систему так, чтобы каждый признак мог быть связан с произвольным числом тегов. Тег признака будет снабжен правилами, согласно которым он может появляться у одного и того же персонажа с определенной частотой и соседствовать с определенными тегами. Например, тег «карьера» мог появляться у персонажа только один раз. Как только в игре указывалась специальность (например, пожарный, заправщик, лихенолог1), все остальные характеристики с тегом «карьера» исключались из рассмотрения. Ни один персонаж не может иметь более одной специальности в игре. В реальной жизни, конечно, многие люди овладевают несколькими профессиями. Но для случайно сгенерированного персонажа в постапокалиптическом сюжете две профессии уже избыточны, а сам персонаж не кажется интересным и сложным. Становится похоже, будто это ошибка генератора. Кроме прочего, одни теги могут явно выделять другие для исключения. Например, в какой-то момент тестировщик сообщил, что в игре есть персонаж, который бегает марафоны, но при этом по характеру домосед. Да, в авторском рассказе вы могли бы увязать подобные вещи, но в игре это было неправильно. Поэтому мы создали новую пару тегов: «активный» и «неактивный». Тег «активный» присвоили характеристикам, указывающим на то, что персонаж любит двигаться и заниматься грубым физическим трудом, а «неактивный» – характеристикам, которые намекают на малоподвижный образ жизни. Затем сделали эти метки взаимоисключающими. Таким образом, как только персонаж получал признак с «активным» тегом, все признаки с «неактивным» тегом исключались – и наоборот. Эта система оказалась еще более универсальной и полезной, чем мы предполагали. В какой-то момент, например, дизайнер попросил нас сделать так, чтобы все стартовые персонажи были ограничены низкоуровневыми навыками: пусть у игроков будет достаточно свободы для их улучшения и настройки в начале игры. Все, что нам потребовалось, – создать невидимую характеристику с тегом «новичок» и применить ее ко всем начальным персонажам, а затем создать расширенный тег и применить его ко всем характеристикам, предлагающим продвинутые навыки. Если бы эти два понятия были взаимоисключающими, то ни один из начинающих персонажей никогда не имел бы продвинутых навыков. Это не имело никакого отношения к тому, насколько реалистично смотрятся персонажи (хотя изначально мы создали систему именно с такой целью), но сообщало дополнительные преимущества. Однако присваивать новые теги тысяче различных признаков может быть утомительно. Предвидя это, мы решили структурировать наш список признаков как иерархическое дерево – с разветвляющимися группами и 1

Человек, исследующий лишайники. – Прим. перев.

266

 Глава 22. Процедурные персонажи в State of Decay 2

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

Противоречивый образ Другой тип противоречия, с которым, как мы знали, нужно было обращаться осторожно, был связан с характером. Имя, внешность, пол и голос персонажа должны коррелировать друг с другом так, чтобы в целом формировался реалистичный образ. Опять же, стандарт правдоподобия здесь гораздо более строгий, чем в реальности. Жизненные обстоятельства выводят нас на множество интересных людей, которые бросают вызов ожиданиям и стереотипам, – и мы хотели по возможности представить таких героев. Но если бы каждый персонаж представлял собой гремучую смесь признаков, потому что мы свалили все элементы идентичности в кучу и выдергивали их оттуда наугад, вряд ли получилось бы обрисовать интересные личности! Результат выглядел бы так, как если бы мы ничего не знали о реальных различиях культур или полностью их игнорировали. Наша цель состояла в том, чтобы игроки из самых разных слоев общества, сталкиваясь с теми или иными персонажами, почувствовали бы что-то родное: «о, ну в точности один мой знакомый!». Это было особенно важно для игроков, которые в принципе редко имели подобный опыт. Итак, мы создали систему отсева, в которой имя, внешность, пол и голос сочетаются особым образом, создавая целостную картину, вполне понятную игроку. Мы создали правила оценки вариантов, чтобы большинство персонажей отвечало целому комплексу признаков (к примеру, мужчина с внешностью латиноамериканца и брутальным голосом обильно пересыпает свою речь испанскими словами, у него испанское имя и мексиканское прозвище). В то же время нескольким персонажам позволено было переступать через эти ограничения: к примеру, тот же персонаж может внешне больше напоминать африканца, и у него распространенная английская фамилия. Одно из правил, которое мы разработали в отношении культурного фона, гласило: двигаться надо проторенной дорогой, не допуская особых вольностей.

Противоречия  267 Разработчик, который воспитан в определенной среде, с большой вероятностью будет воспринимать все, что находится за рамками его опыта, как нечто однородное. Это огромная ошибка – и она может существенно смутить игроков, близко знакомых с культурами, которые мы пытаемся изобразить. Например, традиции современной Индии не менее разнообразны, чем в Европе: на территории одной страны сосредоточены самые разные культуры, языки, религии, обычаи именования. И если мы создадим условный «индийский» культурный фон со списками индийских имен, есть шанс, что игрок из Индии сочтет большинство соответствующих персонажей неправдоподобными, так как в них намешано всякой всячины. В итоге мы остановились на одном регионе Индии и решили, что все индийские имена будут взяты оттуда. Мы изучили список наиболее распространенных имен в этом регионе и опросили сведущих людей, чтобы они помогли нам устранить вероятные ошибки и придумать правдоподобные прозвища и уменьшительно-ласкательные имена. Мы всегда действовали крайне осторожно, если возникали хотя бы малейшие сомнения в том, будет ли та или иная деталь казаться уместной. В  итоге некоторые распространенные индийские имена (такие как Патель) в игре не появились, зато это исключает всякие несообразности при генерации персонажей. В силу особенностей нашей эпохи мы продолжаем добавлять в игру новые культурные фоны – конкретизируя, например, наши представления об американских индийцах, а также о любых других культурах. После выпуска игры эти дополнения будут предлагаться в рамках бесплатных обновлений. Было любопытно исследовать различия, которые те или иные культуры привнесли в именование персонажей. В какой-то момент мы даже предоставили наши списки имен на проверку бывшим сотрудникам Microsoft, работавшим над локализацией продуктов, чтобы убедиться, что какие бы то ни было ошибки исключены. Переводчик из Испании прошелся по нашему списку испанских прозвищ и почти все вычеркнул, уверяя, что эти прозвища нелепы. Поначалу мы очень удивились. Это ж надо было так постараться, чтобы все переврать! Затем мы вручили тот же список имен мексиканцу и получили совершенно иной отзыв. Все эти прозвища были абсолютно правдоподобными для мексиканских персонажей. Так мы поняли свою ошибку: мы нашли в интернете прозвища из мексиканских источников и назначили их всем испаноговорящим персонажам! Разумеется, игрок из Испании, с Филиппин или из Доминиканской Республики почувствовал бы фальшь. Нам оставалось перенести эти прозвища в список, относящийся к мексиканским персонажам, и исключить их из общей испаноговорящей группы. К счастью, у нас уже была создана структура, позволяющая сделать это. Она же позволила поддерживать другие уни-

268

 Глава 22. Процедурные персонажи в State of Decay 2

кальные практики именования, которыми поделились с нами представители других культур. Наш лаосский советник рассказал нам о сэй линь – неформальных прозвищах, которые не имеют ничего общего с именем коренного лаосца, но почти все время используются вместо формального имени. Мы включили эти прозвища в отдельный список ников в нашей структуре данных (он уже существовал для ряда других культур). К сожалению, мы не могли включить в список сэй линь имя человека, который нас столь любезно проконсультировал. Его прозвище было Пу (Poo). Бывают случаи, когда имя, вполне распространенное у некоторых народов, выглядит смешно или неприлично при восприятии людьми, принадлежащими к другой культуре, так что лучше его не использовать даже с самыми добрыми намерениями. А вот еще пример: наш консультант из Эфиопии счел неудачным смешение английских и эфиопских имен в нашем списке, пока нам не пришла в голову идея включить библейские имена (такие как Авраам, Исаак (Айзек), Измаил) в список англоязычных. После этого персонажи стали больше напоминать тех, с кем наш эфиопский коллега был близок. Вот как важно, чтобы наши культурные корни гибко сплетались, выводя на поверхность то одно, то другое. К счастью, теперь мы могли реагировать на такого рода обратную связь в считаные минуты, просто используя дополнительный список, вместо того чтобы часами составлять новый, где исконно эфиопские имена перемешаны с английскими, пришедшими к нам из Ветхого завета. Эта схема также позволила использовать список базовых английских имен как дополнение почти в каждой культурной среде. Мы отдавали себе отчет в том, что люди, приехавшие в Америку из разных частей света, как правило, ассимилируются и начинают давать своим детям и внукам стандартные английские имена, так что о происхождении рода напоминает только фамилия. Вскоре после релиза мы получили некоторые отзывы. Рецензенты отметили, что культурное разнообразие в игровой среде просто удивительное. И этот факт в первую очередь подчеркивает одно из великих преимуществ использования процедурной генерации. Разработчик из определенной культурной среды, хочет он того или нет, всегда будет проявлять предвзятость, создавая персонажей вручную. Почти невозможно держать в уме все, что вы уже создали, и все, что вы рассчитываете создать, и при этом избежать крена в какую-либо сторону. Задав некоторые базовые установки, а затем поручив автоматизированной системе следовать им, вы избежите всякой предвзятости – хотя, конечно, всегда остается возможность ввести какой-то неудачный контент. В таком случае система, оставаясь бесстрастной, наивно выложит перед игроком все ваши ошибки.

Последовательность выбора  269

Последовательность выбора В этой главе речь в основном идет о тех удивительных вещах, которые в принципе работают в нашей системе правильно – но в отдельных случаях она сбоит, и вот тут-то приходится ловчить. Вот интересный пример. Персонажи в State of Decay 2 создаются в определенном порядке. Есть решения, которые всегда будут приниматься первыми, другие – следом. Система тегов настроена так, что генератор персонажей может выбирать признаки в любом порядке, и список всегда будет просеиваться соответствующим образом; однако есть гораздо менее гибкие характеристики персонажа, в отношении которых последовательность имеет значение. Например, генератор должен знать возраст, пол и культурный бэкграунд персонажа, прежде чем выбрать голос. В какой-то момент у нас возникла ошибка, и генератор выбирал голос слишком рано – прежде чем был определен возраст; в итоге вчерашний школьник говорил надтреснутым хриплым голосом, а ветеран войны пищал как цыпленок. Нам нужно было сдвинуть выбор голоса в конец цепочки, чтобы это было одним из самых последних решений, которые принимает генератор персонажей. Но это привело к новым проблемам. Одна из сложностей State of Decay 2 связана с тем, что персонажи крайне гибки. В оригинальной игре мы отвели всего один голос радиодиктору, и за долгие годы игры наши игроки так устали от голоса Лили Риттер (Lily Ritter), несмотря на ее блестящее озвучивание, что уже мечтали избавиться от радиодиктора. А деваться было некуда, потому что эта роль очень важна для игры! В дальнейшем мы решили исключить эту роль бессменного и бессмертного радиоведущего из игры и решили, что каждый персонаж должен иметь возможность играть каждую из ролей, предусмотренных в сообществе. Это было очень дорогое решение. В итоге мы получили 14 голосов (в два с лишним раза больше, чем в оригинальной версии игры), каждый из которых озвучивает почти все роли. Теперь, если мы хотели добавить персонажу несколько строк текста, нам нужно было заказать запись 14 актеров. На поздних стадиях разработки стало ясно, что для поддержки наших миссий нам требуется даже больше голосовой связи. Тогда наш главный автор предложил разделить текст и определенную его часть закрепить за определенными актерами. Тогда каждую строку понадобится записывать только три-четыре раза, а не 14, и все-таки мы получим гораздо большее разнообразие голосов. Мы знали, что наша система построена не для этого. Она предполагала чуть ли не бесконечную вариативность и уж по крайней мере не была рассчитана на жесткие ограничения. Но технически она могла быть введена в эксплуатацию только при выполнении данной работы, и мы решили прибегнуть к предложенной схеме. Это был правильный выбор, но за него пришлось заплатить.

270

 Глава 22. Процедурные персонажи в State of Decay 2

Поскольку генератор персонажей учитывает голос в последнюю очередь, это самый худший вариант для жесткого ограничения. Если вы ограничиваете первый или второй выбор генератора, это еще куда ни шло. Генератор построен так, чтобы свободно совершать ранний выбор и начинать отсев при последующем выборе – тогда все работает как надо. Но если вы ограничиваете генератор в последнем выборе, и для него это полнейшая неожиданность, то очень вероятно, что более ранний отсев вариантов сделает этот последний выбор вообще невозможным. К примеру, персонаж может говорить только голосом A, D, R или Q, и в этом списке нет молодого женского голоса. Тогда, если генератор создал персонажа – молодую женщину, то, добравшись до выбора голоса, он «рассуждает» так: «Ну вот, допустимого варианта нет, придется выбрать случайный и надеяться на лучшее». Для большинства персонажей этот запасной вариант будет приемлем – персонаж может показаться немного странным, ну да и ладно. Но если мы создали этого героя специально для того, чтобы он произносил определенную фразу в миссии, и эта фраза записана только в четырех исполнениях, – это катастрофа! Реплика вообще не произносится, и это ошибка. Из-за специфики генерирования мы даже не могли осознать, какое ограничение самое проблемное.

Исправленная последовательность выбора Мы потратили так много времени на поиск конкретных ошибок, отслеживая персонажей с неправильными голосами, что нам захотелось пересмотреть весь подход в целом. Если бы у нас была возможность построить систему с нуля, мы бы внесли в нее два важных изменения. Во-первых, каждую особенность персонажа моделировали бы так же, как его признаки. Всем функциям присвоили бы один и тот же набор тегов и одни и те же правила для их ограничения и исключения. Тот факт, что разные признаки имели разные правила и нуждались в специальном коде, который позволит им соответствующим образом отсеивать друг друга, в конечном счете сжигал ненужное время и добавлял ненужную сложность. Когда мы хотели создать особенности, характерные для старых или молодых персонажей (например, «артрит» или «первокурсник»), мы не могли просто включить тег «старый» или «молодой» и остановиться на этом. Требовалось создать целую подкатегорию признаков, которые применимы только к каждой из этих возрастных групп, потому что в нашей игре возраст – это особенная характеристика. Объединение всех особенностей характера в рамках общей системы исключения значительно упростило бы этот процесс – и мы, вероятно, воспользовались бы им гораздо лучше, предложив больше особенностей, характерных для молодых или пожилых персонажей. Далее, поскольку мы не всегда можем предсказать, какие особенности персонажа будут ограниче-

Заключение  271 ны и как будут отсекаться признаки в процессе пошагового генерирования (что чревато ошибками вроде несообразного голоса), нам нужно встроить в нашу систему «средство отступления», когда она заходит в тупик. То есть, когда система исчерпала все возможные варианты для конкретного признака, мы должны позволить ей отменить предыдущий выбор и попробовать другой. К примеру, если в наборе голосов нет ничего подходящего, генератор отступает на шаг и выбирает другой возраст, пол или культурную среду героя – и пробует столько раз, сколько нужно. Таким образом, совпадение, если оно вообще возможно, рано или поздно отыщется, и большинство несообразностей, вызванных игнорированием ограничений, будет устранено. Если все еще останутся примеры неудачной генерации персонажей, то только потому, что ограничения не стыкуются на самом очевидном, базовом уровне – а такие случаи выявить значительно легче, и исправить контент не составит труда.

Заключение Таким образом, мы в конце концов узнали, что лучшие наши решения – те, которые позволяют раннему выбору генератора свободно ограничивать последующие выборы, притом не нарушая заданную структуру и порядок. Люди по своей природе сложны и загадочны; каждый из нас начинает рассказывать о себе по-разному, пытаясь выстроить целостный образ. Процедурно сгенерированные персонажи больше напоминают реальных людей, если действуют аналогично, пытаясь объяснить, кто они такие.

Глава

23 Генераторы сюжета Адам Зальцман, Finji

Если писатель хорошо знает то, о чем пишет, он может опустить многое из того, что знает, и если он пишет правдиво, читатель почувствует все опущенное так же сильно, как если бы писатель сказал об этом. Эрнест Хемингуэй, «Смерть после полудня» Можно сказать читателю, что персонаж учился в частной школе, а можно упомянуть, что он ненавидит спагетти; но, за редким исключением, чувства персонажа должны быть продемонстрированы на примере: страх, любовь, волнение, сомнение, смущение, отчаяние становятся реальными только тогда, когда они выражаются в поступках. Джон Гарднер, «Как стать романистом» Еще году в 2008-м  – 2009-м в сообществе разработчиков велось много разговоров о возрождении процедурно генерируемого контента. В то время я играл в Dwarf Fortress, Thrustburst, Spelunky Classic и Captain Forever, и коллеги-дизайнеры говорили о способности этих игр генерировать новые «истории игроков». Многие дизайнеры утверждали, что эти игры, по сути, представляют собой «генераторы историй», и тому была масса доказательств – в том числе отзывы самих игроков, взволнованно рассказывающих о том, какие невероятные приключения их поджидали. В то время я этого не знал, но в LARP-сообществах1 уже появился термин для обозначения этого явления: «пена». Пена  – это особый стиль повествования, который мы используем, например, при описании прошедшего матча или каких-то интересных событий в процессе игры – то есть в нашем изложении игра будто бы еще идет, хотя вроде бы и прошла. 1

Ларп-гейминг (от Live Action Role-Playing) – вид ролевого движения, когда игроки переносят правила настольных и видеоигр в реальный мир: изготавливают доспехи, оружие и прочие атрибуты, а затем отыгрывают свои роли. Это напоминает иммерсивный театр, в котором зритель одновременно является и актером. – Прим. перев.

Генераторы сюжета  273 Только недавно я понял, что веселые длинные сообщения об обреченных колониях в Dwarf Fortress, размещаемые в блоге, были виртуальным эквивалентом такого рассказа. До того как у нас с Беккой появились дети, мы были заядлыми игроками в Pandemic и точно так же описывали только что пройденную игру: «Подумать только, Лагос спасен! Пожертвовать Парижем было рискованно, но трата баллов окупилась уже на следующем ходу!» И так далее. Мне казалось, что игры, которые хорошо генерируют истории, поднимают добротную пену, а пена – это весело. В 2014 году я начал работать над Overland, пошаговой видеоигрой о людях, совершающих путешествие в постапокалиптическую эпоху. Продумывая дизайн, наша команда то и дело возвращалась к мысли: хорошо бы сделать игру, которая даст много пены! Мы хотели, чтобы игра генерировала интересные и удивительные истории игроков – настолько интересные и настолько удивительные, чтобы делиться ими с друзьями. Итак, на повестке дня у нас появился новый пункт: «генератор историй». К счастью, я знал о них все, играя в разные процедурные игры. Но мне потребовалось много времени, чтобы понять: для таких игр, как наша, сам игрок является генератором истории. А то, что нам требовалось в игре, было генератором сюжета. Сюжет  – это последовательность действий в рамках повествования. Оставьте глаголы и существительные – и отбросьте все остальное. Например: «Алиса купила авокадо в магазине»; «Джефф разбил свой автомобиль возле озера»; «Морган упал и поранился». Субъекты (существительное), совершающие действия (глагол) над объектами (существительное) там-то и там-то. Идея ясна. История – это сюжет плюс его обрамление, которое проясняет, почему произошли такие-то события (с указанием мотивов персонажей и пр.). Например: «Алиса покрутила авокадо за верхушку, чтобы проверить, созрел ли он, – так ее учила мама. Она поморщилась, но все равно положила плод в корзину». (Пожалуйста, имейте в виду: эти определения сюжета и истории применимы только в контексте данной главы. Они не являются универсальными – с их помощью я просто поясняю работу инструментов, показанных ниже.) Итак, сюжет  – это события и их взаимосвязь в истории, а сама история – это весь пирог целиком: развернутые предложения и все в этом духе. Overland не уникальна в генерировании сюжета. Даже наоборот, осознание того, что другие игры наподобие нашей были генераторами сюжета, а не истории, в первую очередь привело нас к движению в том же направлении. Я был взволнован этим изменением планов. Генераторы сюжетов имеют массу преимуществ. Во-первых, не нужно писать так много сложных предложений. Локализация игры намного проще, и мы могли бы миновать все эти трудные попытки создания достоверной истории – хорошо проду-

274

 Глава 23. Генераторы сюжета

манной прозы со всей ее сложностью и детализацией. На каком-то уровне все игры генерируют сюжет, так что вопрос только в степени проработки по сравнению с чисто ручным трудом. Генераторы сюжетов имеют много общего с низкоуровневым, схематизированным повествованием. Все мы знаем, что опытный автор иногда опускает детали, предоставляя читателю додумать, что произошло, но заботится о том, чтобы он правильно ухватил идею. Или монтаж фильма соединяет два эпизода, последовательность которых не оставляет у зрителя сомнений в том, что произошло в промежутке. Хорошие генераторы сюжета функционируют примерно так же, находя удивительные и интересные способы упорядочить действия в нашей игре. Ранее не связанные эпизоды в сочетании друг с другом порождают новые смыслы. Раньше распахнутая дверь автомобиля ничего не означала, а теперь это символ. Генераторы сюжета используют игроков для того, чтобы они «генерировали» историю. Проза, порядок действий, мотивы, причины и следствия – все это оставлено на усмотрение игрока. Сгенерированный сюжет похож на строительные леса или каркас, на котором игроки собирают свой рассказ. Итак, хорошая новость в том, что если что-то происходит в вашей игре, то она генератор сюжета. Хорошая работа – это было легко – всем пять – на том и закончили! Например, «Тетрис» – это генератор сюжета. Упал L-образный блок. Затем упал Т-образный, и весьма неудачно. Потом квадрат. Проходит довольно-таки много времени, прежде чем появится долгожданный блок в форме буквы «I». NBA Jam – генератор сюжета: «Детройт набрал два очка. Затем Хьюстон – тоже два очка. После этого Хьюстон набрал три очка». Я бы не сказал, что это плохие генераторы сюжета, поскольку они хорошо обслуживают игру, но они определенно грешат повторениями. Генератор повторяющихся сюжетов может генерировать только несколько действий или событий. Конечно, контекст может меняться, и эти изменения могут чего-то стоить игроку, что добавляет сложности. В конце концов, решающий бросок в спортивной игре – совсем не то же, что гол в первом тайме; но в большинстве видеоигр основные действия или события довольно ограниченны. Например, в самых ранних версиях Overland игроки не имели в своем распоряжении столь многих вариантов. Вы можете ударить монстра палкой; он вас укусит; вы, возможно, вылечитесь, если достанете аптечку; можете порыться в мусорном контейнере, умереть или уехать. Вот и все варианты – и большую часть времени эти действия повторяются с еще меньшей вариативностью. Отъезд и исцеление – события довольно редкие, а смерть героя означает конец игры. Поэтому большую часть времени «сюжет» Overland не выходил за пределы схемы «ударь палкой, загляни в контейнер, ударь палкой, ударь палкой, загляни

Генераторы сюжета  275 в другой контейнер, ударь палкой» – и так до бесконечности. Если не сказать, до тошноты. Но для начала это не так уж плохо! Многие игры, в том числе и моя, борются за то, чтобы преодолеть бесконечную череду «ударов палкой». Вывести по-человечески интересную историю с помощью генератора повторяющихся сюжетов («удар, поиск, удар, удар, поиск, удар») – рутинная задача. Возможно, если бы сюжеты, создаваемые нашей игрой, были менее однообразными, то история, которую хотел рассказать игрок, была бы куда более впечатляющей. Может быть, это будет интересная и неотъемлемая часть игры. И тогда мы получим эту сладкую-сладкую пену. Поэтому мы начали искать вещи, которые одновременно вписывались бы в игру и существенно меняли сюжет. Иногда это были очевидные ходы, например возвращение персонажа к жизни с помощью искусственного дыхания. Иногда – не столь очевидные: например, можно погладить собаку, хотя за это действие вы ровным счетом ничего не получите. Иногда нас настигали «открытия второго порядка» – например, движение игрока по диагонали позволит ему обходить отдельные препятствия. Мы также рассмотрели, как реализовано повествование в играх смежных жанров. Например, в современном рогалике FTL: Faster Than Light и в классической обучающей игре Oregon Trail сценарии и встречи могут предваряться всплывающими диалогами с выбором нарратива или выбором игрока. К примеру, если какой-то персонаж застрял, у вас есть варианты: присоединить его к своей команде, или убить и завладеть его сокровищами, или что-то еще. Мы думали о многих сценариях, подобных этим, и пытались оформить связанные с ними настройки, действия и результаты так, чтобы они могли присутствовать на любом игровом уровне, а не только во всплывающем диалоговом окне. Если вы в Overland встречаете незнакомца, который может присоединиться к вашей команде, то всплывающий диалог с парой абзацев сгенерированной истории не выводится. Вместо этого незнакомец выкрикивает короткую фразу. Например: «Я отстал, пожалуйста, возьмите меня с собой!» – или, если поблизости есть разбитая машина, «Она сейчас заглохнет  – можно присоединиться к вам?»  – или, если персонаж оказался в завале, «Вытащите меня отсюда!». Да, это уже практически Шекспир. Далее мы берем события, которые традиционно выводятся во всплывающем диалоге на основе истории, и разбиваем их на отдельные действия: перемещение, приглашение, атака, добыча и т. д. Вместо того чтобы просто нажимать кнопку во всплывающем окне, игроки управляют персонажами на игровой сетке: нажимают на незнакомца и используют «приглашение», чтобы присоединить его к группе, «атаку», чтобы вступить в сражение, или опять же «приглашение», но только чтобы забрать предметы инвентаря, а затем бросить незнакомца на произвол судьбы. Внезапно здесь оказывается нужна добавочная детализация: «Обманите незнакомца, чтобы он от-

276

 Глава 23. Генераторы сюжета

дал вещи» – событие, а не просто кнопка в меню. Это то, что игроки могут придумать сами (и впоследствии рассказать историю). Отличная уловка, но я думаю, что еще лучше и важнее та свобода маневра, которую обеспечивает этот подход на случай неожиданной катастрофы и последующей импровизации. Например, игрок может решить: «Я спасу этого несчастного, ведь я же благородный путешественник!» – а затем отказаться от этой мысли. Может быть, он не сможет добраться до того, кого хочет спасти. Может быть, лесной пожар настиг игрока с подветренной стороны и поглотил его героя и/или персонажа, на помощь которому он шел. Возможно, игрок решил атаковать незнакомца, но слишком поздно понял, что тот не одинок, и теперь у героя проблема. Может быть, незнакомец не намеревался присоединиться к группе игрока, но после того как игрок помогает ему вылечиться, незнакомец меняет свое решение. По мере того как мы расширяем подход к таким событиям, как вмешательство в дела мусорщиков, торговля в лагерях, посещение специальных мест для раскопок, сюжет становится все богаче. Все эти новые действия и нюансы вносят свой вклад в историю Overland. Моменты, подобные этим, помогают создать фундамент, на котором игрок возводит историю. Они помогают игрокам сделать свои приключения более интересными, более понятными и более человечными. Какое-то время, однако, казалось, что наши улучшения игровых действий, а значит и сюжета, не оправдывают себя, если игроков не трогают маленькие персонажи. Некоторые игровые действия, например поглаживание собаки, вызывали какие-то эмоции, но большинство действий, которые игрок мог предпринять, все еще было направлено на добычу ресурсов. В конечном счете наш арт-директор просто сделал новые модели персонажей, посимпатичней старых, и внезапно игроки переменились. Теперь им было легче общаться со своей группой. Мы даже изменили пользовательский интерфейс, чтобы вывести группу игрока на передний план и усилить чувство сопричастности. Тогда, и только тогда, работа по созданию более крутых поворотов сюжета начала окупаться. Тем временем я провел еще несколько экспериментов. Первое, что я попытался сделать, – создать систему подготовки постапокалиптических предысторий, когда игрок встречает на своем пути незнакомцев. Для этого был использован простой тип формулы поиска и замены, с некоторой поддержкой вложенности; результат оказался довольно четким и интересным даже на исходе первого дня разработки. Но в игре уже буквально не было места, чтобы внести что-то новое. Когда было игроку останавливаться и изучать абзац-другой о предыстории какого-нибудь очередного чудака, которого он подобрал по дороге? Казалось, что игроки никак не будут этого ожидать, и такие фрагменты трудно было бы оправдать (и локализовать). Поэтому я удалил все, что отдаленно напоминало написанную от руки историю, и вместо этого присвоил пер-

Генераторы сюжета  277 сонажам множество характеристик: возраст, место рождения – а затем некоторые признаки типа «одинокий», «злой» и т. п. По моему расчету, это был хоум-ран2, так как свойства героев четко обозначены… Сюрприз! Оказывается, сочинительство так не работает. В конце концов мы поняли, что если напишем пару миниатюрных рассказов для каждого игрока, то cможем чего-то добиться. Вдохновленные известным мини-рассказом Хемингуэя всего из четырех слов («Продаются детские ботиночки. Неношеные»), мы решили заменить признаки микроисториями, которые на эти признаки намекали бы. Даже самые откровенные намеки, вроде «вырос сиротой» или «посещал тренинг по обузданию гнева», уже означали прогресс. Позже я обнаружил цитату Джона Гарднера, которая использована в качестве эпиграфа к этой главе, и почувствовал себя довольно глупо. То, что для меня стало откровением, по-видимому, давным-давно было известно настоящим писателям. Для Overland две микроистории на одного персонажа – хороший показатель: мы добиваемся определенного напряжения в промежутке между микроисториями о прошлом и о настоящем персонажа. Мы назвали это «двустишиями», и они нам очень помогли. Двустишие может быть примерно таким: «Пропустил выпускной, чтобы посмотреть новый фильм про монстра / Надеется найти собаку». Прошлое и настоящее соединены монтажной склейкой, вызывая ощущение перехода, и мы надеемся подчеркнуть разницу в жизни персонажей в пред- и постапокалиптическом мире. Может показаться, что тут таятся проблемы: что если случайно выбранные микроистории будут противоречить друг другу? Но оказывается, что как раз такие комбинации самые забавные или интригующие. Вот, например, случайное двустишие для персонажа Overland: «В детстве ненавидел лагерь / Нынче спит под звездами». Игроки могут представить себе, что этот персонаж страдает от неустроенности, или вырос над собой, или чего-то боится, или то, другое и третье. Да, две микроистории сообщают о принципиально разных вещах, но в том-то и загадка. В принципе, конфликты баз данных могут сослужить хорошую службу. Не поддерживая сложную систему фильтров, или назначения веса, или чего-либо еще в этом духе, мы просто создаем ряд микроисторий, которые будут сочетаться с другим рядом. Даже если иногда это производит жутковатый эффект (например: «В детстве мучил бельчат / Надеется найти собаку»), для игрока с богатым воображением так даже лучше. Другая примечательная особенность микроисторий в том, что единственный реальный генеративный компонент  – объединение строк из 2

Хоум-ран – термин из бейсбола: ситуация, в которой игровой мяч улетает так далеко, что и отбивающий, и бегущие успевают сделать полный круг, пробежав по всем базам, прежде чем попасть в дом (home). Автор хотел сказать, что таким способом решит целый ряд проблем с описанием характеров персонажей. – Прим. перев.

278

 Глава 23. Генераторы сюжета

двух наборов. Каждое предложение допускает тонкую настройку личных местоимений, указывающих на пол героя. Раньше, когда мы работали над генератором сюжета, все сводилось к тому, чтобы избавиться от всех слов и все превратить в системы. Здесь мы получили наилучшие результаты, удалив почти все системы и, по существу, вытягивая «карты» с заранее прописанным содержимым из двух отдельных «колод». И еще одна параллель, которая мне нравится: все эти маленькие предложения в основном касаются сюжетных моментов. Они о потерях и приобретениях, о том, что спрятано и что упущено. Эмоции рождаются на стыке событий, описываемых двумя «картами». Да, эти небольшие двустишия – не бог весть что, но в сочетании с новыми симпатичными персонажами они делают свое дело: игрок сильнее привязывается к героям, и сгенерированные сюжеты глубже отзываются в нем, придавая дополнительную важность событиям. Когда я перехожу к новым проектам других жанров, то больше всего думаю о таких вот маленьких открытиях (в основном уже кем-то когда-то сделанных) – о генераторах сюжетов, о том, как они работают в игре и какой задел обеспечивают игроку. Какими должны быть визуальное представление, сопроводительные тексты, музыка и пользовательский интерфейс, чтобы игроки почувствовали связь с персонажами игры? Какие действия и события интересно включить в гейм-плей? Будут ли незнакомые нам люди строить свои истории по тем канонам, которые мы прописали в нашей странной маленькой игре? Расскажут ли эти люди своим друзьям о приключениях, которые пережили благодаря нам?

Глава

24 Генерация персонажей в The Shrouded Isle Йонгву Ким, Kitfox Games

The Shrouded Isle – это симулятор культа с человеческими жертвоприношениями, который использует сгенерированных персонажей для описания сложностей морального выбора. Игрок выступает верховным жрецом маленькой деревни на острове. Здесь совершаются ритуальные жертвоприношения дремлющему Чернобогу – так население готовится к его пробуждению, предсказанному в пророчестве. Основной игровой процесс завязан на поддержании веры жителей деревни: нужно находить и обезвреживать возможных еретиков. Используя минималистичный, основанный на отличительных чертах подход к формированию личности, The Shrouded Isle создает набор простых и при этом правдоподобных персонажей при каждом прохождении. Поскольку поведение персонажей вступает в конфликт с целями игрока, игра процедурно ставит его перед трудным выбором. Проект начался с нашего участия в джеме Ludum Dare 33 в августе 2015  года (тема звучала так: «Ты монстр»). Вместо того чтобы изображать монстра в буквальном смысле слова, мы решили исследовать способы «монструозного» управления – якобы в целях всеобщего блага, а на самом деле всем во вред. Мы выступили в конкурсе с игрой The Sacrifice, и она была настолько высоко оценена благодаря уникальной эстетике и неординарной теме, что мы решили переделать и расширить игру, чтобы выпустить коммерческий продукт. Два года спустя, в августе 2017-го, мы выпустили оригинальную версию The Shrouded Isle для Windows и OSX. После положительных отзывов критиков и игроков вышло бесплатное дополнение Sunken Sins в декабре 2017 года. Задача по проектированию The Shrouded Isle была двоякой. Во-первых, нам нужно было очеловечить горожан так, чтобы игрок воспринимал каждого как личность, а не безликих существ со статами, которые нужно оптимизировать. Во-вторых, игроку нужны были веские причины для принятия жестких решений. Хотя мы могли бы достичь нашей цели за счет

280

 Глава 24. Генерация персонажей в The Shrouded Isle

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

Генерация персонажей Генерация персонажей в The Shrouded Isle состоит из трех основных элементов: принадлежность к семье, личные характеристики, эстетическая сторона. Семья персонажа устанавливает социальный контекст (рис. 24.1). Каждый персонаж принадлежит к одному из пяти Великих домов: Кеньи, Йозефка, Кодуэлл, Эфферсон и Блэкборн. В начале прохождения каждому дому присваивается в среднем шесть персонажей, в общей сложности генерируется 30 персонажей для города. Хотя отношения между членами семьи четко не определены, в каждом доме есть как минимум один мужчина и одна женщина; взрослые люди на портретах – это родители, от двух до пяти молодых людей – дети. Новые персонажи за время прохождения игры не генерируются. Ограниченное число персонажей и подразумеваемые семейные отношения создают ощущение биографической достоверности.

Рис. 24.1. Сгенерированное семейное древо в The Shrouded Isle

Генерация персонажей  281 Каждый дом играет особую роль в жизни культа, что требует от членов семьи выполнения определенного ритуала, если они выступают в качестве советника игрока (табл. 24.1). Культ исповедует пять ценностей: невежество, усердие, дисциплинированность, смирение и послушание – и каждый дом отвечает за одну из них. Например, советник из дома Эфферсон всегда будет ответствен за «бичевание грешников», чтобы улучшить уровень покаяния горожан. В тех редких случаях, когда личные качества персонажа совпадают с семейными особенностями, персонаж становится исключительно эффективным или неэффективным советником, что делает его либо любимым чадом, либо паршивой овцой в семье. Таким образом, семейная специализация добавляет штрихи к личности сгенерированного персонажа, представляя его как публичную персону с репутацией. Таблица 24.1. Великие дома, культовые ценности и связанные с ними ритуалы Великий дом Кеньи

Йозефка

Кодуэлл

Эфферсон

Ценность культа

Невежество

Усердие

Дисциплинированность Смирение

Ритуал

Жечь книги

Возводить памятники

Конфисковать имущество

Блэкборн Послушание

Бичевать Преследовать грешников еретиков

Личное поведение персонажа представлено чертами характера. Каждому персонажу приписываются две черты: добродетель, укрепляющая одну из пяти ценностей культа, и порок, подрывающий ее основы. Персонажи не могут получить больше черт, хотя случайно вызванные события и новые механики, включенные в дополнение Sunken Sins, могут изменить существующую добродетель или порок. Алгоритм генерации избегает присвоения одного и того же признака нескольким персонажам, так что обычно у каждого уникальный набор признаков. Следовательно, каждый сгенерированный персонаж обладает четкой, существенной и уникальной силой и слабостью, которые постоянно влияют на основной игровой процесс. Признаки также имеют два уровня выраженности – малый и большой, которые определяют степень их влияния. Например, «богатое воображение» – это несущественный порок, снижающий уровень невежества всего на 10 баллов, а «плохое здоровье» – серьезный недостаток, снижающий усердие на 30 баллов. Персонажам может быть присвоено любое сочетание главных и второстепенных черт, если каждый из них отмечен добродетелью и пороком. Это может привести к перекосам: например, персонаж может быть с малой добродетелью и большим пороком. Хотя на индивидуальном уровне эти признаки не всегда сбалансированы, основные черты ограничены в количестве и, следовательно, сбалансированы на уровне города в целом. Кроме того, возможные перекосы делают влияние персонажа на город более заметным, подчеркивая его индивидуальность. Помимо

282

 Глава 24. Генерация персонажей в The Shrouded Isle

этого, у игрока есть средства, чтобы перетянуть персонажа на свою сторону или обойти его влияние – об этом поговорим позже. Этот упрощенный подход гарантирует, что каждый созданный персонаж прост по своей сути и при этом ситуационно полезен для игрока. Еще один аспект сгенерированного персонажа – эстетическая сторона (имя и портрет). Хотя ни то, ни другое не оказывает никакого влияния на игровой процесс, индивидуальность персонажа усиливается. Для игры с фиксированным количеством персонажей на одно прохождение нежелательно наличие двух персонажей с одинаковым именем или портретом: это ослабляет эффект погружения. Кроме того, игроки склонны судить о персонаже по его внешности. Во время тестирования мы заметили, что игроки выбирают персонажей в качестве советников просто потому, что те привлекательны с виду – и напротив, выбирают для принесения в жертву тех, у кого злодейские физиономии. В идеале мы могли бы модифицировать портреты или присваивать некоторые портреты героям с определенными характеристиками, чтобы включить этот импульс в основной игровой процесс. Так или иначе, эстетическая сторона немаловажна для игрока, позволяя ему оценивать личность героя.

Взаимодействие В этом разделе мы рассмотрим, как игровые системы в The Shrouded Isle позволяют игроку взаимодействовать с созданными персонажами так, чтобы их личности запоминались. Цель игрока в том, чтобы выжить в течение пяти лет, поддерживая пять ценностей культа и сохраняя контроль над пятью Великими домами. Задача осложняется тем, что каждое действие в The Shrouded Isle вовлекает горожан либо в качестве исполнителей приказа, либо в качестве объекта приказания. Таким образом, игрок полностью зависим от персонажей и их поведения, что составляет основу игрового процесса. Каждое прохождение The Shrouded Isle организовано с точки зрения времени (годы, сезоны, месяцы). В рамках сезона существует три основных этапа: город, работа, жертвоприношение. Городская фаза служит в качестве подготовительного этапа и этапа следствия. Перед игроком стоят две основные задачи: 1. Исследуйте горожан, чтобы выявить их характеристики. 2. Назначьте советника из каждой семьи для использования в последующей фазе работы. В фазе работы (рис.  24.2) персонажи и их поведение влияют на город больше всего. Среди пяти советников игрок выбирает от одного до трех каждый месяц, чтобы выполнить различные ритуалы для поддержания

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

Рис. 24.2. Фаза выполнения работы

Фаза жертвоприношения является заключительной фазой сезона. Игрок выбирает одного из пяти советников, которые будут убиты в ритуальном жертвоприношении. Поскольку жертвоприношение должно служить уроком горожанам, влияние выбранного персонажа – обратная сторона фазы работы: то есть чем ужаснее его порок, тем больше польза для города, но чем сильнее его добродетель, тем сильнее потеря. Действия игрока в каждой фазе сосредоточены на персонажах, их характеристиках и семье. Тем не менее, чтобы персонажи казались яркими личностями, а не просто автоматами для сбора ресурсов, в их использование закладывался некий риск. Поскольку влияние персонажей на город было полностью предсказуемо, они ощущались чересчур механистичными. Поэтому мы добавили элементы случайности и скрытой информации, чтобы внести изюминку в образы. В финальной версии The Shrouded Isle свойства персонажей могут находиться в одном из трех состояний – нераскрытом, частично раскрытом и полностью раскрытом (рис. 24.3). В то время как фактическое проявление характеристики не зависит от того, известена ли она игроку (т. е. свойство «образованность» будет снижать уровень невежества независимо от того, знает ли игрок об образованности персонажа), способ взаимодействия игрока с персонажем меняется с учетом того, сколько характеристик раскрыто. В условиях, когда большинство из них скрыто, игрок должен выбирать советника интуитивно, полагаясь на то, что персонаж не нанесет го-

284

 Глава 24. Генерация персонажей в The Shrouded Isle

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

Рис. 24.3. Нераскрытые (слева), частично раскрытые (в центре) и полностью раскрытые (справа) свойства

Случайные модификаторы для работы фазы ритуалов были добавлены для того, чтобы ввести новые нюансы, даже когда все свойства уже раскрыты. Хотя персонажи обычно выполняют свой семейный ритуал с хорошим результатом, есть 15%-ный шанс вызвать неожиданно хороший или плохой результат (с применением множителя 1,5x или 0,5x соответственно). Такие модификаторы не настолько значимы, чтобы вызвать осложнения на ранних этапах, но в конце игры они могут неожиданно заставить одну из ценностей культа выйти за допустимый предел, создавая цепь последствий, которые осложняют план выживания игрока. Показатель, отклоняющийся от стандартной критической отметки, заставляет персонажей часто превосходить ожидания игрока или разочаровывать его. Эти рандомизированные результаты (табл.  24.2) привели к тому, что игроки стали иначе определять компетентность персонажей, злоупотребляя домашними советниками, которым просто повезло, или наказывая плохих исполнителей и убивая их в фазе жертвоприношения. Побочный эффект добавления неопределенности к поведению персонажа заключается в следующем: опытные игроки будут избегать риска при выборе советника. В первые сезоны игры скрытая информация и случайные шансы побуждали игроков выбирать не самых удачных советников;

Взаимодействие  285 в конечном счете они будут стремиться использовать персонажей, которых можно хорошенько проверить. Таким образом, по мере прохождения мотивация становится тоньше и учитывается больше обстоятельств при подборе исполнителей. Таблица 24.2. Результаты фазы работы Результат

Отличный

Средний

Плохой

Шанс

15 %

70 %

15 %

Множитель

1,5x

1x

0,5x

Система семейных мнений на этапе разработки была добавлена с тем, чтобы побудить игроков использовать каждого персонажа. Использование советника из той или иной семьи улучшает отношение к игроку, и наоборот – неиспользование того или иного советника расстраивает семью. Поскольку игрок может использовать только до трех советников за один месяц, от двух до четырех семей неизбежно остаются ни с чем. Чтобы избежать бунта, игрок вынужден использовать советников из каждой семьи по крайней мере в течение одного из трех месяцев сезона, даже если их вклад в ценности культа сомнителен или вред очевиден. В результате персонажи, которых игрок в противном случае мог бы игнорировать, получают шанс проявить себя. Фаза жертвоприношения (рис. 24.4) – это более явная попытка привлечь внимание к простым персонажам, механическая инверсия фазы работы, где порок выбранного персонажа поддерживает ценности культа, а добродетель ослабляет. С точки зрения повествования это моральный урок, который смерть грешника преподает горожанам – и чем очевиднее порок, тем лучше урок. Имея в виду эту динамику, игроки заинтересованы в том, чтобы за сезон назначить советником по крайней мере одного персонажа с максимальным пороком из всех, что им известны, – ради того, чтобы сделать его козлом отпущения. Еще один аспект жертвоприношения – резкая потеря лояльности семьи умершего персонажа. Понятно, что родные не обрадуются тому, что их близкого человека убили, пусть даже и для блага города. В то время как потеря лояльности может быть смягчена тщательным анализом характеристик героя («Расследование»), многократное уничтожение членов одной и той же семьи критически влияет на ее мнение об игроке, и может назреть бунт. Снижение лояльности привносит дополнительные нюансы в выбор игрока: оказывается, что принести в жертву самого порочного персонажа может быть политически опасным решением. Действительно, опытные игроки могут пожертвовать персонажами с незначительным пороком, а в редких случаях и теми, кто отмечен большой добродетелью, лишь бы сохранить стабильность в отношении с домами.

286

 Глава 24. Генерация персонажей в The Shrouded Isle

Рис. 24.4. Фаза жертвоприношения

Модификация характеристик В то время как мы намеренно исключили возможность изменения признаков персонажей в процессе игры, мы обнаружили, что игроки ожидают некоторого развития характеров за пределами вышеупомянутых взаимодействий. В оригинальной версии игры это желание было удовлетворено за счет случайных событий: то лидеру культа приходили письма, то наносил визит кто-то из горожан, прося совета или побуждая принять решение по важному вопросу. Выбор игрока обычно носил политический или этический характер, в первую очередь опираясь на лояльность семей и ценности культа. Однако некоторые варианты выбора оказывали влияние на персонажей, заменяя одну черту характера другой. Этот подход позволил нам создать «дуги характеров», фокусирующиеся на травматичном опыте и искуплении – например, когда кто-то преодолевает боль после того, как его любимый человек принесен в жертву, и укрепляет силу духа, или скептически настроенный (в силу своей образованности) персонаж обретает веру в культ. Иногда таким образом возникала череда событий, которые происходили в течение нескольких сезонов. Например, Художник может многократно просить разрешения на проведение перформансов, один безумнее другого. Хотя такие «сюжеты с продолжением» позволяли показать персонажа в развитии, они в то же время вызывали проблемы: игрок не мог принести в жертву персонажа, на котором завязана целая цепь событий. В результате мы больше полагались на однократные события для модификации характеристик.

Модификация характеристик  287 Несмотря на эти управляемые событиями «дуги характера» персонажей, игроки все еще чувствовали, что персонажи слишком статичны. С того момента как черты характера были полностью раскрыты и связанные с ними события исчерпаны, лишь статические характеристики и семейная специализация имели значение с точки зрения гейм-плея. Поскольку игроки стремились повторно использовать любимых персонажей с хорошими комбинациями добродетелей и пороков, последний год в игровом мире уже кишел повторами. В дополнении Sunken Sins были добавлены «инфекции», чтобы сохранить динамизм характеристик на протяжении всего игрового процесса. Цель состояла в том, чтобы удивить игрока, когда персонаж начнет вести себя по-другому, даже если игрок уже все о нем знает. В первую осень прохождения игры случайный персонаж выбирался в качестве носителя инфекции, которая подменяла добродетель частично раскрытой чертой, снижающей ценность культа, что во многом роднило ее с пороком. В каждом новом сезоне инфекция распространялась на другого персонажа в той же семье – или же в другой семье заводилась другая инфекция. Если учесть семейные мнения в отношении игрока, инфекции были полезны для того, чтобы игрок обращал больше внимания на персонажей на протяжении всего игрового процесса. Подобно тому как он мог обвинить персонажей в неудачах на фазе работы, он был вправе обвинить и «инфицированного» персонажа в том, что он заразил полезных и добродетельных членов своей семьи. Чтобы уравновесить вероятность заражения, мы добавили Башню очищения (рис. 24.5), которая давала игроку возможность повлиять на характеристики персонажей. Во время фазы города игрок может запереть до трех персонажей в башне и попытаться исцелить их, погрузив в морскую воду. Никаких немедленных затрат на очищение не предполагается, однако заточенные персонажи не могут служить советниками, и очищение занимает целый сезон. Кроме того, показатель успеха зависит от того, как сильно игрок интересовался инфекцией (есть ли у него полностью раскрытый 100%-ный показатель). Успешное очищение зараженных персонажей устранит инфекцию и восстановит разъеденную добродетель. Но в случае неудачного исхода персонаж тонет, что вызывает гнев соответствующей семьи. Учитывая стоимость заключения и ограниченную доступность запросов, игрок должен заранее просчитать выгоду от исцеления персонажа и риск его утопления (вкупе с потерей лояльности семьи). В зависимости от ситуации игрок может решить, что он не позволит себе ждать до следующего сезона, чтобы все обстоятельно исследовать и уж потом обуздать распространение инфекции. С другой стороны, игрок может махнуть рукой на зараженного персонажа, если основная его добродетель была не так уж и важна. В общем, использование Башни очищения создавало в игре напряжение, сходное с фазой жертвоприношения: здесь игрок должен был как следует оценить горожан.

288

 Глава 24. Генерация персонажей в The Shrouded Isle

Рис. 24.5. Экран Башни Очищения, показывающий процесс очищения (левая клетка)

Вторичное свойство Башни – случайным образом изменять характеристики, не пострадавшие от инфекции. Таким образом мы создаем больше возможностей для персонажей и повышаем шансы удивить игрока. Когда очищается незараженный персонаж, есть умеренная вероятность того, что либо его добродетель, либо порок будут заменены менее выраженными. И маловероятно, что такой персонаж утонет (табл. 24.3). В сущности, у очищенных персонажей просто гипертрофируются прежние качества  – с лучшим или худшим эффектом. Поскольку очищать того, кто не страдает от инфекции, необязательно, игроки чувствуют ответственность за результат, что приводит к большей удовлетворенности или сильному разочарованию в сравнении с фазой работы, рандомизированной аналогичным образом. Таблица 24.3. Результаты очищения для персонажей, пораженных инфекцией Вероятность излечения

Вероятность возрастания порока

Вероятность утопления

Выявлено полностью

100 %

0%

0%

Выявлено частично или не выявлено

40 %

40 %

20 %

Выявление заражения

Персонажей, которые уже обладают главной добродетелью, очищение буквально преображает. Они превращаются в пробужденных – грибоподобных мутантов, которых Чернобог считает благословенными. Добродетель заменяется «характеристикой пробуждения» (табл. 24.4), которая

Заключение  289 не имеет статистического значения, и внешность персонажа на портрете также меняется. Чтобы открыть секретную концовку в расширении Sunken Sins, игрок должен превратить всех выживших горожан в пробужденных к концу прохождения. Таблица 24.4. Результаты очищения для незараженных персонажей Вероятность возрастания добродетели

Вероятность возрастания порока

Вероятность утопления

Вероятность превращения в пробужденного

Главная

0%

0%

0%

100 %

Второстепенная

40 %

40 %

20 %

0%

Уровень добродетели

С точки зрения гейм-плея пробуждение делает персонажей почти бесполезными на этапе работы, поскольку им не хватает добродетелей. Кроме того, на стадии жертвоприношения они стоили бы игроку огромного количества ценностей культа, поскольку сами являются живыми его символами. Таким образом, пробужденные функционально похожи на карты победных очков в играх с построением колоды, таких как Dominion: они необходимы для открытия секретной концовки, но могут ограничить возможности игрока, если собрать их слишком рано. С точки зрения нарратива пробуждение означает потерю личности в связи с вынужденным конформизмом. Персонажи уже не ведут себя так, как прежде, и они буквально «расчеловечены». Поскольку только персонажи с главной добродетелью могут быть превращены в пробужденных, игрок должен решить, стоит ли превращать самых добродетельных членов сообщества в тараторящих монстров, какую бы новую возможность ни сулила концовка. В этом контексте Башня очищения – удачный способ поощрить игрока к тщательному анализу личности горожан и подумать, стоит ли подвергать их лишним испытаниям.

Заключение К сожалению, игроки быстро преодолевали моральные терзания, связанные с необходимостью приносить персонажей в жертву и очищать в Башне, – иными словами, смирялись с ролью диктатора. Во время тестирования мы обнаружили, что после одного или двух сезонов игроки уже не приступают к фазе жертвоприношения с трепетом. Одно из неудачных моральных испытаний, которое мы пытались предложить игроку, – возможность никого не убивать во время фазы жертвоприношения. Однако тестирование игры показало, что игроки остались не в восторге от такого варианта, поскольку результат скорее разочаровывал по сравнению с тем, что давало жертвоприношение. Кроме того, сбалансировать вариант «без

290

 Глава 24. Генерация персонажей в The Shrouded Isle

жертв» было трудно как по концептуальным, так и по экономическим причинам. Неповиновение воле Чернобога наносило игроку серьезный ущерб, по сравнению с которым ослабление ценностей культа или потеря лояльности какой-то из семей казались не столь уж серьезными: ведь все это «мирское». Даже если бы эти последствия были более конкретными и зримыми, вариант «без жертв» должен быть сопоставим с «экономическим» эффектом жертвоприношений, чтобы он не был ни слишком желанным, ни абсолютно бесполезным вариантом. Так что мы его и вовсе исключили и свели моральный выбор игрока к тому, кем именно поступиться. Еще один недостаток генерации персонажей в The Shrouded Isle заключается в том, что в начале прохождения их слишком много. Поскольку в начале игры присутствовали 30 персонажей, некоторые игроки во время фазы города впадали в ступор, испытывая трудности с выбором. Нелегко им было, помимо прочего, установить эмоциональную связь с персонажами в первые несколько сезонов. Игра могла бы начинаться с меньшего числа горожан и с течением времени пополняться новыми – к примеру, теми, кто недавно прибыл в деревню, или детьми, достигшими совершеннолетия в той или иной семье. Правда, новые персонажи вызвали бы вопросы, которые отвлекали бы от основной темы: «А что, рядом есть другие поселения?» или «Почему раньше об этих детях ничего не говорилось?». Хотя на эти вопросы можно было продумать ответы, они увели бы нас в сторону. К тому же уменьшение населения города придавало игре драматическое звучание в сравнении с другими симуляторами, которые фокусируются на росте и процветании. Если бы действие The Shrouded Isle разворачивалось в более спокойной обстановке, мы могли бы выбрать более мягкий подход к формированию личности. Генерация горожан в The Shrouded Isle хорошо справляется с их персонализацией – их характеристики умело используются для осложнения выбора. Социальный контекст приписывает каждого персонажа к одной из пяти семей, которые выполняют определенную роль в деревне. Простые и вполне понятные личности были созданы за счет наделения каждого персонажа уникальной парой качеств. Кроме того, каждый персонаж получал уникальное имя и портрет. В начале прохождения игровые системы разрешали персонажам в полной мере проявить характер; игрок зависел от них и должен был доверять им в управлении деревней. На фазе работы элементы случайности и скрытая информация позволяли персонажам действовать как независимым агентам, превосходя ожидания игрока или, напротив, не оправдывая надежд. Благодаря тому что использование советников влияет на лояльность семьи, игрокам иной раз приходилось терпеть персонажей с существенными недостатками, мешавшими реализовывать оптимальную стратегию. Наконец, фаза жертвоприношения, в которой меняются местами добродетели и пороки, а утрата лояльности семьи может обернуться катастрофой, побуждает игрока пересмотреть

Заключение  291 выбор каждого из советников, принимая в расчет как поведение персонажей, так и политические последствия их убийства. Вводя в игру откровенно вредоносных персонажей и побуждая игроков взаимодействовать с ними, The Shrouded Isle создает обстоятельства, в которых нужно выбирать из двух зол меньшее или превратиться в «управленца-монстра», чтобы выжить.

Глава

25 Диалог Элан Раскин

«Тут аптечка!» «У тебя за спиной монстр, Фред!» Персонажи, которые, по видимости, осознают состояние игрового мира, добавляют ему глубины, но по мере того, как растет количество релевантных игровых состояний и доступных диалогов, выбор одной строки из тысяч с огромным скриптом if/else становится пугающим. Я задумался об этой проблеме, когда работал над Left 4 Dead, кооперативным шутером, который в значительной степени зависит от персонажей, реагирующих на окружающую среду и друг на друга. Управляемые игроком персонажи автономно комментируют тактические ситуации (скажем, предупреждение о нападении зомби и запрос на полезные ресурсы), но могут произносить и контекстно-зависимые фразы из голосового меню. Поскольку любой персонаж Left 4 Dead в каждую секунду может умереть, нам нужна была система, которая адаптировалась бы к выбору наиболее подходящего разговора в зависимости от того, кто еще жив. Кроме того, поскольку есть еще ИИ-режиссер, рандомизирующий обстоятельства, здание, которое в одном прохождении может скрывать тех, кто сидит в засаде, в другой раз будет безопасным, так что основанные на местоположении речевые триггеры в духе «Эй! Засада!» уже не будут актуальными, и т. д. В этой главе я опишу один подход к диалогам, который был разработан с учетом этих требований, а в итоге оказался очень мощным и простым фреймворком для любого проекта, где персонажи должны быть осведомлены о состоянии мира, помнить, что в нем произошло, переходить от частных к общим случаям и выбирать наилучшие из доступных диалоги/ сценарии/анимацию в каждой конкретной ситуации. Проще говоря, авторы получают способ управления данными, который предусматривает особые ситуации, запускает шутки, разговоры о том о сем – и делает все прочее, что связано с неослабевающей памятью персонажей.

Вариант использования  293

Вариант использования В этом контексте «динамический» диалог просто означает речь персонажа, которая реагирует на действия игроков, основываясь на состоянии окружающего мира и предыдущих событиях. Это отмечается в ранних играх в жанре текстовых приключений на основе синтаксиса, таких как Deadline и Witness: там встречаются NPC, которые могут вести простые разговоры и помнить предыдущие действия игроков. Однако по мере усложнения игр росло количество состояний и диалогов, которыми надо было управлять. Многие ролевые игры поддерживают обратную связь с игроками через ветви диалогов. Эта знакомая всем идиома обеспечивает четкую причинно-следственную связь между выбором игрока и диалогом персонажей. Наиболее распространенная реализация – это, по сути, машина состояний с возможностью ввода со стороны игрока, переводящего персонажа из одного состояния в другое. Для автора это просто: STATE_GREETING: скажите "Вы видели деревенскую часовую башню?" if PLAYER_RESPONSE == "yes": goto STATE_SEEN_TOWER if PLAYER_RESPONSE == "no": goto STATE_DECLINED_TOWER STATE_SEEN_TOWER: скажите "Я самый красивый во всем округе, не так ли?" End STATE_DECLINED_TOWER: скажите "Что ж, я покажу вам дорогу." End

И так далее. Но код быстро становится громоздким, ведь персонажи должны помнить предыдущие действия игроков и другие события в игре – чем больше игра, тем больше сожженных деревень и убитых драконов на счету героя: STATE_GREETING: скажите "Вы видели деревенскую часовую башню?" if PLAYER_RESPONSE == "yes" and VILLAGE_DESTROYED == false: goto STATE_SEEN_TOWER if PLAYER_RESPONSE == "no" and VILLAGE_DESTROYED == false: goto STATE_DECLINED_TOWER if PLAYER_RESPONSE == "yes" and VILLAGE_DESTROYED == true: goto STATE_SEEN_TOWER_DESTROYED if PLAYER_RESPONSE == "no" and VILLAGE_DESTROYED == false: goto STATE_DECLINED_TOWER_DESTROYED STATE_SEEN_TOWER_DESTROYED: скажите "Рад, что вы смогли увидеть ее до того, как она сгорела." End STATE_DECLINED_BURNING_TOWER: скажите "Жаль, она была самой прекрасной в округе." End

294

 Глава 25. Диалог

Для многих тысяч возможных битов состояний такая поддержка крайне сложна. Другой распространенный тип динамического диалога – комментирование событий. Например, NPC в большинстве стелс-игр периодически восклицают: «Что это было?!» или «Что за шум?» или «Свет погас!» – и т. д., передавая состояние ИИ игроку. Напарники-NPC в шутерах выкрикивают предупреждения типа «Наступление на правом фланге!», а спортивные игры включают и более развернутые комментарии. В ряде случаев это художественный прием: например, рассказчик в Bastion комментирует все, что делает игрок. Этот вид диалога также может быть реализован с помощью дерева операторов if/else, но усложняется по мере роста возможных комбинаций событий и условий. Во всех этих случаях возникает потребность отслеживать состояние о мире равномерно управляемым способом, использовать это состояние, чтобы выбрать только правильную строку из большой базы данных символьной речи, и при выборе следующей строки помнить, что было сказано раньше. Ниже я представлю одну возможную систему обработки данных простым, но мощным способом, рассматривая диалог как систему общих правил со все более конкретными исключениями. Самый простой способ понять представленную здесь систему – построить ее шаг за шагом исходя из примеров использования. Предположим, что мы работаем над командным соревновательным шутером. Мы хотим, чтобы персонажи комментировали: • реакцию на конкретные события, например когда в них стреляют; • нажатие клавиши для выполнения определенной команды, такой как вызов врача; • нажатие «клавиши озвучки» – в этом случае должно звучать что-то контекстно-специфическое в зависимости от того, на что смотрит игрок, например: «наступите на эту точку захвата!».

Контекстно-зависимое озвучивание Наша первая реализация будет представлять собой простой список возможных ответов персонажа – с правилами, определяющими, какой фрагмент воспроизводится, когда, например, игрок нажимает «кнопку озвучки». Каждое правило связано с некоторой реакцией  – как звуковой репликой, так и сопровождающей ее анимацией, – которую я в дальнейшем буду рассматривать как единое целое. В принципе, сценарий будет выглядеть примерно так: rule Voc_Grenadier_CallForMedic {

Контекстно-зависимое озвучивание  295 критерий { Event=OnVocalizeKey; LookingAt=Medic; SpeakingCharacter=Grenadier } ответ { Grenadier_Medic_Call // "Эй, док, помогите мне!" } } правило Voc_Grenadier_Announce_Capture_Point { критерий { Event=OnVocalizeKey; LookingAt=CapturePoint; SpeakingCharacter=Grenadier } ответ { Grenadier_Do_Capture_Point // "Встаньте на эту точку захвата!" } }

Функция Vocalize() затем проходит через каждое правило по очереди, находя то, которое соответствует говорящему персонажу, событию-триггеру (в этом случае игрок нажимает клавишу) и объекту, на который игрок навел указатель. Мы можем использовать тот же подход для игровых событий, как, например, в случае, когда у персонажа полностью восстановилась функция специальной атаки: rule Bark_Laserguy_Announce_Megacharge { критерий { Event=OnFullyCharged; SpeakingCharacter=Laserguy } ответ { Laserguy_Report_Charge // "Мой лазер заряжен!" } }

И так далее. Это удобный способ создать реплики, которые являются контекстно-зависимыми вариациями одного и того же базового образца. Контроллер символов должен только выдать общее событие OnVocalizeKey, а затем база данных правил может выбрать наиболее подходящую строку на основе контекста. Если мы включим новый тип объекта в игру, останется лишь добавить новое правило ответа с соответствующим LookingAt для персонажа, чтобы к нему можно было обратиться. Конкретизировать правила столь же легко; персонаж может, например, различать определенные точки захвата Alpha и Bravo, добавляя критерий к соответствующим правилам: rule Voc_Laserguy_Announce_Capture_Point_alpha { критерий { Event=OnVocalizeKey; LookingAt=CapturePoint; CapPointId=A; SpeakingCharacter=Laserguy } ответ

296

 Глава 25. Диалог

{ Laserguy_Do_Capture_Point_Alpha // "Стойте на точке Аlpha!" } } rule Voc_Laserguy_Announce_Capture_Point_bravo { критерий { Event=OnVocalizeKey; LookingAt=CapturePoint; CapPointId=B; SpeakingCharacter=Laserguy } ответ { Laserguy_Do_Capture_Point_Bravo // "Стойте на точке Bravo!" } }

Если мы также сохраним основное правило LookingAt=CapturePoint, то у нас будет сценарий, в котором два правила совпадают, когда игрок запускает вокализацию: как общее с критериями { Event=OnVocalize – Key; LookingAt=CapturePoint; }, так и более конкретное с дополнительным критерием CapPointId=A. В этом случае мы выбираем правило, которое имеет больше критериев, – более конкретное. Это означает, что у нас всегда есть общая фраза, к которой можно вернуться, если не удается найти конкретную. Если новая карта включает в себя точку захвата G, основная реплика «Стойте на этой точке захвата!» будет воспроизводиться в случае, если мы не написали конкретный ответ.

Автоматические триггеры Давайте расширим эту идею, чтобы поддерживать персонажей, автоматически комментирующих объекты в их поле зрения, – это полезно для остроумных NPC-напарников. Мы можем сделать это с помощью еще трех битов в нашем механизме, добавив способ помечать объекты в мире конкретными именами, способ для правил устанавливать флаги на самих себя и таймер, который отправляет события onSee каждому персонажу через регулярные интервалы времени, с дополнительным контекстом для любого объекта в поле зрения персонажа. Самый простой подход к пометке объектов  – наложение строкового поля на каждый субъект: чтобы, например, у кошек был тег cat («кошка»), у  бочек – тег barrel («бочка») и т. д. В компонентном движке, таком как Unity, это может быть так же просто, как создать целевой компонент озвучки, содержащий простое строковое поле. (Подробнее о возможностях тегов для организации вашего контента рассказывается в главе 22.) Затем мы можем написать правила для конкретных объектов, поэтому, когда персонаж получает событие onSee и оказывается лицом к лицу с кошкой, он выберет соответствующее правило. Поскольку у нас есть таймер, автоматически запускающий это событие каждые несколько секунд, это создаст иллюзию, что персонаж спонтанно реагирует на вещи вокруг него (рис. 25.1).

Память  297

СОБЫТИЕ

Событие:

КРИТЕРИЙ

РЕАКЦИЯ

кошка

«Кошка!»

бочка

«Бочка!»

кирпич

«Кирпич!»

бутылка

«Бутылка!»

Рис. 25.1

И наоборот, если ни одно правило не соответствует рассматриваемому в данный момент объекту (скажем, стулу), персонаж будет молчать. Следующая часть состоит в том, чтобы правила могли бы установить флаг «сказал один раз» на себя, чтобы персонаж не повторял один и тот же комментарий. Это легко достигается путем добавления обратного вызова, который выполняется, когда строка диалогового окна закончила воспроизведение. Примерно так: rule Fred_LookingAt_Cat { критерий { Event=onSee; LookingAt=cat; SpeakingCharacter=Fred; this.SaidOnce=false } ответ { Fred_Comment_Cat // "Кошка! Где-то рядом должен быть интернет." } обратный вызов { this.saidOnce := true } }

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

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

298

 Глава 25. Диалог

rule Fred_LookingAt_Barrel_0 { критерий { Event=onSee; LookingAt=Barrel; SpeakingCharacter=Fred; speaker.BarrelsSeen=0 } ответ { Fred_Comment_Barrel0 // "Интересно, что в этой бочке." } обратный вызов { speaker.BarrelsSeen += 1 } } rule Fred_LookingAt_Barrel_1 { критерий {Event=onSee; LookingAt=Barrel; SpeakingCharacter=Fred; speaker.BarrelsSeen=1 } ответ { Fred_Comment_Barrel1 // "Я слышал, что в этих бочках хранится огромное количество соуса маринара." } обратный вызов { speaker.BarrelsSeen += 1 } } rule Fred_LookingAt_Barrel_2 { критерий { Event=onSee; LookingAt=Barrel; SpeakingCharacter=Fred; speaker.BarrelsSeen=2 } ответ { Fred_Comment_Barrel2 // "Обидно, столько соуса вокруг – но нет никакой пасты!" } обратный вызов { speaker.BarrelsSeen += 1 } }

Мы также можем расширить понятие контекста, чтобы включить в него состояние мира за пределами собственных воспоминаний персонажей. Если мир имеет ассоциативный массив состояний, как у персонажей, то правила могут проверять эту информацию в своих критериях, как и любой другой бит контекста. Например, реплика персонажа в отношении рыночной площади в деревне меняется в зависимости от того, побывал ли здесь дракон: rule Jane_LookingAt_Square_NoDragon { критерий { Event=onSee; LookingAt=VillageSquare; global.DragonFreed=false; SpeakingCharacter=Jane }

Остроумие  299 ответ { Jane_LookingAt_Square_NoDragon_1, // "Что ж, похоже, рынок работает как всегда." } } rule Jane_LookingAt_Square_WithDragon { критерий { Event=onSee; LookingAt=VillageSquare; global.DragonFreed=true; SpeakingCharacter=Jane } ответ { Jane_LookingAt_Square_WithDragon_1, // "Ого, да здесь прибавилось огонька!" } }

Остроумие А как насчет персонажей, которые разговаривают друг с другом? Самый простой способ  – рассматривать каждую строку диалога как отдельное правило и событие. Когда один персонаж закончил говорить, он отправляет событие другому персонажу вместе с небольшим количеством контекста, указывающего, какой диалог только что завершился. rule Fred_LookingAt_Barrel_1 { критерий { Event=onSee; LookingAt=Barrel; SpeakingCharacter=Fred; speaker.BarrelsSeen=1 } ответ { Fred_Comment_Barrel1 // "Я слышал, что в этих бочках хранится огромное количество соуса маринара." } обратный вызов { speaker.BarrelsSeen += 1; SendFollowupEvent (target: Jane, event: onReply, PreviousLine: Fred_Comment_Barrel1); } } rule Jane_ReplyTo_Fred_Barrel1 { критерий { Event=onReply; SpeakingCharacter=Jane; PreviousLine=Fred_Comment_Barrel1 } ответ { Jane_ReplyTo_Fred_Barrel1 // "О нет, у меня аллергия на помидоры!" } обратный вызов { SendFollowupEvent (target: Fred, event: onReply, PreviousLine: Jane_ReplyTo_Fred_Barrel1);

300

 Глава 25. Диалог

} }

В приведенном выше примере функция SendFollowupEvent() принимает два основных параметра, а также опциональное число дополнительных параметров, которые становятся контекстом для следующего запроса. Ключевые элементы – это название события и представление о том, кому отправить событие. В этом случае событие переходит непосредственно к Джейн, которая затем проверяет свое правило, чтобы найти одно с критерием PreviousLine, соответствующим Fred_Comment_Barrel1. Если у нас есть несколько персонажей, мы также можем разработать концепцию вещания onReply для всех, кто находится поблизости – вместо target: Jane, это будет target: Anyone. Все соседние персонажи будут искать в своих базах данных какое-нибудь последующее замечание к Fred_Comment_Barrel1. Выигрывает тот, у кого наиболее конкретный ответ (то есть правило с наибольшим количеством критериев). Это полезно для ситуаций, когда вы не можете предсказать, какие персонажи будут присутствовать в каждой сцене, или для улучшения разнообразия, чтобы Джейн, Пьер или Ким могли ответить Фреду в любом прохождении. Мы можем скомпоновать разговоры, просто добавив правила в базу данных: чтобы предоставить Фреду ответ на ответ Джейн, ему просто нужно правило onReply с критерием PreviousLine=Jane_ReplyTo_Fred_Barrel1. Мы также могли бы использовать target: Self, чтобы разрезать длинный монолог на более короткие части.

Сложные ответы Чтобы увеличить разнообразие, мы можем превратить поле ответа в список строк и выбирать одну случайным образом каждый раз, когда правило соответствует заданному критерию: rule Fred_LookingAt_Bottle { критерий { Event=onSee; LookingAt=bottle; SpeakingCharacter=Fred; this.SaidOnce=false } ответ { Fred_Comment_Bottle1, // "Тут полно мусора." Fred_Comment_Bottle2, // "Ого, освежающий напиток!" } обратный вызов { this.saidOnce := true } }

Удобство  301 Поле ответа может также включать в себя политику воспроизведения, чтобы определить, произносится ли каждая строка только один раз или выбор выполняется циклически до тех пор, пока не будут произнесены все строки, после чего он начинается снова, и т. д. Циклическое поведение полезно для событий, которые встречаются неоднократно, таких как скрытые комментарии от ИИ: у вас может быть пять строк для события OnSawPlayer, но поскольку событие, надо полагать, возникнет в игре более пяти раз, вы захотите повторно использовать эти строки, после того как все они будут произнесены.

Контекст, управляемый данными Использование ассоциативного массива для хранения контекста позволяет обратным вызовам указывать любой ключ для обратной записи, даже создавая новые биты контекста без какой-либо поддержки программиста. Это означает, что каждый бит разговора может хранить произвольный фрагмент памяти, что обеспечивает большую гибкость для определения новых разговоров и запущенных гэгов. Например, сценарист может создать гэг, в котором каждый персонаж высказывается по поводу кошек, но по-разному – смотря по тому, сколько других персонажей уже что-то сказали. Если автор может изобрести и увеличить глобальный счетчик CatsSeen, просто упомянув его в обратном вызове правила, этот вид взаимодействия может быть полностью встроен в данные без необходимости программной поддержки. (Подробнее о разработке инструментов речь пойдет в главе 28.)

Удобство Наша основная цель здесь – гибкий, удобный, понятный и управляющий данными инструмент для написания сценариев произвольных сложных диалогов. Одно из преимуществ такой системы, основанной на правилах, заключается в том, что она группирует все возможные состояния, которые могут быть использованы для выбора строки диалога, в единую подборку фактов. С точки зрения программиста, информация, необходимая для того, чтобы решить, какая строка будет воспроизведена, может быть разбросана по множеству объектов тут и там. Например, управляемый кодом подход к воспроизведению реплики, когда персонаж находится в некоем городе и убил более семи троллей, ключевой персонаж жив, игрок зарядил волшебный меч по крайней мере четырьмя зарядами, а поблизости нет драконов, может выглядеть примерно так: if ( ( globals->GetCurMap()->name == "Town1" ) && ( globals->GetKilled(kENEMY_TROLL) > 7 ) &&

302 ( ( ( ( ( )

 Глава 25. Диалог savedstate->GetCharacter->Get("Sheriff")->m_isAlive ) && !savedstate->GetPlace("Town1")->m_isOnFire ) && player->GetInventory()->Get("MagicSword") != NULL ) && player->GetInventory()->Get("MagicSword")->m_Charges>= 4 ) && world->FindEntitiesNear(player->GetLoc(),kTYPE_DRAGON ).count() == 0 ) { … }

В этом случае возникает несколько неприятных моментов. Во-первых, контекст, доступный для диалога, плохо поддается обнаружению. Если бы вы не знали, что на объектах есть поле m_IsOnFire, то вы не подозревали бы и о том, что можете написать диалог на случай пожара в городе. Во-вторых, неочевидно то, как именно вы получаете информацию из всех этих источников: может существовать сложная цепочка элементов и функций между тем, где вы запускаете диалог, и информацией, необходимой для его выбора. В-третьих, информация может быть разбросана по многим различным классам, за которые ответственны разные программисты; в большом проекте невозможно отслеживать все состояния, которыми управляют другие разработчики. В-четвертых, гигантские условные блоки запутывают, запутываются и легко портятся – особенно если позже вы добавляете новые условия. Самое главное, что это делает сценариста полностью зависимым от поддержки программиста, стоит ему захотеть добавить любой диалог в игру – ведь эти данные можно обнаружить, только читая исходный код и заголовки. Поэтому либо сценарист должен одновременно уметь программировать, либо программисту приходится документировать каждый бит доступного контекста (и, конечно, такой документ быстро устаревает). В нашей реализации более полезно думать о мире как о едином наборе фактов. Мы можем представить каждый запрос как содержащий каждый бит доступной информации в словаре (разделенном на пространства имен, если хотите). Концептуально это выглядит так: CurrentMap : "Town1", EnemiesKilled_ : { kENEMY_TROLL : 9, kENEMY_SOLICITOR : 2, etc }, PlayerInventory : { MagicSword : { NumCharges : 5 }, MagicPants : {} }, World : { Town1 : { OnFire : false, TaxDay : true } }, NearbyEnemyCount : 0, // и так далее }

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

Структуры данных и их реализация  303 с тем, что он считает для себя опасным, то можете перейти к глобальному подсчету активных вражеских персонажей. Это расширяет возможности: скажем, вы добавили контекст TotalFruitPurchased для использования продавцом фруктов в деревне А, но если этот контекст доступен во всем мире, он может пригодиться и там: вдруг вам захочется, чтобы персонаж в городе Б решил прокомментировать растущую фруктовую империю своего кузена. Кроме того, сосредоточение всех контекстов в одном месте делает их до некоторой степени самодокументированными. Если вы построите диагностическую печать всего контекста, присоединенного к каждому запросу в диалоговой системе, то в дополнение к полезной функции отладки у вас появится удобный список контекстов, который всегда полон и актуален. В Left 4 Dead эта диагностика служила в качестве первичного индекса писателя. На практике включать каждый фрагмент состояния игровой вселенной в единый словарь для каждого возможного поиска – очень дорогостоящее решение с вычислительной точки зрения. Далее мы рассмотрим некоторые структуры данных и простые способы оптимизации, которые помогут сделать этот процесс управляемым.

Структуры данных и их реализация Перечислим ключевые структуры данных при использовании вышеописанного подхода: • Контекст  – это одна пара «ключ–значение», например PlayerHealth  : 72 или CurrentMap : Village5. По соображениям производительности стоит как можно больше использовать числовые значения, так что рассмотрите возможность внутренней замены строковых значений, таких как имена, уникальными символами или хэшами. • Запрос – это группа контекстов, собранных воедино в плоский вектор (или ассоциативный массив). Когда функция хочет запросить систему, она собирает контексты из нескольких мест: ○ сама функция  – например, UseMagicItem()  – может поставлять MagicItem : wand и ChargesLeft : 8; оба специфичны для этого фрагмента кода. Вероятно, у вас всегда будет некоторый контекст событий верхнего уровня, определяющий общую категорию реплики, которую нужно воспроизвести, например CastSpell, SeenEnemy, Injured и т. д.; ○ состояние говорящего персонажа, например его текущее состояние здоровья, на какой объект он смотрит и другие меняющиеся данные;

304

 Глава 25. Диалог

○ память персонажа, включая все записи из предыдущих правил. Например, информация о том, сколько раз игрок исцелял этого персонажа или сколько раз он комментировал погоду в каком-либо гэге; ○ глобальное состояние: какая карта загружена, расположение других персонажей, любые применяемые в настоящий момент эффекты. • Критерий – это единичное сравнение значения контекста, например PlayerHealth>50 или NearestObject=Barrel. • Правило – список критериев. Если все они верны, то правило подходит. Одновременно могут подходить несколько правил; тогда вы выбираете наиболее конкретное (с наибольшим количеством критериев). Каждое правило должно иметь по меньшей мере один критерий для этой функции события верхнего уровня – как в организационных целях, так и для оптимизации, о которой речь пойдет ниже. • Ответ – это результат, когда правило соответствует заданному критерию. В том числе это могут быть: ○ реплика (или анимация, или что-то еще) для воспроизведения; ○ обратные записи в память персонажа или состояние мира; ○ последующие события для отправки их другим персонажам, чтобы они дали свой ответ. Построение запроса Параметры функции Character.FindDialog(Event=OnHit, Attacker="Knight", Damage=12.4, … ) Событие

"OnHit"

Атакующий

"Knight"

Урон

12.4 + Характеристики персонажа

Имя

"Odo"

Здоровье

78

Ближайший_союзник

"Wital"

Текущее_оружие

"Mace" +

Структуры данных и их реализация  305 Память персонажа Замечания_о_погоде

4

Уничтожено_саксов

7 + Глобальный контекст

Текущая_карта

"Hastings"

Драконов_осталось

0

Квест5_выполнен

false

При наличии этих структур данных выбор строки диалогового окна по существу сводится к следующему: 1. Создайте запрос (ассоциативный массив контекстов), объединив контекст функции, состояние персонажа, память персонажа, глобальный контекст и все прочее. 2. Для каждого правила в базе данных: ○ проверьте каждый критерий. Если какой-либо из них не подходит, пропустите это правило. ○ если все критерии подошли, добавьте это правило в список соответствующих правил. 3. Выберите правило с наибольшим количеством баллов (например, правило с наибольшим количеством критериев). Простейший алгоритм – петля по каждому критерию в каждом правиле – работает за квадратичное время1, но несколько оптимизаций могут его существенно улучшить. Во-первых, отсортируйте критерии в каждом правиле и контексты в каждом запросе по их ключам. Это позволяет заменить шаг произвольного доступа каждого критерия поиском соответствующего факта в запросе. С помощью отсортированных ключей можно пропускать указатели по вектору запроса и вектору критерия правила параллельно, отклоняя их сразу же после того, как какой-либо критерий не совпал. Критерии правил могут быть отсортированы по шагам автономной сборки. Во-вторых, объединение нескольких источников данных (вызов функции, состояние персонажа, состояние мира) в один вектор запроса не обязательно должно выполняться буквально. Вы можете сохранить каждый из этих источников контекста в качестве отдельного вектора и на всех про1

Критерий временной сложности алгоритма, в данном случае O(n2). – Прим. перев.

306

 Глава 25. Диалог

верить критерии правила. Если вы сортируете свои контексты, как упоминалось выше, то можете поддерживать отдельные указатели индекса в каждом массиве контекстов и перемещать их все параллельно (рис. 25.2). Состояние персонажа

Критерий правила

Рис. 25.2

В-третьих, можно разбить базу данных правил иерархически, по критериям высокого уровня; по сути, это вложенная таблица таблиц. Например, если каждое правило в вашей системе имеет критерий SpeakingCharacter, вы можете сохранить таблицу по каждому возможному имени говорящего лишь до правил, относящихся к этому говорящему, и таким образом значительно сократить количество проверяемых правил. Применяя это рекурсивно к другим критериям (таким как событие и пр.), вы можете сократить количество правил, которые действительно должны проверяться достаточно много раз. (Теоретически можно довести это до логического завершения и представить всю базу данных в виде интервального дерева с одним измерением для каждого возможного критерия – но это гораздо сложнее и не стоит таких усилий.) В-четвертых, если ваша игра разделена на регионы или уровни и некоторые правила применимы только на определенных уровнях, вы можете хранить эти правила внутри соответствующих уровней, как и любой другой актив, добавляя их в базу данных при загрузке уровня и удаляя впоследствии. Это опять же снизит количество правил, которые необходимо протестировать, а также объем занимаемой памяти. В-пятых, отсортируйте правила в каждом подразделении базы данных по количеству имеющихся у них критериев в порядке убывания. После того как будет найдено первое правило с максимально высоким баллом, больше не будет необходимости тестировать еще какие-либо правила, которые могли бы привести только к более низкому баллу.

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

Авторский инструмент  307 из возможностей заключается в написании правил с использованием синтаксиса, аналогичного тому, который показан в примерах выше. Это просто, но со временем, когда под вашим контролем находится несколько сотен правил, дело усложняется. Другой способ заключается в использовании электронных таблиц и экспорта из этого актива в контент, который может воспринять игрок. Преимущество такого подхода в том, что электронные таблицы – привычное средство; вы можете использовать инструменты сортировки таблицы, чтобы сразу увидеть все строки, написанные для данного персонажа, и быстро добавить дополнительные биты диалогового окна, вставив новые строки в электронную таблицу. Недостаток же в том, что вам потребуется отдельный столбец в электронной таблице для каждого возможного критерия, и система становится громоздкой, если у вас много специальных критериев для запуска гэгов и  т.  п. Присвоение контекстных обратных ссылок (RunningGag+=1) неудобно по той же причине. Другая возможность заключается в том, чтобы хранить правила в какой-то реляционной базе данных и писать интерфейс, который позволяет вам создавать данные, искать их и управлять ими. Campo Santo Games весьма эффективно сделала это для Firewatch2, создав единую базу данных, не только управляющую правилами диалогов, но и отслеживающую информацию о локализации, статусе записи голоса за кадром и следящую за файлами содержимого. В данном случае недостаток в том, что вам самим придется написать такой инструмент. Как и в случае с электронной таблицей, возникает вопрос, как вы будете храните массив критериев: либо на каждый возможный критерий отводится один столбец в базе данных (и тогда возникают те же сложности, что и в электронной таблице), либо у вас есть текстовое поле, содержащее все критерии, например { Event=onSee; LookingAt=VillageSquare; global.DragonFreed=false; SpeakingCharacter=–Jane}, и в этом случае поиск становится более сложным. Другой интересный подход заключается в том, чтобы рассматривать правила как все более конкретные исключения из более ранних правил и использовать язык сценариев, основанный на этой идее. Например, язык разработки текстового приключения Inform 7 использует для этого естественный синтаксис: Правила поведения кошки – свод правил, соблюдаемых объектом. Правило поведения кошки, когда кошка касается кошачьей мяты, говорит: "кошка резвится с кошачьей мятой, пока от нее ничего не останется"; правило сработало, если кошачья мята кончилась. Правило поведения кошки, когда кошка касается сливок, говорит: "кошка лакает сливки"; правило сработало, если сливки кончились. 2

William Armstrong, Patrick Ewing. Do you copy? The dialog system in Firewatch. Game Developers’ Conference, San Francisco, CA. March, 2017. (Лекция о диалоговой системе в Firewatch. Доступна онлайн на англ. яз.: https://www.gdcvault.com/play/1024000/Do-You-Copy-Dialog-System. – Прим. перев.)

308

 Глава 25. Диалог

Правило поведения кошки, когда кошка касается клубка шерсти, говорит "кошка разматывает клубок и спутывает шерсть"; правило сработало, если клубок размотан.

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

Заключение Основные наши выводы таковы: 1. Все должно быть просто. Описанный выше аппарат – это всего лишь механизм согласования правил (или продукционная модель представления знаний (production system), на языке компьютерных наук). Каждая функция, представленная здесь,  – маленький шаг в направлении основной идеи. 2. Запросы – это просто списки фактов, которые рассматриваются как словарь ключей–значений. 3. Каждый запрос в систему содержит как можно больше фактов о мире. Передача всего этого состояния в базу данных позволяет авторам добавлять новые правила для новых конкретных обстоятельств, не требуя от программистов включать дополнительные данные в запрос. 4. Ответы способны инициировать последующие запросы к другим персонажам для продолжения беседы. 5. У ответов есть способ записать состояние обратно либо в персонажей, либо в глобальную память. 6. Имена контекста являются произвольными; код определит некоторые из них, но авторы должны иметь возможность изобретать новые, просто записывая неиспользуемое имя из обратного вызова ответа. 7. Правила аддитивны: вы можете начать с нескольких общих строк OnBark, которые не имеют специальных критериев, а затем добавлять все более конкретные. 8. Поскольку правила являются аддитивными, вы можете добавлять новых персонажей, сценарии, квесты и т. д. к игре, просто загрузив дополнительные правила в базу данных. Но самое главное – пусть все будет просто!

Часть

V Ресурсы

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

Глава

26 Таро как процедурное повествование Кэт Мэннинг

Легко представить себе процедурную генерацию как процесс, который происходит в цифровом виде, опосредованный алгоритмом, отображающий результаты на экране; и в этой книге полно примеров создания динамического, богатого процедурно генерируемого цифрового контента. Я считаю, что один из богатейших инструментов процедурного повествования вовсе не цифровой, а аналоговый – и существует в разных вариантах уже много веков. Называется он таро. В современном англоязычном мире таро, возможно, самый известный из всех видов карточного гадания. Читатель использует 78-карточную колоду, состоящую из 22 карт старших арканов и 56 карт младших арканов, чтобы вытянуть от 1 до 10 случайных карт для ответа на конкретный вопрос, поставленный кверентом1 (рис.  26.1). Каждая карта в колоде имеет несколько ассоциативных значений, и читатель определяет, какие из них наиболее релевантны для кверента и остальной части расклада, посредством ассоциативной конструкции. Таро, таким образом, является процедурным алгоритмом: карты перемешиваются и размещаются в соответствии с выбранной читателем системой. Затем оцениваются общие результаты и значения отдельных карт выверяются в соответствии с определенными паттернами, позволяя составить окончательное впечатление. В итоге рождается интерпретация – возможно, довольно смутная, а может быть и четкая. Это зависит от ряда факторов: насколько хорошо читатель знаком с таро в целом и конкретной колодой в частности; каковы отношения между толкователем и кверентом и насколько четко сформулирован поставленный вопрос. Независимо от того, верите ли вы в предсказательную силу таро, это одновременно и быстрый метод создания атмосферы интимности, и – в силу тех же причин  – мощный процедурный генератор. Не существует «объ1

Кверент (querent) – «тот, кто ищет». Так принято называть тех, кто задает вопросы оракулу. – Прим. перев.

Заключение  311 ективно правильного» прочтения конкретного расклада таро: кверент и читатель сами решают, на каком этапе они остановятся и удовлетворятся интерпретацией. Толкователи таро могут еще раз разложить карты для ясности или достать дополнительную уточняющую карту, если предыдущий результат показался кверенту неоднозначным или неудовлетворительным. Количество карт предоставляет ошеломляющие возможности: существует 4,675 × 10^21 возможных результатов только для 10-карточного разложения «Кельтский крест». И наряду с этим таро удается избежать проблемы одинаковых «мисок овсянки», которую Кейт Комптон освещала в главе 1.

Рис. 26.1. Выбор некоторых карт старших арканов из колоды Райдера-Уэйта-Смита

Это связано с несколькими аспектами, одни из которых будут присутствовать в цифровой процедурной генерации, а другие будет сложно или даже невозможно реализовать. Смысл расклада таро кроется в сложной и многослойной ассоциативной структуре пересекающихся значений и зависит от восприятия этой структуры толкователем. Традиционная колода таро содержит несколько пересекающихся таксономий; колода делится на старшие и младшие арканы, а последняя подразделяется на масти. Масти включают пронумерованные и фигурные карты (в таро их могут называть так же «придворными»). Даже в рамках этих всеобъемлющих таксономий встречаются небольшие, но при этом повествовательно значимые вариации: масть Денариев представлена в некоторых колодах в виде монет или дисков, а Жезлы иногда изображаются как посох или дубинка. В оформлении фигурных карт подчас наблюдается самое большое разнообразие: классическая версия – Паж / Рыцарь / Королева / Король, но встречается и набор Принц / Принцесса / Королева / Король; сделано это якобы для того, чтобы добиться «гендерного равновесия». Есть такие варианты фигурных карт, такие как Сын / Дочь / Мать / Отец (в колоде The Wild Unknown) и Амазонка / Сирена / Ведьма / Карга (в колоде The Dark Goddess).

312

 Глава 26. Таро как процедурное повествование

Выразительный диапазон отдельной колоды добавляет еще один слой смысла: некоторые колоды привносят определенные оттенки интерпретации карт2. Масти в колодах тоже бывают разные: скажем, в The Slow Holler есть ветви, камни, ножи и сосуды; в PoMo – бутылки, счета, телевизоры и пистолеты (остросоциально!). В некоторых случаях появляются дополнительные масти; так, например, в The Fifth Dimension к четырем традиционным элементам добавлен «эфир», а в The Silicon Dawn присутствует дополнительная масть «Бездна». Таро Тота Алистера Кроули добавляет карту старших арканов – карту Эона, чтобы представить новую эру человечества. Слова и образы карт могут помочь читателям приблизиться к потенциальным интерпретациям или отойти от них: таро Тота Кроули и основанные на нем колоды включают в себя односложные подсказки, напечатанные в нижней части их младших арканов, наталкивая читателей и кверентов на те или иные ассоциации, в то время как другие колоды не вербализуют ассоциативный ряд (рис. 26.2). Выразительный диапазон колоды, хотя и направляемый создателями, также зависит от реакции толкователя. Хотя колода Райдера-Уэйта-Смита и самая известная, их существуют сотни вариантов, и толкователи выбирают колоду или колоды, которые, по их мнению, лучше всего подходят для их ситуации. Колода, в которой нет или очень мало человеческих фигур, кому-то может показаться неподходящей для вопросов о романтике и интимности, а кто-то, напротив, оценит отсутствие четких образов. Каждый интерпретатор выстраивает свои ассоциации с образами и картами и имеет свою собственную таксономию, основанную на навыках, предварительных знаниях и индивидуальной практике. Например, тот, кто не знает разницы между картами Пажа и Рыцаря, может самостоятельно оценить каждую карту и разработать свой собственный шаблон, который будет управлять интерпретационными методами. Поскольку таро предоставляет значительную свободу, оно столь популярно и среди толкователей, и среди кверентов. Чтобы подробно проиллюстрировать, как таро создает структуру почти бесконечных возможностей, каждая из которых значима, уникальна и приобретает личную окраску, я собираюсь несколько раз погадать, используя свои собственные ассоциативные структуры, а затем изучить эти методы с точки зрения нарративного дизайна. Другие толкователи таро могут найти другие ассоциации, что указывает на различную конструкцию значений, которую предлагает этот метод повествования. Для того чтобы говорить о широкой вариативности таро, я сначала выберу не только количество вытянутых карт, но и тип расклада и, следовательно, диапазон возможностей повествования. Расклад таро – это геометрическая композиция из определенного числа карт, которым присваивают определенные 2

Вот отличная статья о выразительных диапазонах колод таро в блоге Эмили Шорт: https://emshort.

blog/2018/05/03/favorite-tarot-decks/#more-38151.

Заключение  313 значения, такие как «надежды и страхи» или «совет» – в зависимости от положения карт. Расклад с одной картой – это самый простой и грубый инструмент, лучше всего подходящий для фокусировки и кратких вспышек озарения. Мне выпала «Справедливость» в ответ на вопрос, как будет проходить предстоящая встреча по проекту; это может намекать на необходимость справедливых решений, ясности и открытости в разговоре, а также предупреждать о том, что от совещания я получу строго по заслугам.

Рис. 26.2. Интерпретация четверки Жезлов. Слева направо: марсельское таро, таро Тота, таро Райдера-Уэйта и Golden Thread

314

 Глава 26. Таро как процедурное повествование

Тройной расклад карт дает немного больше контекста. Расклад «прошлое-настоящее-будущее» открывает вид в перспективе: что произошло в прошлом, чтобы привести кверента к его нынешнему состоянию, какова ситуация в данный момент и чего стоит ожидать. Расклад «ситуация-результат-действие» предоставляет кверенту несколько большую свободу выбора, предлагая действие, которое изменит текущую ситуацию и результат, если будет предпринято; нет смысла в самом действии, есть только путь, который ведет вперед от средней карты. Оба этих расклада предлагают читателю построить линейную повествовательную прогрессию. 10-карточные расклады предлагают меньший линейный импульс в направлении вперед, чем трехкарточные расклады, но первый вариант обеспечивает рассмотрение ситуации в контексте. Здесь обычный расклад «прошлое-настоящее-будущее» пересекается (рис. 26.3) с картой «ситуация», которая указывает на усложняющий фактор или новую информацию. Подсознательное, надежды и страхи могут казаться похожими, но «подсознательное» больше относится к текущему умонастроению кверента, в то время как «надежды и страхи» проецируют подсознательное на будущее и таким образом связывают его с центральной частью креста3. 10-карточные расклады лучше всего подходят для сложных задач с различными факторами, влияющими на кверента, однако могут перегрузить начинающего толкователя или кверента информацией, особенно если в раскладе не наблюдается нескольких четких ассоциаций. Вводя ряд дополнительных карт, которые не являются хронологическими, расклад «Кельтский Крест» создает больше зацепок как для кверента, так и для толкователя, обрисовывая связи и выписывая более яркую и индивидуальную картину. Сложность чтения возрастает по мере того, как вводится все больше карт, но из-за ассоциативных структур внутри колоды Таро и в пределах расклада возможно больше путей для возникновения смысла. Эти пути не всегда будут уместны для других интерпретаций, и некоторые из них будут противоречить друг другу, но только от толкователя и кверента зависит решение, какие структуры вывести на поверхность, поскольку они собирают воедино возможные ассоциации. Начнем с довольно простого трехкарточного расклада (рис. 26.4) и изучим «ситуацию-действие-результат». Я задам от лица кверента вопрос общего характера: «Следует ли мне искать безопасную и стабильную работу или выбрать путь более рискованный, но и более интересный и творческий?» Поднимая достаточно конкретный вопрос, мы существенно ограничиваем пространство повествовательных возможностей, что дает возможность сосредоточиться на построении повествования, которое несет 3

Некоторые толкователи сопоставляют «желание» и «подсознание» с понятиями «вверху» и «внизу» соответственно – имеется в виду как положение карт, так и стремительный характер борьбы кверента, контрастирующий с тем, что может быть скрыто в глубинах его разума. Другие толкователи включают свой образ и ресурсы; третьи используют длинную ось креста, чтобы выстроить проекцию через 3, 6, 9 и 12 месяцев после события.

Заключение  315 больше личного смысла для кверента. Но даже в пределах этого более узкого пространства возможностей мы сталкиваемся с разными вариациями: кверент может оказаться в ситуации, когда практическая работа необходима для оплаты аренды, займов или медицинских счетов; у него также могут быть ресурсы и связи, которые могут его подстраховать. Толкователь не всегда может осознавать ситуацию, в которой находится спрашивающий, и, хотя опытный интерпретатор улавливает надежды или страхи собеседника, нельзя всегда рассчитывать на эти интуитивные догадки в процессе толкования4.

Результат Желание

Надежды и Страхи

Ситуация

Прошлое

Настоящее

Будущее

Окружение

Подсознание Совет Рис. 26.3. Некоторые толкователи инвертируют порядок длинного Креста, а некоторые используют несколько иные метки карт для описания взаимодействия между внутренним и внешним состояниями кверента 4

В ряде случаев кверент не задает вопрос вербально, а сосредотачивается на нем; тогда толкователю остается лишь искать более широкие повествовательные паттерны.

316

 Глава 26. Таро как процедурное повествование

Рис. 26.4. Расклад из трех карт таро

Когда карты разыграны, у нас появляется перевернутая Двойка Мечей в «ситуации», Десятка Кубков – в «действии» и Колесо Фортуны – в «результате». В данный момент наиболее релевантным аспектом является пересечение смыслов. Карты могут быть интерпретированы индивидуально, а затем, чтобы обеспечить смысл толкования, – в многократно перекрывающейся семантической сети. Двойка Мечей в настоящем могла бы означать конфликты в зачатке, раздвоенный путь или двойные режущие лезвия ножниц; в перевернутом положении это предполагает трудное решение, навязанное извне. Учитывая заданный вопрос, кверент, по-видимому, не определился в отношении того, какой путь выбрать в среднесрочной и долгосрочной перспективе, чтобы улучшить качество жизни. Мечи – это масть воздуха и разума, взвешенных рациональных решений. Наличие Кубков в карте «действий» предполагает отход от рациональности и переход к эмоциональным и интуитивным качествам водных мастей, доверие своему сердцу и желудку. Десятка этой масти, в частности, предполагает радость и удовлетворение, вызванные гармонией, общностью, реальной связью после ложного потворства своим желаниям. Затем мы переходим к Колесу Фортуны в исходном положении. Одно только колесо говорит о неизбежности перемен, о циклах, неподвластных человеку, о движении вперед. Это может означать как прогресс, так и хаос. Вместо того чтобы четко сказать, какой из двух карьерных путей следует избрать, это пространство возможностей предлагает принять противоречия и смириться с тем, что информации никогда не бывает достаточно для единственно верного выбора. Если рассматривать всю комбинацию, толкование предполагает, что выбрать между двумя вариантами трудно и что движение по пути сердца, сулящему радости творчества и эмоциональное удовлетворение, обеспечит третий вариант с его собственным комплексом радостей и проблем. Кверент, вероятно, имеет хорошее представление о том, какой путь считать «путем сердца», и нет необходимости склонять ее к тому или иному

Заключение  317 варианту: это закрыло бы определенные возможности толкования, которое допускает двусмысленность ассоциативной структуры в целом. Итак, как же мне, толкующей колоду, собрать ассоциативные смысловые структуры карт так, чтобы получить связную и содержательную историю, помимо простого учета того факта, что «Двойка Мечей означает трудное решение» и т. д.? Ответ заключается в пересечении таксономий значения и символизма, а также в способности читать их слоями, а не выбирать только один, на котором можно сфокусироваться. Отдельные значения карт на самом деле являются только одной таксономией – возможно, самой важной, но без учета других таксономий, таких как число, младшие и старшие арканы, композиция и способ их наложения; при этом множество интересных и личных значений может быть утрачено. Первое, на что я обращаю внимание, – это наличие мастей в чтении: доминирует ли оно? Явное доминирование, например, Мечей, может предполагать, что ситуацией управляют разум и логика, а также предупреждать о ригидности; Денарии предполагают, что материальная сторона дела очень важна, что такие проблемы, как оплата счетов, аренды и экономические отношения для кверента первичны или должны им учитываться. У старших арканов также есть своя сфера; это наводит на мысль о глубоком самосознании и духовном развитии кверента – вероятно, что-то в этой ситуации обеспечит его личностный рост. Имеет значение и прогрессия: масти таро восходят по порядку от Пентаклей к Кубкам, от Мечей к Жезлам, и поэтому прогрессия или регрессия, особенно при линейном чтении трех карт, может давать дополнительную информацию. Здесь мы переходим от Мечей к Кубкам, чувствуя, что «нижняя» масть на самом деле представляет прогресс – движение назад на самом деле может быть движением вперед. Нас просят пересмотреть, удвоить наши предположения. Число также играет здесь свою роль. В то время как Кубки – более низкая масть в иерархии, чем Мечи, десятка – более значимая карта, чем двойка: мы видим две пересекающиеся таксономии, противоположные друг другу. Десятки в младших арканах означают кульминацию цикла; в мастях Кубков и Монет они предполагают более глубокое воссоединение после борьбы, в то время как в Жезлах и Мечах подразумевают бремя слишком тяжелое, чтобы его нести. Хотя значение варьируется в зависимости от каждой отдельной карты, каждая номерная карта в младшем аркане разделяет общую повествовательную позицию с другой. Переход от десятки, завершающей цикл, к карте вечных циклов в старших арканах предполагает движение прогрессии вверх в числовом выражении. В этом случае Кубки как низшая масть переписываются линейной нумерологической прогрессией от двух до десяти к старшему аркану и от перевернутого к вертикальному: это толкование все еще значимо, но на него накладываются другие. Я лично склонна отдавать предпочтение числовой прогрессии по сравнению с прогрессией мастей, хотя другие толковате-

318

 Глава 26. Таро как процедурное повествование

ли могут все прочитывать иначе, и тогда вся комбинация приобретет для них иную окраску. Сложность толкования обусловлена множественным пересечением категорий: они не конфликтуют и не сворачиваются в одну доминирующую линейную прогрессию. Даже при толковании, когда все таксономии Таро аккуратно складываются в одном направлении, это само по себе было бы заметно и выступало бы еще одним фрагментом данных. Интересно думать о позиционировании повествования и о том, как легко изменить значение расклада таро с якобы небольшими вариантами. Что произойдет, если мы поменяем карты действий и результатов? Ощущение, что наш кверент стоит перед трудным выбором, сохраняется, но теперь ему предлагается подчиниться капризам фортуны, принять, что оба пути сулят свои трудности – или, возможно, выбрать более рискованный, более сложный из них! Но тогда результатом будет Десятка Кубков – чувство, что риск обеспечит больше эмоций и энтузиазма. Если первое толкование призывает прислушаться к своему сердцу, чтобы найти новый и неожиданный путь, второе предлагает выбрать хаос, подсказывая, что результат будет эмоционально удовлетворительным. Элементы непредсказуемости и привязанности остаются, но повествование, которое мы ведем, значительно смещается, хотя в раскладе присутствуют те же самые карты. Менее значима с точки зрения вариаций, хотя все-таки важна, смена положения карты с вертикального на перевернутое. Колесо Фортуны – единственная карта в колоде Таро, которую нельзя прочесть вертикально или перевернутой, поэтому мы перевернем Двойку Мечей в вертикальное положение. При этом у нас возникает ощущение, что выбор навязан скорее изнутри, чем извне: ситуация нашего кверента существенно не изменилась, но наше суждение о ней вполне может измениться. Кверент может рассматривать решение скорее как проявление собственной воли, нежели результат давления извне, навязывающий что-то иное. Это малозаметный нюанс, но он может повлиять на то, как кверент и толкователь оценивают причину сложившейся ситуации. Наибольшая вариативность возможна, когда одна из начальных трех карт заменяется совершенно новой; это меняет не только смысл данной позиции, но и весь расклад. Давайте заменим Семерку Мечей на Колесо Фортуны: в этом случае восходящее продвижение потеряно и наблюдается перевес Мечей. Это предполагает, что, несмотря на попытку задействовать эмоциональную сторону, в ситуации нашего кверента будут доминировать бесстрастное рассуждение и тщательно взвешенный выбор. Семерка Мечей означает хитрость, коварство и предательство; идя в ответ на Десятку Кубков, она предлагает уклониться от открытого эмоционирования в сторону самозащиты, возможно, даже яростной. Какой бы путь ни выбрал кверент, Семерка Мечей в этом положении указывает на необходимость быть осторожным, осмотрительным и на возможность предательства: отход от третьего, захватывающего пути, который ранее знаменовало Колесо Фортуны.

Заключение  319 Это свойство интерпретации позволяет таро избежать проблемы с «мисками овсянки»: замена даже одной карты вынуждает толкователя пересматривать множественные аспекты, не давая при этом конкретных ответов. От толкователя зависит заполнение пробелов в информации и, таким образом, представление наиболее значимых результатов процедурной генерации. Некоторые отдельные аспекты таро могут быть продублированы в цифровом виде или в повествовательном дизайне. Колода Таро The Golden Thread имеет сопутствующее приложение, которое, по-видимому, является одной из самых популярных цифровых колод и позволяет читателям регистрировать ежедневные карты, расклады и настроения, связанные с аналоговыми и цифровыми показаниями, из предварительно выбранного списка. На момент написания этой статьи Эмили Шорт (Emily Short) находится в процессе разработки Tarot of the Parrigues, которое в настоящее время общедоступно в черновом варианте5. Если не считать построения аллюзивных многослойных структур и их осмысления таким образом, чтобы толкователь мог использовать свои личные ассоциации, таро трудно перевести непосредственно в цифровую среду, поскольку процесс толкования часто зависит от движения вперед и назад (между толкователем, кверентом и картами) – а это трудно воспроизвести цифровым способом в реальном времени. Зато таро может предложить нарративным дизайнерам мощную модель для создания значимых уникальных историй, с глубоким личным осмыслением. Используя множество сосуществующих смыслов и символов и не настаивая на том, что один из них приоритетен над другим, таро предлагает толкователям выбрать один из нескольких способов интерпретации, чтобы построить связное значение. Эта повествовательная конструкция заметно интереснее, чем неструктурированный результат гадания, поскольку обеспечивает личную вовлеченность и толкование с учетом широкого спектра возможностей.

5

Проект в его нынешнем виде, по состоянию на момент написания этой статьи, представлен здесь:

https://emshort.blog/2018/06/26/parrigues-tarot-draft/.

Глава

27 Что можно делать с твиттер-ботами Джордж Бакенгэм

Твиттер, в отличие от большинства других социальных сетей, имеет богатую историю открытых автоматизированных учетных записей. Любая платформа социальных сетей значительного размера располагает такими аккаунтами – с них идет спам. Но в Твиттере также есть автоматизированные учетные записи, размещающие генерируемые стихи, картины, художественную литературу и многое другое, что нелегко классифицировать. Основная причина кроется в том, что Твиттер достаточно рано начал побуждать разработчиков работать с его API, так что политика разрешения автоматизированных учетных записей сказалась на дальнейшем развитии платформы. Но отчасти дело и в самом формате Твиттера. Каждый твит – это мелочь, вперемешку с временной шкалой. Легче создать что-то значимое и интересное, если это короткий текст и его могут усилить окружающие его твиты. Один из жанров генерируемого текста, удивительно хорошо подходящий для твитов, – миропостроение. В то время как в играх генеративное построение мира часто сильно связано с созданием сложной самосогласованной модели мира, твиттер-боты могут просто штамповать короткие фрагменты запоминающегося описания. Скажем, @neighbour_civs каждые три часа пишет твиты, содержащие краткое описание неких сообществ. Например: «Племя Ящеров Пустошей. Один их великий поэт сочинил эпос о Великом Фермере. Они красят свои лица красной пастой». Или: «Общество “Красный Рог”. Эти люди считают, что эпоха нового времени началась с разрушения Экстравагантной Башни и завершилась исчезновением Гусиного Города. Их длинные корабли можно узнать по зеленым парусам».

Заключение  321 Чем больше деталей вы даете, тем труднее вам работать, чтобы сохранять последовательность высказываний. Каждый твит содержит только название племени и две детали, так что вероятность конфликта невысока. Написанное запоминается и дает зацепки, которые позволяют вам нафантазировать целый мир. Кто такой Великий Фермер? Почему исчез Гусиный Город? Каждый твит автономен  – всем им свойственно интонационное единство, но не оговаривается, что все описываемые места находятся в одном и том же мире. Точно так же можно использовать небольшие фрагменты миропостроения как часть более крупной системы, а твиты могут существовать как часть более крупного проекта. Так, @unknowniliar_city выдает себя за путеводитель, выдавая нечто подобное: «Не пропустите “Дадо”, наш любимый ресторан лорхоуской кухни! https://unfamiliar.city/city/150001778968» Или: «“Извините” на ийжтарском языке звучит так: shachrukthai (ɬɒcɻʌkθe). https://unfamiliar.city/city/150001422085» По ссылкам вы можете пройти на страницу с кратким изложением полезных фактов о рассматриваемом городе. По ссылке из первого твита можно найти некоторые основные слова и фразы («Привет – redou», «Спасибо – derhou», «Извините – bouboubou»), текущий обменный курс («1 доллар США = 4,28 ладуду»), прогноз погоды на неделю (покуда я пишу эту статью, сайт прогнозирует снегопад на все семь дней!) и некоторые туристические советы. В нашем случае – более полное описание ресторана из твита: «Основатель “Дадо” Роерхоурх Бэтх придал лорхоуской кухне современную стилистику, оставаясь верным региональным традициям. Этот потрясающий стильный зал из камня и дерева на третьем этаже завоевал всемирную известность. Обязательно попробуйте бфугу – легкий суп, приготовленный с роубу и овощем бобагу». Внутренняя согласованность впечатляет: история названия ресторана «Дадо», изложенная в другом месте, сообщает, что это слово означает «вкусно». Такие детали технически существуют за пределами мира Твиттера – но настолько же, насколько может быть интересным канал реального человека, который ссылается на множество интересных вещей, твиты @unknown_city ценны как портал и способ раскрыть богатство генератора, наполняющего сайт unfamiliar.city.

 Глава 27. Что можно делать с твиттер-ботами

322

Помимо текста и ссылок на внешний контент твиты могут содержать встроенные изображения и видео. Мой бот @soft_landscapes каждые шесть часов генерирует горный пейзаж в пастельных тонах. Каждое изображение содержит ряд горных вершин, уходящих в туман. Твиты работают во многом так же, как @unknown_city или @neighbour_civs – каждый твит существует в своем собственном прекрасном изолированном мире, вызывая размышления о том, что лежит за рамками кадра. Притом что результаты работы бота представлены как самостоятельные произведения, они оцениваются скорее как непрерывный ряд – выборка из интересного вероятностного пространства возможных ландшафтов. Итак, это вероятностное пространство сосредоточено на области, которая генерирует нежные пастельные пейзажи – но включает в себя и более мелкие, относительно редкие вкрапления темных или ярких частей пейзажа. Иногда туман настолько силен, что гор не видно. Обычно изображение, на котором представлен лишь размытый грязно-белый фон, является ошибкой процедурной генерации; здесь же общий контекст (пейзажная серия на аккаунте, который, судя по названию, генерирует ландшафты) заставляет вас предположить: «Ну, здесь туман просто очень сильный». Кстати, примерно то же я видел перед собой, поднимаясь на вершину настоящей горы. Можно сосредоточиться на захвате изображений, даже если создание бота ограничено исключительно текстом. Одним из вдохновляющих примеров для меня послужил бот @tiny_star_fields, который создает примерно такие твиты:

*.

. ✺ ✹

✫ ✺

⋆ ✧ ✦. * ✺ .· ✺ · *

Он прекрасен – как своим интересом к символам, так и тем, насколько эффектно создаются из них виды ночного неба. Я смотрю на 180 символов юникода в разных сочетаниях и думаю о том, как сижу у костра в пустыне, гляжу в бескрайнее небо и, впервые рассматривая Млечный Путь, любуюсь звездами, которые мне не видны из дома. В обширных полях юникода живут и смайлики. Каждые несколько часов @skeletonsday публикует скелет-эмодзи, относящийся к данному дню. Каждый твит – это всего лишь несколько символов, но этого достаточно,

Заключение  323 чтобы построить целое повествование! Скелли говорит нет лягушке. Скелли отправляется в Морской мир. Скелли обнаруживает инопланетян. Насколько же жизнь Скелли полна приключений! И все это передается в нескольких образах – с помощью всего того обширного контекста, который мы применяем к эмодзи. Все боты, которые мы рассматривали до сих пор, публикуют поток независимых твитов и поэтому предполагают непрерывный, бесконечный процесс. Безусловно, интересно работать с формой искусства, столь подходящей для бесконечного ряда; но есть очевидные недостатки при попытке организовать традиционное повествование с началом, серединой и концовкой. Комплексное отслеживание состояния, необходимое для формирования связной истории с использованием генеративных методов, может быть довольно сложным – но одна из лучших вещей в создании твиттер-ботов заключается в том, что они представляют собой небольшие проекты величиною в байт, которые можно быстро создать и выпустить. Форма здесь нужна обязательно такая, в которой большая часть созданного контента пропущена и большинство зрителей столкнутся с ней на полпути. В результате всех этих ограничений твиттер-боты, которые лучше всего передают повествование, создают прежде всего настроение, предоставляя интересные детали, а затем позволяя работе расширяться в сознании зрителя. В рамках этих ограничений @ArpObservatory выделяется тем, что эффективно передает конкретное повествование. Это твиттер-аккаунт астронома из чилийской пустыни Атакама, который сообщает: «В июле мы начали получать звуковые сигналы из-за пределов Солнечной системы и с тех пор их изучаем». Примерно каждые полчаса он выдает сгенерированные диаграммы (осциллограммы, кривые частотной характеристики и  т.  д.), ссылки на фактическое сгенерированное аудио (размещенное на SoundCloud), комментарии о характере полученных сигналов (например, «за последние 40 минут мы получили три подтвержденных аудиовсплеска и еще три, по-видимому, будут подтверждены в ближайшее время»), наблюдения за дикой природой («я только что наблюдал за ящерицей, греющейся на соляной равнине») и просто личные переживания («когда смотришь на ясное ночное небо, каждая звезда кажется такой близкой!»). Если рассматривать канал в целом, повторения становятся явными, и грамматические конструкции, используемые для каждой части, проступают со всей очевидностью. Но опыт, который вы получаете, следя за аккаунтом и видя его твиты в своей ленте, совершенно иной: теперь вашу твиттер-ленту украшают сообщения, наполненные печалью одиночества, повествующие о высшей цели и повседневной красоте Атакамы. Как и в случае с @soft_landscapes, это проект, который разумно обходится с вероятностью. Тот факт, что личные откровения астронома редки, придает им особую ценность – нам словно приоткрывается портал в мир

324

 Глава 27. Что можно делать с твиттер-ботами

ученого. Неоднозначность импорта сигналов (неужели это и правда инопланетные послания? осторожность удерживает нас от поспешных выводов!) тоже создает необычное настроение. И, конечно, если отвлечься от текста, сгенерированные графика и аудиозаписи красивы сами по себе. Кроме того, @ArpObservatory – один из лучших примеров выразительного использования метаданных в Твиттере: каждый аккаунт имеет поток твитов и профиль, включающий имя пользователя, личные данные, веб-сайт, местоположение, аватар и т.  д.  Это первые впечатления, которые дает бот, и они устанавливают рамки для реальных твитов. Конечно, у ботов существует гораздо больше контекста, в том числе и того, который относится к читателю (как пользователи нашли эту учетную запись, кто делает ретвиты, отвечает на посты, подписывается на обновления, – это для опыта бота еще важнее, притом что его создателю гораздо труднее контролировать такие вещи). Если вы создаете ботов, стоит тщательно подумать о каждом возможном контексте, который вы можете установить. Время, потраченное на обдумывание читательских ожиданий и способов их формирования может окупиться гораздо лучше, чем любая настройка алгоритмов. Точно так же, как ваш бот должен реагировать на контекст Твиттера, он задает контекст для других. Создавая робота, вы создаете машину, которая автономно действует в среде своего существования наравне с людьми. Вы несете ответственность за то, что публикует бот, и за результаты его работы ничуть не в меньшей степени, чем за сообщения, которые вы отправляете от себя лично. Эта ответственность выражается разнопланово: через фильтрацию текста и отсев оскорбительных выражений, через решение не уведомлять пользователей без их согласия и т. п. Но есть и более серьезные этические проблемы, такие как отношение вас и ваших ботов к Твиттеру как к организации и платформе. Вы создаете искусство на коммерческой платформе, и это сложные отношения. Люди, работающие в Твиттере, вас хотят видеть в определенном качестве; стоит подумать о том, какие цели вам предлагают и что подразумевается, даже если этого не происходит явно. Подобные размышления побудили многих известных создателей ботов переосмыслить свое постоянное присутствие в Твиттере и создание работ для него. Эверест Пипкин (Everest Pipkin), создатель @tiny_star_fields, недавно прямо заявил: «Я не хочу, чтобы моя работа служила им, не хочу повышать их престиж» (https://twitter.com/everestpipkin/status/1010585694400417792). Но даже в этой ситуации он не отказался от создания ботов насовсем. Да, Твиттер нельзя назвать нейтральной платформой, однако это платформа с широким охватом, авторитетная и популярная. Пипкин поклялся: «Отныне и до скончания дней этой платформы протестные боты – единственное, над чем я буду работать» (https://twitter.com/everestpipkin/status/1010588540978098177) – и создал @Abolish_ICE_Now, бота, перечисляющего места содержания иммигрантов в Америке, со статистикой по объектам и регионам, в которых

Заключение  325 они расположены, и с сопутствующими изображениями, полученными со спутниковых фотографий или из Google: «Муниципальный центр временного содержания в Бедфорде расположен по адресу: 2121 L Don Dodson Drive, Bedford, TX. Приют для иммигрантов. Последняя оценка инспекции – “удовлетворительно”. Население Бедфорда 47 617 человек, высота над уровнем моря – 601,38 фута. Дома на 3,8 % пустуют, 41,2 % сдаются в аренду и 55,1 % находятся в собственности». (Прилагается спутниковая фотография Муниципального центра временного содержания в Бедфорде: https://twitter. com/Abolish_ ICE_Now/status/1043717973242871808) Каждый твит этого бота переводится на испанский язык. «Bedford Municipal Detention Center tiene inmigrantes encerrados en 2121 L Don Dodson Drive, Bedford, TX. La última calificación de inspección que obtuvo fue “Acceptable”. Bedford tiene una población de 47,617 y una elevación de 601.38 ft. El ingreso medio por hogar es $65,579». Бот одержим гневом и жаждой перемен, но он составлен продуманно, с аккуратностью и эстетическим чутьем, отличающим все работы Эвереста Пипкина. Этот бот не пытается выдать себя за что-либо иное кроме бота; его предложения подчеркнуто шаблонны, и все это призвано передать то праведное негодование, которое лежало в основе его создания. Конечно, для многих других создателей ботов Твиттер по-прежнему остается игровой площадкой. Это эффективное средство для публикации новостей и протестных заявлений вместе с тем отлично подходит для анекдотов и шуток. @vg_erotica – бот, который, как явствует из названия, сочетает в себе видеоигры и эротику. Вот несколько примеров твитов: «Он оторвал губы от того места, где они находились – от того места, где его шея соприкасалась с его плечом, и приложил их к его уху, произнося слова тихие, темные и полные злого умысла. “Скажите пожалуйста!” “Поддержи мою игру на Kickstarter”» – https://twitter.com/ vg_erotica/status/999635191596544001 «Она приподняла подбородок и запечатлела на его губах нежный поцелуй, стараясь не замечать, как наклонилась к нему, как вздохнула, подняв голову. “Скриншот сохранен”» – https://twitter.com/vg_erotica/ status/1002443995040055296 Даже из двух твитов можно сделать вывод о формате в целом. Страстная, пышущая жаром проза вдруг пресекается затасканной фразой из игр. Длина твита для этого подходит идеально: фраза достаточно длинная, чтобы читатель вошел во вкус, и тут-то все и обрывается. Ни один из этих твитов

326

 Глава 27. Что можно делать с твиттер-ботами

не получилось бы сделать смешнее, если бы создатели потратили больше времени на настройку или задержались на видеоиграх. Комический эффект, возникающий в силу несоответствия ожиданиям, порождается естественным образом и исходит из процедурной риторики: случайная выборка из пространства «эротики» и «видеоигр» всегда работает  – то, что выбирается из одного набора, по умолчанию контрастирует с другим. Иногда это очень смешной результат, иногда юмор несколько плоский – но это нормально, потому что в среднем эффект достаточно убедительный, и пространство вероятностей подразумевает отдельные перлы. По той же логике работает и @darndesttruisms, который берет за основу сочетание «мой малыш сказал…» и утверждения, взятые из работ американской художницы Дженни Хольцер (Jenny Holzer). Пример твита: «Мой пятилетний ребенок только что прошептал мне на ухо: “желание размножаться  – это стремление к смерти”»  – https://twitter.com/ darndesttruisms/status/1014696925809930240 Это еще проще: установка менее сложна, а утверждения Дженни Хольцер взяты из одного сборника и требуют еще меньших усилий для составления корпуса текста. Бот достаточно забавный, но его цели шире, чем создание нелепиц. Он вызывает чувство неловкости, когда слышишь все эти пафосные утверждения вымышленных детей, странную риторику, сочетание серьезного постулата с чем-то мелким и частным. Мне думается, что Дженни Хольцер (которая печатала свои трюизмы на футболках, демонстрировала на плакатах, экранах кинотеатров, светодиодных экранах и в других общественных местах) одобрила бы этого бота и рассматривала его как продолжателя ее дела. Очень давний твиттербот @everyword, как следует из названия, просто ставит перед собой цель вывести каждое слово из словаря английского языка. Публикуя по слову со скоростью раз в полчаса, он справился со своей задачей за семь лет. За эти годы он набрал десятки тысяч фолловеров, и меня в том числе. Помню, когда бот начал приближаться к концу алфавита, комментаторы оживились. Каким будет последнее слово? Что сделает бот, дойдя до конца, – остановится или начнет все сначала? Наконец он добрался до «зимургии» («zymurgy»)... и тут же перекатился на «эклер» («éclair»). В английском языке есть ряд слов, заимствованных из французского, и в сортировке символов «é» оказалась после «z». Это опять-таки похоже на шутку. Был установлен контекст, возникло ожидание: после слов на «z» боту нечего будет делать. Это ожидание было сформировано за те семь лет, что мы прилежно просматривали сообщения бота в своих лентах. Покуда мы жили своей жизнью, он медленно продвигался по алфавиту. А затем поворот, кульминация: на «z» ничего не заканчивается! Как и в любой хорошей шутке, эффект комического завязан на

Заключение  327 том, что вы ожидали чего-то совсем другого. Это слом вашей ментальной модели, которая делает шутку шуткой, и я все еще с улыбкой вспоминаю о том, как @everyword смог всех нас удивить. Помимо использования шуточных ботов ботмейкеры могут использовать их и для уничтожения шуток. Дариус Каземи (Darius Kazemi) – известный ботмейкер, который регулярно берет свежую шутку или мем из Твиттера и создает бота, который автоматизирует его генерацию. Примеры включают @choppermemebot (который помещает сценарии фильмов в формат «Американского мотоцикла»), @expandingbot (который генерирует макросы расширяющегося изображения мозга) и @BracketMemeBot (который берет категории «Википедии» и делает из них турнирные сетки). Все эти боты создаются после того, как какой-то конкретный мем достиг своей точки насыщения, и при просмотре вашей твиттер-ленты может показаться, что все просто впихивают произвольные сочетания слов в формат dujour. Автоматизируя этот процесс и создавая большее количество твитов, чем может выдержать формат, Дариус ускоряет кончину этого конкретного формата (по крайней мере, в кругах, подверженных влиянию бота). Это и хорошо, поскольку у каждой шутки есть свой срок годности, после которого она начинает вызывать пресыщение. @everyword был очень популярным ботом и послужил образцом для многочисленных имитаций. Среди имитаторов мне особенно понравился @everyboolean. Он опубликовал всего два твита: сначала слово «истина», затем – слово «ложь». Самое прикольное было в том, что между этими двумя твитами прошло много лет. За это время содержание второго твита можно было легко предугадать, но дата публикации была непредсказуемой. Если @everyword достиг своей кульминации, установив регулярный график размещения твитов и при этом выдав неожиданный контент, @everyboolean сообщил своим подписчикам многолетнее чувство уверенности, располагая твитом с предсказуемым содержанием и неопределенным временем публикации. Резюме: вам нужны два экземпляра, чтобы установить шаблон. Этот длительный период ожидания интересен тем, что он раскрывает особенности времени в твиттер-среде. В отличие от многих цифровых пространств, это платформа, на которой посты могут существовать в течение длительного времени. Это способ осознать искусство как непрерывный процесс, жить с ним бок о бок, пока оно не превратится для вас в фоновый шум. Бот @everyword жил во времени, @everyboolean молчал и при этом таил в себе потенциал заключительного твита. За некоторыми другими ботами Дариуса я не слежу, но они все же проходят через мой канал благодаря ретвитам. Одна из хороших сторон твиттер-ботов – их реакция на особенности самого Твиттера: его социальные соглашения, форматы взаимодействия и даже конкретные технические ограничения на платформе.

 Глава 27. Что можно делать с твиттер-ботами

328

Еще одним преемником @everyword стал @everyletter123. Позвольте мне кратко пересказать его твиты: A (20 марта 2013 – https://twitter.com/EveryLetter123/status/314416396341743616) B (20 марта 2013 – https://twitter.com/EveryLetter123/status/314416420333166592) С (20 марта 2013 – https://twitter.com/EveryLetter123/status/314416396341743616) В этот момент он перестал твитить, предположительно навсегда. Теперь очевидно, что боты постоянно ломаются. Трудно поддерживать программное обеспечение в интернете: это место с постоянно меняющимися стандартами, где каждая система выстраивается поверх пяти других. В данном случае причина сбоя оказалась проще некуда: невозможно создать твит, содержащий только букву «D». Дело в том, что «D username message» – это сокращенный синтаксис для отправки непосредственного сообщения кому-либо, поэтому любой твит, начинающийся с «D» и знака пробела, интерпретируется как команда для отправки личного сообщения. Такой синтаксис был разработан, когда основным интерфейсом Твиттера были SMS, но сегодня это уже часть истории, а ограничение живо по сию пору. Порой я представляю себе, как бот @everyletter123 терпеливо, изо дня в день, пытается отправить следующий твит в серии. Каждый день Твиттер отвергает его, он принимает отказ и до времени замирает, готовый назавтра предпринять еще одну попытку… Точно так же я воспринимаю бот @wa_k (биографическая информация: «я хочу, чтобы вы знали классные иероглифы. Давайте выучим японский, особенно кандзи»), который застрял и твитнул «吐 –означает “отрыгивать, изрыгать, признаваться”. Произношение: to, ha (ku)» шесть раз в день, пока наконец не сломался. Есть что-то захватывающее в том, каким причудливым образом боты могут сломаться или застрять на одном и том же месте: это открывает в их нечеловеческой природе нечто такое, что побуждает думать о них как о независимых сущностях. Мы, конечно, знаем, что все боты, сломанные или нет, полностью подответственны – но мне нравится просматривать «личностные качества» у тех ботов, которые демонстрируют свою искусственность наиболее явным образом. Хорошо функционирующий бот, управляемый человеком, трудно представить себе чем-либо иным, нежели творением рук человеческих. Для того чтобы вы искренне удивились, требуется, чтобы один кусочек кода с переводом японского слова внезапно появился шесть раз на дню.

Глава

28

Создание инструментов процедурного сторителлинга Эмили Шорт

В этой главе предполагается, что вы создали или создаете систему повествования, которая процедурно определяет, как и в каком порядке показывать контент игроку. Она также предполагает, что организация этой системы включает ручное создание или импорт значительного объема данных вместе с любыми метаданными, необходимыми для их правильной обработки вашей системой. Это очень широкое определение. Оно будет включать в себя: • системы проектирования текстовых приключений, которые включают объектно-ориентированные представления объектов в игровом мире; • системы компоновки пещер, которые связывают нарратив любого объема с подземными комнатами; • игры на основе сторилетов1, такие как Fallen London, и • повествовательные системы с обширной генерацией текста, которые опираются на значительные массивы слов. Не все приведенные здесь наблюдения в равной степени применимы к любым системам; они скорее приглашают поразмышлять о проблемах, с которыми я сталкивалась много раз, когда строила и перестраивала системы такого рода.

Что могут сделать авторские инструменты для процедурного повествования? Создание контента Большинство систем процедурного повествования требуют от разработчика самостоятельно создавать элементы нарратива – будь то диалоги с 1

Сторилет (storylet) – тип интерактивного сторителлинга, альтернатива традиционной древовидной схеме. – Прим. перев.

330

 Глава 28. Создание инструментов процедурного сторителлинга

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

Первые пять минут Часто новая система должна быть заполнена некоторым содержанием, прежде чем она вообще сможет производить какой-либо игровой опыт. Этот этап не слишком существен для систем, предназначенных для работы над одним студийным проектом. Обычно к тому времени, когда вы создаете специальный инструмент для создания контента, у вас уже есть прототип, и создание нового контента должно быть аддитивным. Тем не менее в отношении любой системы, которая предназначена для использования в новой работе на регулярной основе – и особенно тех систем, которые, как вы ожидаете, будут использоваться непрофессионалами, – важно ответить на вопрос, как быстро пользователь может перейти от знакомства с программным обеспечением до опробования игрового опыта. Для StoryNexus, качественной повествовательной системы, используемой Failbetter Games, потребуется последовательность сюжетов, благодаря которой игрок получит представление о системе и опробует некоторые основные механики. На сборку, настройку и загрузку художественных файлов может понадобиться несколько часов. Для среднестатистического текстового приключения понадобится одно-два игровых пространства, а также некоторые начальные артефакты и действия. Для системы, основанной на грамматике, необходимый минимум – один или несколько узлов верхнего уровня для расширения. Инструмент, предоставляющий реализацию по умолчанию, может многое сделать, чтобы функционировать как первоначальный автор. Система разработки текстовых приключений Inform поставляется с библиотекой по умолчанию, которая реализует почти все, что вам нужно, чтобы, например, получить воспроизводимое первое помещение в игре. В такой комнате почти ничего нет, но как новый автор вы можете что-нибудь скомпилировать и запустить в течение первых пяти минут использования инструмента, чтобы обеспечить интеракцию. Механизм символов диалогового инструмента Spirit AI предоставляет проекты по умолчанию, в которых имеется несколько основных линий диалога, так что вы можете получить диалог (пусть и в рудиментарной форме) почти сразу же после того, как начнете пользоваться инструментом. Twine и Texture позволяют воспроизводить опыт с того момента, как вы построили свои первые связи.

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

Что могут сделать авторские инструменты для процедурного повествования?  331 всей игры. Часто я нахожу целесообразным построить первоначальный каркас истории в относительно линейной форме, а затем вернуться и добавить ветви, варианты, альтернативный контент. Или, если это проект на основе грамматики, я могла бы создать базовое предложение в генеративной грамматике, ожидая, что позже вернусь к этому и добавлю варианты. В Twine развитие структуры может означать создание узлов, которые стоят в начале и конце каждой сцены, с фактическим содержанием прохода, который будет разработан позже между этими точками. В Character Engine и Inform (это очень разные инструменты, но оба поддерживают концепцию эпизодов) это может означать описание начала и окончания эпизодов. Основанные на качестве инструменты повествования, такие как StoryNexus, где система свободно выбирает из группы доступных сюжетов, могут сделать это немного сложнее, потому что, учитывая выбор сюжетов с предпосылками и последствиями, пользователю сложнее предвидеть все возможные комбинации статов, которых может достичь игрок, и нет явной модели повествовательного контента.

Сопоставление фантазии с механикой Предположим, мне нужно убедиться, что у меня есть соответствующие варианты контента, соответствующие каждой категории в системе. Возможно, я пишу игру c применением традиционных стихий, и мне нужно соотнести каждый предмет одежды с элементом земли, воздуха, воды и огня. Или я сочиняю рассказы для сюжетно-ориентированной повествовательной системы и хочу предусмотреть три способа развития отношений игрока с персонажем, основанные соответственно на доброте, хитрости или юморе. Или я создаю карты для повествовательной игры, и мне нужно выдумать шесть видов катастроф. Здесь задача автора в том, чтобы присвоить заданным механикам фантазийную оболочку. Это довольно кропотливая, временами монотонная работа, особенно если у вас много предопределенных элементов системы, которые нужно заполнить содержанием. Легко соскользнуть в наезженную колею и не представить вообще никаких интересных вариаций. Существует несколько способов, с помощью которых в этом может помочь готовый инструмент. Один из них заключается в отслеживании контента, который пока еще только предстоит создать, и в предоставлении автору механических подсказок в случайном порядке. Создание вымышленных элементов для различных частей системы означает, что автор с меньшей вероятностью застрянет на определенной концепции. Трудно написать пятьдесят тесно связанных друг с другом художественных фрагментов подряд, избегая повторения. Инструменты, способные отслеживать и назначать задачи по созданию контента, полезны и в совместных

332

 Глава 28. Создание инструментов процедурного сторителлинга

проектах, где разные авторы могут сочинить отдельные фрагменты, которые затем будет интересно рекомбинировать. Другой вариант – инструмент, предлагающий рандомизированные художественные средства. Однажды мне пришлось написать несколько рассказов для Fallen London. Другие дизайнеры уже определили механические параметры: какие статы игрока разблокирует сюжет, какие уровни статов будут определять успех и неудачу, какова должна быть ценность наград за успех и т. д. Fallen London может похвастать развитой нарративной системой, которая связывает различные части города и персонажей с определенной статистикой игрока. Чтобы помочь себе проработать соответствующие мини-истории, я построила небольшую генеративную грамматику для оформления сюжетных предпосылок по каждой комбинации статов. Например, учитывая запрос на историю о применении стата Watchful (Наблюдательный), она будет создавать такие строки: «Ты пристально наблюдаешь за домом, чтобы познакомиться с родственниками важной для тебя персоны, рискуя сойти с ума». «Ты пытаешься расшифровать заметки о морском путешествии, чтобы получить информацию о детских годах важной для тебя персоны, рискуя увидеть во сне странного священника». Грамматика выдавала мне по три такие строчки за раз. Порой нескладные, но это не имело значения – по крайней мере один вариант из трех подкидывал мне идею, которую я могла взять за основу для сюжета, тематически согласованного с имеющейся механикой. Некоторые исследования показывают, что авторы с большей вероятностью придумают оригинальный текст, отвечающий определенным предпосылкам, если им предложат образцы картинок, а не фрагменты текста. Действительно, легко представить себе разработку подсказок, которые опираются на сгенерированные картинки, а не на текст.

Аккреционные или скульптурные процессы письма После того как появился нарративный костяк, мне нравится читать содержание или играть в созданную игру, пока я не достигну точки, в которой можно представить себе интересную реакцию, диалог или событие – и тогда я добавляю соответствующий элемент в сюжет. Для диалогической игры это может быть момент, когда персонаж сумеет ответить на вопрос, который я не рассматривала ранее. Для сюжетной игры это означает определенный поворот, к которому привели предшествующие события. Привлекательность такого рода текстов в том, что они позволяют автору пережить опыт игрока: вы думаете о повествовании с точки зрения игрока, и часто это приводит к наиболее интересным интерпретациям содержания.

Что могут сделать авторские инструменты для процедурного повествования?  333 Проблема, однако, в том, что не все инструменты одинаково хорошо поддерживают этот режим работы, а некоторые откровенно его затрудняют. Инструменты, помогающие в создании «скульптурного» текста: • разрешают жесткий цикл запуска/перезапуска. Inform, например, позволяет автору воспроизвести заданный фрагмент, внести некоторые изменения в исходный код, перекомпилировать и воспроизвести ту же часть сюжета. В некоторых случаях это может потребовать сохранения и повторного использования случайных деталей, а также истории игры до этого момента. • позволяют автору сообщить запущенному экземпляру игры, что мы хотим скопировать все текущее состояние и связать его с новым фрагментом содержания. Это значительно снижает нагрузку на авторов и минимизирует возможность ошибок. На этапе создания контента моя диалоговая игра Alabaster с сильной долей авторского контента позволяла игроку/соавтору, в частности, попробовать такого рода взаимодействия: СПРОСИ (NPC) О ЛИЛИТ. Каждый раз, когда игрок достигал точки, в которой уже не было ответа, игра переходила в режим авторства, позволяя игроку указать, как NPC должен реагировать в этот момент. Затем игра задавала несколько вопросов, чтобы уточнить, как должна выглядеть эта линия диалога, и автоматически записывала в файл все данные, необходимые для создания экземпляра диалога именно в этой точке повествования. Это позволило разным авторам, работающим над системой, создавать свои собственные области контента – или даже допускать вариации чужого контента – без необходимости изучать базовые процедуры или запоминать систему тегов контента.

Добавление разнообразия Выше описывалось добавление большего количества фрагментов контента для более полного и точного отражения состояния мира. А сейчас речь пойдет о привнесении внутреннего разнообразия в имеющийся контент для поддержки более широкого опыта воспроизведения. Я люблю шоколадный торт. Если привнести ингредиент, который создает альтернативные ароматы, получится: Я люблю [шоколадный/ванильный/клубничный] торт. Хотя с таким же успехом можно заменить и все блюдо целиком… Я люблю [шоколадный торт/омлет с грибами]. …или действие… Я [люблю/терпеть не могу/не воспринимаю] шоколадный торт.

 Глава 28. Создание инструментов процедурного сторителлинга

334

Разработка такого раздела контента может вас развлечь – и во многих проектах так можно упражняться практически до бесконечности. В моем процедурном текстовом проекте Annals of the Parrigues я разработала сложную грамматику для описания городов и путешествий, но часто добавляла списки конкретных объектов из других источников. Annals of the Parrigues располагает сведениями о нескольких сотнях сортов яблок – просто потому, что Дариус Каземи создал хранилище2 с данными процедурной генерации и предложил мне исходный файл, очень простой в использовании. Здесь есть два больших подвоха для авторов. Во-первых, они будут активно работать над тем, что не окупит их трудов. Если данный фрагмент контента окажется виден только в 5%  прохождений, разрабатывать для него сотни вариантов как-то непрактично. Инструменты могут помочь вам решить проблему, либо выделив наиболее часто используемые фрагменты, либо выполнив некоторый статический анализ на доступном материале, либо воспользовавшись результатами автоматического тестирования. Во-вторых – и это более тонкий нюанс – при вводе дополнительных вариаций усредненные результаты фактически становятся более скучными. Предположим, мое первое предложение было таким:



Я люблю яблочный пирог с пряностями и глазурью из козьего сыра. Это довольно специфическое кушанье. Если добавить такие варианты: Я люблю [яблочный/ванильный/шоколадный/клубничный] пирог с глазурью из [козьего сыра/сливочного крема/ванили], то большинство сгенерированных строк будет выглядеть примерно так: Я люблю ванильный пирог с глазурью из сливочного крема. Я люблю клубничный пирог с глазурью из ванили.

Это значительно менее интересные идеи, чем то, с чего я начинала. Добавив новые варианты, я фактически уменьшила качество вывода в среднем. Инструмент не может фиксировать и исправлять это, если у нас нет четко определенных метрик для качества генерируемого результата (в этом случае мы могли бы автоматически отфильтровывать плохой результат). Одна из возможностей, которую он может предложить, – показать примеры генерации, использующей новую грамматику в режиме реального времени. Это дает автору мгновенную обратную связь, показывая, лучше ли новые сгенерированные строки или хуже, чем оригинал. 2

https://github.com/dariusk/corpora

Что могут сделать авторские инструменты для процедурного повествования?  335

Импорт контента Не все процедурные системы повествования сводятся к созданию компонентов с нуля. Некоторые экспериментальные работы в области интерактивного сторителлинга опираются на данные из краудсорсинга для создания модели мира и истории. Проект Scheherazade от компании Georgia Tech, например, приглашает поработать над Mechanical Turk, предлагая составить короткие рассказы о событиях наподобие похода в кино или ограбления банка3. На сотнях примеров историй строится модель «типичных» действий, когда человек собирается в кино, а также действий на любом этапе кинопросмотра и т. д. В проекте Джеффа Оркина (Jeff Orkin) Restaurant Game использовался аналогичный подход: Оркин опубликовал игру для двух игроков, в которой один мог играть роль официанта в ресторане, а другой – роль клиента. Каждый человек мог вести диалог в свободной форме или взаимодействовать с трехмерной средой, например сидя на стуле или держа в руках тарелку с едой. Затем Оркин использовал этот набор данных для построения модели поведения людей в ресторанах. Модель отражала не только типы поведения, которых можно было бы ожидать при создании такого сценария (заказ еды, оплата счета…), но и некоторые неожиданные повороты, предпринятые игроками: скажем, один клиент пробрался на кухню и попытался украсть из ресторана микроволновую печь. Габриэлла Баррос (Gabriella Barros) и другие исследователи, работающие в области создания игр на основе данных, создают игры, где используются «Википедия» и аналогичные общедоступные источники данных. В таком случае характеры и ситуации подставляются в ранее разработанные шаблоны. Подходы, основанные на данных, которые создаются массой людей или извлекаются из интернета, менее распространены в коммерческом производстве игр, по крайней мере на данный момент: качество историй и способность дизайнера контролировать, во что это выльется, как правило, оказываются не на высоте. Даже в проектах с большей долей ручной работы часто оказывается полезной какая-то из форм локального импорта.

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

http://eilab.gatech.edu/open-story-generation

336

 Глава 28. Создание инструментов процедурного сторителлинга

ны для нашей культуры или откровенно грубы, а затем сделала несколько быстрых меток, чтобы связать пословицы с определенными темами, такими как «богатство» или «любовь», а также присвоила им положительную/ отрицательную валентность. Теперь можно было выводить их по мере необходимости, когда в повествовании дело доходит до определенного момента, по отношению к которому нужно высказать нечто позитивное или негативное. Поддержка такого импорта часто не требует ничего, кроме как отказаться от роли единственного автора, предложив инструмент, в который можно вставить большие объемы данных с разделителями. Эту функцию можно расширить, предложив инструменты импорта, которые аккуратно извлекают контент из онлайн-источников наподобие DBpedia. По мере усложнения можно также предложить автоматизированную очистку данных или инструменты, которые могут предлагать теги данных и позволять автору исправлять их. При импорте моих пословиц я искала определенные ключевые слова – индикаторы того, что пословица была, к примеру, о деньгах. В зависимости от того, как много подобной работы вы ожидаете от авторов, вы можете предоставить соответствующие инструменты на основе ключевых слов, регулярные выражения или даже классификаторы на основе машинного обучения, чтобы помочь сортировать внешние материалы в соответствии с любыми критериями, важными в вашей конкретной системе повествования. Ручная коррекция, вероятно, все еще будет необходима, но в любом случае это не такой трудоемкий процесс, как ручная маркировка с нуля.

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

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

О чем нужно думать при планировании нового инструмента  337

О чем нужно думать при планировании нового инструмента Подумайте о том, какую процедурную эстетику вы собираетесь использовать Осознаете вы это или нет, но ваша работа подчиняется не только техническим, но и эстетическим принципам. Подумайте: • какие действия игрока вы хотите облегчить; • какой результат вы назвали бы качественным; • нормально/желательно ли, чтобы результат выглядел как сгенерированный, или вы хотите имитировать авторский контент; • желательны ли комические несоответствия или следует их избегать. Учитывайте потенциальных пользователей и их техническую грамотность: • для кого вы создаете инструмент – для себя или для других; • нанимаете ли вы работников или приглашаете волонтеров; • был ли у членов команды опыт по работе над такими проектами, играли ли они в подобные игры. Я видела ряд инструментов, разработанных в рамках издательских платформ, со следующей бизнес-моделью: разработчик делает инструмент, а затем собирается группа авторов, создает проект на этой платформе, и обе стороны делят прибыль. Эта модель работает только в том случае, если платформа достаточно проста в освоении и достаточно привлекательна по результатам, чтобы авторам было интересно взять на себя работу по ее изучению. За инструменты, предназначенные для использования в собственной студии, можно не так волноваться. Говоря об инструменте, который она разработала для Ladykiller in a Bind, Кристина Лав признает, что инструмент непригоден для использования кем-либо кроме нее самой, зато ей он нужен именно в таком виде4. Нет ничего плохого в разработке инструмента для личного пользования, настроенного на потребности конкретного человека, если речь идет о поддержке одного проекта. Чем более опытен пользователь, для которого вы стараетесь, тем меньше времени нужно тратить на подготовку документации, советов по работе с инструментом и примеров его использования. Но опытные пользователи тоже могут извлечь выгоду из экономящих время меток, активного тестирования и хорошей визуализации – и, возможно, они в меньшей степени, чем новички, склонны запрашивать эти функции, считая, что просто мо4

www.gdcvault.com/play/1024403/Micro

338

 Глава 28. Создание инструментов процедурного сторителлинга

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

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

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

Учитывайте эффект первопроходца Первые значительные работы с использованием вашего программного обеспечения произведут большое впечатление на тех, кто достаточно долгое время (в ряде случаев постоянно) отслеживает аналогичные проекты и устанавливает стандарты в этой области. Так произошло, например, с текстовыми приключенческими играми старого формата: блестящее классическое Adventure послужило образцом создания подземных приключений, лабиринтов и несложных головоломок для многих будущих игр. Последующие коммерческие предприятия, особенно Infocom, намеренно исследовали, как другие жанры могут быть реализованы в текстовой приключенческой форме, но определенные стандарты, заданные Adventure (а затем Zork) сохранялись в течение многих лет, даже когда стали доступны наборы инструментов, обеспечивающие гораздо большее разнообразие. Точно так же многие визуальные романы сейчас оформляются в стилистике аниме не потому, что так нужно, а потому, что соответствующие образцы обусловили их развитие. Многие работы, созданные с помощью инструмента ChoiceScript для выбора игр, копируют стиль и дизайн Alter

Пока вы строите  339 Ego (оригинальная работа 1980-х годов, вдохновившая ChoiceScript) и первые несколько игр бренда Choice of..., особенно Choice of Dragons и Choice of Broadsides. Игры серии Lifeline, как правило, заимствуют стиль диалогов и опасности в эпизодах у самой первой игры из этого ряда. Обратите внимание: для новой работы не зазорно брать за образец дизайн какой-либо предшествующей. Иногда, если инструмент предназначен для создания материалов серии, это даже хорошо, потому что рынок знает, чего ожидать от новой части. Что делать, если вы пытаетесь создать инструмент широкого назначения, который могли бы использовать для разных целей многие пользователи? В этом случае стоит как можно раньше создавать несколько шаблонов разных стилей в жизненном цикле инструмента. Когда мы писали документацию для Inform 7, то включили несколько сотен примеров кода, которые могли быть скомпилированы и воспроизведены, и намеренно разработали их, чтобы охватить широкий спектр жанров, стилей и типов гейм-плея. Мы хотели, чтобы новые читатели руководства к Inform почувствовали: какова бы ни была их игровая концепция, ее стоит развивать – и не нужно приводить эту идею в соответствие с предыдущими жанровыми нормами.

Не создавайте графические инструменты слишком рано Если вы создаете механизм для процедурного повествования, вам, вероятно, встретятся новые виды данных, которые нужно представить, или новые структуры, которые обеспечат большую выразительность. Графический инструмент обычно ограничивает вас теми структурами данных, которых вы ожидали. Начиная с чего-то более гибкого  – расширяемой структуры данных XML или JSON, специфичного для домена языка, – вы сможете повторять то, чего ожидаете от системы. Если в вашей команде довольно много начинающих создателей контента и вам нужен графический интерфейс в начале процесса, применяйте текстовые пользовательские теги, чтобы сотрудники по ходу дела могли добавлять свои собственные «крючки».

Планируйте размещение хаков Независимо от того, насколько гениальна ваша система, в проекте всегда наступает момент, когда вам захочется добавить что-то особенное: пасхалку, особое следствие, которое больше нигде не повторяется, и вообще все что угодно. Убедитесь, что ваш инструмент позволяет добавлять произвольные теги или «крючки» к данным вне обычной структуры. Это полезно для оформления однократных событий, а также для прототипирования новых функций, которые вы еще не успели реализовать.

340

 Глава 28. Создание инструментов процедурного сторителлинга

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

Собирайте отзывы в писательских мастерских В Spirit, где я сейчас работаю над процедурной диалоговой системой Character Engine, мы ввели традицию писательских мастерских, по аналогии с мастер-классами авторов коротких рассказов. Идея состоит в том, чтобы люди рассказывали, что они проектируют, каковы их эстетические задачи и в чем они испытывают проблемы. Тестирование здесь не проводится, более критичный фидбэк мы оставляем для других случаев. Наша цель – выяснить, что хотят создать авторы и что им мешает. Перед тем как нам пришла в голову мысль организовать мастерские, мы обнаружили, что авторы часто не рассказывают о своих проблемах с инструментами, поскольку предполагают, что решение как-нибудь отыщется, или обвиняют себя в глупости, сожалея, что не сумели разобраться с чем-то простым. Ни один инструмент не будет полностью готов прежде, чем вы начнете использовать его для написания значительного проекта. А может, и не раньше, чем вы его опробуете в двух-трех проектах.

Портируйте работу в вашу систему Если вы создаете систему с аналогичными целями для существующего инструмента, может быть очень полезно получить разрешение на перенос работы из других систем в вашу. В 1990-х и 2000-х годах сообщество интерактивного фэнтези и фантастики разработало простую стандартную игру Cloak of Darkness, которая была портирована на десятки различных интерактивных художественных инструментов, чтобы продемонстрировать их функциональность и дать авторам представление о сильных и слабых сторонах различных систем5. 5

Веб-сайт Роджера Ферта (Roger Firth), содержащий спецификацию для Cloak of Darkness и многие примеры других проектов: www.firthworks.com/roger/cloak/.

Пока вы строите  341 В своих собственных проектах я портировала свою раннюю интерактивную игру Galatea с Inform 6 на системы Versu и Character Engine, а короткие фрагменты, написанные для Inform 6, – на существенно отличающийся от него Inform  7. Здесь есть несколько основных преимуществ. Во-первых, это облегчает работу при наличии значительных проектов в вашей новой системе: перенос может быть быстрее, чем изобретение контента с нуля, и вы получаете возможность разрабатывать довольно много нового материала с неплохой скоростью. С учетом характера ваших систем можно даже написать сценарий для автоматического переноса некоторых старых материалов. Во-вторых, перенос полноразмерных проектов позволит выявить как сильные, так и слабые стороны системы. Вы, вероятно, обнаружите, что в старой системе есть некоторые эффекты, которых новая не воспроизводит; но вы также можете обнаружить, что некоторые вещи, изначально сложные, стали проще. Учтите, это не отменяет необходимости создавать новые проекты изначально с помощью вашего инструмента. Старые проекты могут быть неспособны в полной мере тестировать то, что вы создали!

Предусмотрите многократные обновления Как правило, создание инструмента позволяет выявить новые уровни производительности. Они становятся доступными, как только инструмент прорабатывается на базовом уровне. Это, вероятно, очевидная вещь для большинства тех, кто работает над созданием игр, где обновления в порядке вещей. Но я часто видела производственные графики, согласно которым после выполнения первоначального набора спецификаций больше не предполагается никакой работы над инструментом. Как следствие, некоторые студии работают с инструментами, которые не вполне подходят для их целей, или накапливают за эти годы огромный технический долг, пока системы не придется полностью списать или заменить – притом замена производится долго, медленно и с множеством итераций. Лучший и более осознанный подход заключается в том, чтобы выделить определенные ресурсы на улучшение инструментов и поддерживать регулярный контакт с вашим сообществом по созданию контента, обсуждая, какие новые функции следовало бы ввести. Пользователи Inform 7 все еще предлагают усовершенствование инструмента, который разрабатывался в течение двух десятилетий.

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

342

 Глава 28. Создание инструментов процедурного сторителлинга

Позвольте инструменту быть умным Мы часто ожидаем увидеть технологии ИИ в играх, но не всегда предполагаем, что и в самом инструменте они могут снижать нагрузку авторов или предлагать новые возможности развития. Существуют области исследований, которые помогают решить эту проблему: так называемая компьютерная креативность  – наука, изучающая способы, с помощью которых компьютеры помогают разработчикам в области дизайна; инструменты смешанной инициативы – те, в которых компьютер и пользователь вносят дизайнерские штрихи по очереди или еще каким-то образом сотрудничают. Инструмент Danesh Майка Кука (Mike Cook) анализирует экспрессивный диапазон процедурных генераторов, помогая авторам направить свою работу на обеспечение большего разнообразия выходных данных6.

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

Помогите пользователям протестировать свою работу Даже для наименее процедурных типов интерактивного повествования состояние мира может стать настолько сложным, что тестировщики обеспечения качества продукта никогда не смогут изучить все возможные сценарии. Хотя полностью заменить тестировщиков ОК невозможно, зачастую желательно также тестировать полученную систему автоматизированным способом, пытаясь ответить на следующие вопросы: • Есть ли какие-либо моменты, когда движок исчерпывает жизнеспособный контент? Тупики повествования, откуда игрок не сможет продолжить игру? • Есть ли фрагменты контента, которые не могут быть достигнуты или достигаются очень редко? • Насколько длинным можно считать среднестатистическое прохождение игры, учитывая общий размер контента? 6

www.danesh.procjam.com/

Пока вы строите  343

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

Книги издательства «ДМК ПРЕСС» можно купить оптом и в розницу в книготорговой компании «Галактика» (представляет интересы издательств «ДМК ПРЕСС», «СОЛОН ПРЕСС», «КТК Галактика»). Адрес: г. Москва, пр. Андропова, 38; Тел.: +7(499) 782-38-89. Электронная почта: [email protected]. При оформлении заказа следует указать адрес (полностью), по которому должны быть высланы книги; фамилию, имя и отчество получателя. Желательно также указать свой телефон и электронный адрес Эти книги вы можете заказать и в интернет-магазине: www.a-planeta.ru.

Процедурная генерация в гейм-дизайне Под редакцией Тани X. Шорт и Тарна Адамса

Главный редактор Мовчан Д. А. [email protected]

Перевод с английского Редактор Корректор Верстка Дизайн обложки

Рыжикова М. С. Готлиб О. В. Абросимова Л. А. Паранская Н. В. Мовчан А. Г.

Формат 70×1001/16. Гарнитура PT Serif. Печать цифровая. Усл. печ. л. 27,95. Тираж 200 экз. Отпечатано в ООО «Принт-М» 142300, Московская обл., Чехов, ул. Полиграфистов, 1 Веб-сайт издательства: www.dmkpress.com