Повествовательный движок внутри Ice-Bound: A Novel of Reconfiguration

в 6:10, , рубрики: game design, interactive fiction, игры

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

Что такое Ice-Bound?

Ice-Bound это игра с комбинаторным принципом повествования, которая использует дополненую реальность для взаимодействия с обычной книгой. Всё взаимодействие пользователя с игрой заключается в чтении и компоновке различных историй, которые игра создаёт с помощью разработанного компанией повествовательного движка, получившего Best Story / World на IndieCade 2014. Выходит в начале 2015 на ПК и iPad.

Комбинаторный? Это… с выбором вариантов, да?

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

Множество игр, например такие как серия Mass Effect от Bioware или The Walking Dead от Telltale, используют следующий принцип: сначала игроку предоставляется выбор из нескольких вариантов (обычно двух-трёх), после чего игра реагирует на этот выбор. Некоторые из подобных распутий являются ключевыми и оказывают на историю достаточно сильное влияние (или хотя бы делают вид, что оказывают). Но подобный метод изначально содержит в себе ловушку для дизайнеров:

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

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

Однако пытаться обработать все возможные варианты развития событий крайне трудозатратно. Например над многоплановым повествованием SW:TOR два года трудилась команда из 12 писателей. В результате контента в игре было больше, чем во ВСЕХ предыдущих тайтлах Bioware вместе взятых. Подобный путь весьма дорогостоящ. И что ещё хуже, большую часть этого текста каждый отдельно взятый игрок SW:TOR так и не увидит.

С комбинаторным повествованием, мы хотели попробовать показать игроку как можно больше контента, при этом не наращивая осбоо его количество. Наша команда состоит всего из двух человек, поэтому нам необходимо быть максимально эффективными и предоставлять игроку максимум из того, что мы создадим. Несомненно, тот факт, что работаем мы только с текстом, несколько развязывает наши руки, устраняя проблемы с озвучкой, которая часто возникает у AAA-тайтлов. Но… невозможно комбинировать куски текста «просто так», ведь на выходе должно получиться достаточно естесственное повествование. Так что необходимо воспользоваться некой структурой, которая позволит относительно безшовно соединять различные части текста. Итак, что же это за структура?

Для Ice-Bound мы использовали три типа текста: символы, события и концовки.
Символами могут быть сюжетные хуки, чеховские ружья, МакГаффины. Символом может быть факт, что персонаж параноик, имел тяжёлое детство или скорбит по безвременно ушедшей второй половинке.

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

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

Работа напильником

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

Определить эту канву, этот свет, достаточно непросто. Стоит немного переусердствовать с детализацией и вам захочется смоделировать каждый процесс, каждое событие, происходящее в вашей истории. Что если объект, который герой поднял является той же вещью, что будет помещён на стол во втором событии. Знает ли система о том, как помещать предметы на стол? А знает ли она вообще что такое стол? Забудьте,

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

Для этого мы используем contextual expansion grammars. Грамматика это некая строка текста, содержащая символ, который система заменит на нечто иное, в том числе и новую грамматику, содержащую новые символы, и так до бесконечности. Также каждая замена символа в грамматике может запустить некий код, оценивающий полное состояние системы и выдающий некий текст на основании полученной картины.

Так работает, например подбор персонажей. Мы используем грамматику _characterWithTrait/feisty/ чтобы убедиться, что нужный персонаж окажется в нужном месте. Более сложные конструкции можно использовать для того, чтобы менять текст, в зависимости от числа персонажей в сцене или же применения различных слов, в зависимости от эпохи, в которой происходит действие (допустим замена «e-mail» на «письмо» и «телеграмму»), или даже меняя текст в зависимости от того как игрок окончил предыдущую свою историю.

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

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

Осмысленная реакция на выбор игрока

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

Геймплей Ice-Bound строится вокруг создания серии рассказов, в конце каждой истории игрок должен убедить местный AI, KRIS, в том, что всё должно было случиться именно так, как случилось. Чтобы доказать это, игроку придётся воспользоваться Компендиумом, книгой, которая идёт в комплекте с игрой.

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

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

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

Гибкое сочинительство

Такова наша система в своей основе. Также мы создали инструмент для визуализации разворачивающейся истории, чтобы нам было проще понять какой набор триггеров ещё нуждается в событиях и концовках, а также как правильно подобрать символы, чтобы достичь той самой максимальной эффективности. Вы можете узнать больше о нашей системе в паре статей, которые были написаны специально для Foundations of Digital Games 2014, одна касается визуализации данных, а вторая описывает комбинаторное повествование в деталях.

Автор: NSko

Источник

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


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