В статье вы узнаете о технической оптимизации творческого процесса создания истории. Материал будет интересен сценаристам, писателям и другим создателям историй — не важно, в какой форме вы их создаете. Мои технические решения по автоматизации с помощью компьютерных технологий вылились в бесплатный программный продукт — ultra_outliner, историю создания которого и основные возможности я расскажу.
ultra_outliner — это бесплатный инструмент для оптимизации разработки художественных историй карточным методом. Он выполнен в форме графического приложения и адресован сценаристам и писателям, а также игровым дизайнерам и разработчикам квестов. Инструмент позволяет работать с виртуальными карточками, персонажами, их характеристиками (и измерениями), локациями и специальными объектами. В составе ultra_outliner присутствует несколько редакторов, которые позволяют выстроить структуру истории, сюжетные линии, черты персонажей и др.
История появления
Писать сценарии я начал со старших классов для небольших любительских кино-проектов. Они всегда писались "от сердца", без какой-то структуризации и организации творческого процесса. Но в какой-то момент количество перестало перерастать в качество, и пришло время обратиться к теории.
После изучения определенной литературы, относящийся к Голливудской школе (Роберт Макки, Джон Труби, Сид Филд и др.) были сделаны следующие выводы:
- кино-сценарий — это лишь один из вид художественной истории;
- для разработки истории существует ряд сложившихся практик, которые, при их соблюдении, позволят сделать историю интересной;
существует вполне формализуемые правила разр - "от сердца"" выполняется только первые 15% работы, дальше начинается аккуратная проработка;
- разработка истории — сложный итеративный процесс, где требуется постоянное переписывание (writing is rewriting);
- все этапы проработки истории давно известны и практически совпадают независимо от жанра и др.
При этом, весь процесс разработки происходит на бумаге за счет написания текста. У различных авторов встречаются интересные схемы для оптимизации определенных фрагментов процесса разработки, которые позволяют существенно его упростить, однако в графическом подходе здесь отсутствуют общепринятые практики.
Таким образом, из данного процесса можно выделить определенную технологию, а любая технология — подвергается автоматизации.
У сценаристов одна из наиболее популярных практик разработки истории — это карточный метод. В нем ключевые события кратко описываются на бумажных карточках, которые затем комбинируются на большом столе. На выходе получается структурный план истории, по которому уже достаточно просто писать сам сценарий. Однако, бумага в данном случае не практична, т.к. в нее тяжело вносить правки и плотность информации значительно ниже современных LCD дисплеев.
Существует достаточно большое количество ПО для работы с карточками, наиболее полный обзор можно посмотреть здесь. Я надеялся найти что-то достойное как практик, однако, как оказалось, существующие программы либо неудобные, либо застряли по технологиям на уровне Windows 95, либо вообще являются бесполезной красивой игрушкой.
Поэтому, пришлось делать инструмент самому.
История разработки
Все началось с того, что работая над одним сценарием и устав от бумажных карточек, я сделал для себя небольшой инструмент на QT, который позволял создавать виртуальные карточки и перемещать их по виртуальному столу. В процессе появлялись новые функции и возможности. Таким образом, работая над историей, вместе с тем я развивал программу. Тогда у нее был всего один пользователь.
Когда я закончил сценарий был закончен, я ради интереса выложил программу на несколько специализированных русских и зарубежных форумов, и так нашел единомышленников. Это дало новые идеи для развития, и программа постепенно улучшалась. Потом для централизации обсуждения был сделан минимальный сайт, на котором я стал выкладывать новые версии.
В какой-то момент возникла проблема, что несмотря на достаточно богатую функциональность программы для пользователей было не очевидно как ее использовать. Тогда пришлось сделать паузу в разработке и сделать минимальную но исчерпывающую документацию, которая также доступна на сайте.
В настоящий момент проекту около 8 месяцев, он насчитывает около 30К строк кода и продолжает развиваться в статусе хобби-проекта. Некоторые технические решения показались мне интересными и потенциально полезными для других — поэтому я опубликовал их на Хабре (а именно, про реализацию undo/redo модели и маршрутизацию соединений).
Цели и задачи
ultra_outliner является инструментом для создания различных художественных историй, который изначально нацелен на сценаристов и писателей. При этом, он также может быть не менее эффективно использован разработчиками игр, квестов и др.
В отличии от чтения текста, восприятие истории в структурированной графической форме с дополнительными пометками в разы увеличивает скорость восприятия фрагментов истории. Таким образом, чтобы вспомнить детали некого фрагмента истории не нужно внимательно перечитывать 5 страниц текста — достаточно бегло взглянуть на заголовки карточек, после чего можно приступать к внесению правок. Именно поэтому карточный метод пользуется такой популярностью.
Однако перенос карточек в виртуальное пространство дает следующие преимущества:
- стол обретает неограниченные размеры;
- возможность хранить различные версии, копии;
- возможность внесения правок в карточки;
- и др.
Рассмотрим основные задачи, на решение которых направлен ultra_outliner.
Увеличение производительности разработчика истории за счет автоматизации рутинных процессов
В первую очередь, это относится к простоте внесения правок в карточки. Также не нужно каждый раз раскладывать карточки на столе — достаточно открыть компьютер. Можно хранить несколько виртуальных столов с одним и тем же набором карточек и др.
Возможность рассказчику увидеть свою историю в различных проекциях
Здесь речь идет о возможности независимой разработки различных аспектов истории независимо (разных сюжетных линий, персонажей и др.). Так, например, можно разложить на одном виртуальном столе несколько сюжетных линий сверху вниз рядом друг с другом, и только потом приступать к их композиции. Не менее важна возможность контролировать раскрытие черт персонажей независимо от сюжетов.
Повысить совокупное качество истории
Чем детальней отдельные компоненты истории проработаны по отдельности, тем выше качество истории при их композиции. Это позволяет в первую очередь избавиться от ошибок, а во вторую — сделать историю глубже и интересней.
Концептуальные основы
В центре ultra_outliner находятся настраиваемые карточки. Карточка может описывать определенную базовую сущность (событие, персонаж, сюжетная линия и др.). Для каждого вида базовых сущностей используется свой шаблон, который разработчик истории может настроить под себя.
Карточки могут гибко настраиваться с помощью следующего вида полей:
- строка текста без переноса;
- много-строчный текст;
- растровое изображение, которое может быть использовано для иллюстрации или storyboard-ов;
- список как выбор одного варианта из нескольких;
- флаги — список с возможностью выбора от 0 до нескольких цветных элементов;
- интенсивность — числовое поле, которое визуализируется в виде полоски, раскрашенной по картографическому принципу;
- цветная полоска.
При этом, на виртуальном столе визуализируются лишь непустые поля. Это дает возможность максимально повысить плотность информации на графическом поле.
Возможности и функциональность
В данной статье я не буду рассматривать технологию разработки истории в целом, а лишь опишу основные возможности инструмента. Более того, каждый сам выбирает для себя технологию, и я не хочу загонять кого-то в узкие рамки.
Работа со свободным листом
Свободный лист представляет собой графический документ, в котором можно свободно перемещать экземпляры базовых сущностей и создавать различные связи между ними. С помощью этого можно решить следующие задачи:
- построение сюжетных линий;
- раскрытие персонажей;
- построение сети локаций;
- использование сокровищ;
На свободном листе могут быть созданы экземпляры событий, персонажей, сюжетных линий, локаций и сокровищ.
Разработка сюжетных линии
Сюжетная линия начинается с так называемой "головы" и далее соединяет цепочку событий.
Для себя я выработал практику, что сюжетные линии идут сверху вниз, располагаясь параллельно друг другу. Вертикальная шкала примерно соответствует шкале времени.
Раскрытие черт персонажей
В соответствии с учением Макки, все персонажи существуют в истории для того, чтобы помочь раскрыть другому персонажу какую-то его черту. При этом, раскрытие происходит через действие, описываемое в соответствующем событии.
Поэтому персонажи могут иметь черты (которые нельзя отсоединить от персонажа), которые через цепь событий можно соединять с персонажем-оппонентом. Данный этап позволяет проверить, что все требуемые черты персонажа в истории раскрыты.
Создание структурного плана истории
Структурный план истории представляет собой выстроенную последовательность событий по иерархии Акт — Эпизод — Событие. Здесь Акт представляет собой вертикальную линию, а эпизод позволяет добавлять в себя карточки как в группу.
В ходе проработки структурного плана, например, необходимо сбалансировать повествование по ритму (ввести тип карточки Действие / Диалог — и сбалансировать чередование). Группировку по эпизодам есть смысл проводить в контексте одной ценности.
Карточки, которые попадают на центральную полосу формируют окончательный структурный план. Рядом находятся запасные карточки, которые в итоге не попали в историю.
Экспорт в читаемый формат
Структурный план может быть экспортирован в текстовый формат, чтобы отправить почитать друзьям. В зависимости от вашего стиля и детализации получится либо текстовый структурный план, либо синопсис.
Также из всех графических инструментов можно экспортировать в растровое изображение, чтобы получить снимок виртуального стола прямо в виде карточек.
Узнать больше
Вся функциональность редакторов подробно описана в документации.
Если материал окажется интересным, то в будущем я подготовлю сквозной пример разработки истории с помощью ultra_outliner на примере какой-нибудь истории, где достаточно детально опишу каждый шаг.
Для тех, кто хочет эту информацию быстрее — могу рекомендовать немного устаревший материал в виде моей статьи на cinemotion. Но несмотря на то, что там используется достаточно устаревшая версия, в целом идея не изменилась.
Заключение
Программа абсолютно бесплатная и скачать ее можно с сайта. В дистрибутиве лежит пример готового проекта.
Сейчас поддерживаются 32 и 64 битные версии Windows начиная от XP, а также Mac OSX и Linux. В будущем возможно появление мобильного приложения.
Функциональность программы динамично развивается, и поэтому в каждой новой версии добавляется что-то интересное. На странице скачивания можно подписаться на уведомления о новых версиях.
Если вам понравилась программа и появились потребности в новой функциональности или хорошие идеи — пишите на форуме или на почту поддержки, и в следующих версиях это будет реализовано.
Комментарии (57)
zim32
16.03.2017 12:54-6Понятно теперь откуда такие нелепые сценарии в голливуде. А AI еще не научился писать сценарии на основе анализа предыдущих миллиона фильмов?
SBKarr
16.03.2017 14:42Всё даже хуже, сценарии может писать рандомизатор плюс литературный негр. Берём набор шаблонов и драматических ситуаций позиций на 200, выбираем случайную, пишем, выбираем следующую случайную. В целом, от творческого процесса осталось мало чего, и с каждым годом всё меньше.
GlassEagle
22.03.2017 16:52Помнится, в давно минувшем 198-каком-то (кажется, в 86-87-м) году журнал «Техника-молодёжи» предлагал нечто подобное. Аккурат перед тем, как начать публикацию эпопеи «С Луны на Землю на неприспособленном для этого пепелаце». Только у них в качестве инструмента автоматизации предлагался отнюдь не компьютер, а что-то типа настольной игры с бросанием кубика.
recoder
22.03.2017 21:12Генератор Н/Ф сюжетов придумал Станислав Лем ещё в каких-то лохматых 70-х годах…
DaveDee
16.03.2017 13:08Вот год назад мне эта штука очень облегчила бы жизнь. Угрохал на сюжет раза в три больше времени, чем можно было.
Обязательно буду пробовать. Если что, фидбек гарантирую.
Yamaneco
16.03.2017 13:27-1Ссылка документации не работает. Скачала программу, но запускаться она не желает, вопит, мол, прекращена работа. Ну вот(((
ultrablox
16.03.2017 13:28+1мое простенькое heroku-приложение не справился с потоком пользователей, перезапустил.
если она не запускается, то скорее всего из-за отсутствия сертификата — отключите в винде проверку.
Mimizavr
16.03.2017 13:40Возможно будет интересно: уже очень давно при анализе сказок и мифов было выявлено несколько основных сюжетов, которые повторяются во всех культурах. Если учесть, что этот принцип лежит в основе современной литературы, то получаются готовые шаблоны.
msts2017
16.03.2017 14:07хм, действительно, вот это —
В соответствии с учением Макки, все персонажи существуют в истории для того, чтобы помочь раскрыть другому персонажу какую-то его черту.
объясняет наличие, в современном кино, персонажей и сцен которые вызывают недоумение — зачем они, а это просто бездумное следование принципу.
ClearAirTurbulence
16.03.2017 14:57Для себя я выработал практику, что сюжетные линии идут сверху вниз, располагаясь параллельно друг другу. Вертикальная шкала примерно соответствует шкале времени.
А можно ли задавать в карточках конкретные дату\время события, как свойство? Может быть полезным для, например, рассказов с жёсткой привязкой по времени.
При этом можно тогда автоматически распределять по этой самой шкале (которую тоже может быть полезно видеть), а не вручную и примерно…ultrablox
16.03.2017 15:28Можно сделать свой шаблон — для этого откройте редактор шаблона и там настройте поля. Для персонажей и др. редактор пока не работает, но пока можно в xml руками сделать. В след версиях исправлю.
Если нужно поле дата — тоже можно добавить, но надо подумать какая шкала времени там нужна. Классический календарь врядли будет полезен?k102
16.03.2017 15:34Думаю что подошел бы, если добавить возможность делать там пропуски — а то часто встречаются вещи типа «прошло N лет» — не скроллить же)
ultrablox
16.03.2017 15:36можно сделать шкалу (условно 0.0 — 1.0), на ней расставить «временные точки». И в карточке в этом поле просто ставить бегунок в отношении этих точек.
ClearAirTurbulence
16.03.2017 17:41Если нужно поле дата — тоже можно добавить, но надо подумать какая шкала времени там нужна. Классический календарь врядли будет полезен?
Кому-то вполне может быть и полезен. Мне кажется, пользователю будет проще установить, скажем, нулевой год самому, и пользоваться месяцами, если год ему неважен, чем ломать себе голову над тем, когда же происходит некое событие, используя предложенную ниже абстрактную шкалу 0.0-1.0…
akinchicantonvasilevich
16.03.2017 14:58Даже не дочитав до ссылки на скачивание, попытался скачать… Да вы батенька зря такой материал тут выложили: желающие приобщиться к этой, безусловно, полезной программе, положили сайт.
ultrablox
16.03.2017 15:30да, уже 2 раза перезапускал :) но главное рассказать интересующимся о существовании этого проекта, к вечеру поток сойдет на нет, можно будет спокойно качать
akinchicantonvasilevich
16.03.2017 17:31Блин, где же была это программа, когда я несколько лет назад старательно разлиновывал тетрадный лист, пытаясь более-менее упорядочить сцены, пытаясь получить нелинейный, но последовательный и логичный сюжет без дыр?
valery1707
17.03.2017 12:27+1Может стоило разместить сайт на GithubPages (исходники на Github, раздавать бинарник от туда же, и документацию сделать там же)?
ultrablox
17.03.2017 12:29На сайте я написал мини-cms с возможносью выкладывать новые версии по кнопке и несколько других полезных фич, упрощающих мне жизнь (в том числе движок для markdown-рендеринга документации с корректировкой относительных ссылок). Хотя не исключаю, что часть этого есть и там.
Anilexis
16.03.2017 15:30+1А диалоги с выборами реплик можно сделать?
У Obsidian такой редактор чем-то на ваш похож — https://www.kickstarter.com/projects/inxile/torment-tides-of-numenera/posts/1119445ultrablox
16.03.2017 18:57+1Идею по ссылке примерно понял, но надо разбираться. В ближайших релизах могу обещать только ветвление в карточных путях, т.к. основное назначение программы — это статические художественные истории, а не игры. Но на будущее отметил.
SL_RU
16.03.2017 16:41+1Она проприетарная? Не планируете ли открыть исходники. Думаю многим разработчикам они как раз нужнее самой программы. Ибо большинство проектов уникальны и допиливать всё-равно нужно будет под конкретный.
ultrablox
16.03.2017 19:01Пока точно смысла не вижу. Код грязный, постоянно много меняется, и документации разработчика нет на текущие 30К строк (и не появится, т.к. некому писать). Но если интересуют какие-то конкретные технические решения — можете спросить, я отвечу, там ничего секретного и инновационного нету.
impetus
16.03.2017 17:01А документации в едином скачиваемом файле нет? Привык как-то читать
datashepdf-ки… или ткните носом если в упор не вижу. Спасибо.
Да инструмент полезный, я для этого даже IDEF0 себе пользовал бывало (просто был под рукой, небольшой проектик)ultrablox
16.03.2017 23:10pdf-ной нету. Сделал на сайте небольшой движок, для рендеринга markdown-пакета. Но в оффлайн это нетривиально скомпилить.
herrmannelig
16.03.2017 21:57М-м, Труби. Я его даже переводил, пока он не вышел на бумаге.
Спасибо за программу, дело замечательное и полезное.
Присоединюсь к товарищу, который просил ветвистые диалоги — хотя бы даже в виде отдельной программы. Кмк, именно игры станут (уже стали) новым видом синтетического искусства; некоторые смысловые вещи в них настолько сильнее можно подать, чем в пассивных фильмах/книгах, что прямо хочется немедленно переверстать все заготовки на игросценарии.
RocketMen
17.03.2017 13:48+1Очень интересная идея
Думаю это можно было бы применить для написания жизненных сценариев, прогнозирование событий, бывает это необходимо
Еще мобильное приложение на айпад, я бы купил)ultrablox
17.03.2017 13:49+1обещать не буду, но если удастся для экспериментов достать айпад, то может попробую портировать, благо QT на IOS портировано.
pltnkv
19.03.2017 21:59Посмотрите realtimeboard, тоже бесконечные доски с гибким функционалом. Если вы работаете над проектом не один, а в команде, то в нём может быть удобней
degressor
Очень интересно, обязательно попробую. Посоветуйте чего почитать про Storytelling в геймдеве. Пользуемся самопальным эдитором. Наверно тоже давно есть свои стандарты и эдиторы?
ultrablox
Про gamedev врядли посоветую, по художественным историям это во-первых Роберт Макки (история на миллион долларов) и Кристофер Воглер (на русский перевели в этом году).
Для геймдева есть специализированное articity:draft приложение, но лично мне оно не понравилось.
fonegg
Спасибо за ссылки на книги. Судя по отзывам, они и правда отлично помогают вырасти в написании историй!
EvilArcher
Почитайте «Designing Games» от Tynan Sylvester