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


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


Lead


История появления


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


После изучения определенной литературы, относящийся к Голливудской школе (Роберт Макки, Джон Труби, Сид Филд и др.) были сделаны следующие выводы:


  • кино-сценарий — это лишь один из вид художественной истории;
  • для разработки истории существует ряд сложившихся практик, которые, при их соблюдении, позволят сделать историю интересной;
    существует вполне формализуемые правила разр
  • "от сердца"" выполняется только первые 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)


  1. degressor
    16.03.2017 12:50

    Очень интересно, обязательно попробую. Посоветуйте чего почитать про Storytelling в геймдеве. Пользуемся самопальным эдитором. Наверно тоже давно есть свои стандарты и эдиторы?


    1. ultrablox
      16.03.2017 13:31
      +2

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


      1. fonegg
        17.03.2017 14:05

        Спасибо за ссылки на книги. Судя по отзывам, они и правда отлично помогают вырасти в написании историй!


    1. EvilArcher
      16.03.2017 13:43
      +2

      Почитайте «Designing Games» от Tynan Sylvester


  1. zim32
    16.03.2017 12:54
    -6

    Понятно теперь откуда такие нелепые сценарии в голливуде. А AI еще не научился писать сценарии на основе анализа предыдущих миллиона фильмов?


    1. ultrablox
      16.03.2017 13:34

      Этим вопросом не занимался, поэтому ничего сказать не могу.


    1. SBKarr
      16.03.2017 14:42

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


      1. GlassEagle
        22.03.2017 16:52

        Помнится, в давно минувшем 198-каком-то (кажется, в 86-87-м) году журнал «Техника-молодёжи» предлагал нечто подобное. Аккурат перед тем, как начать публикацию эпопеи «С Луны на Землю на неприспособленном для этого пепелаце». Только у них в качестве инструмента автоматизации предлагался отнюдь не компьютер, а что-то типа настольной игры с бросанием кубика.


        1. recoder
          22.03.2017 21:12

          Генератор Н/Ф сюжетов придумал Станислав Лем ещё в каких-то лохматых 70-х годах…


  1. Filippok
    16.03.2017 13:08

    А как насчет экспорта в xml/json/whatever?


    1. Filippok
      16.03.2017 13:09

      Ну или API хотя б какое-нибудь для плагинов


    1. ultrablox
      16.03.2017 13:32
      +1

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


  1. DaveDee
    16.03.2017 13:08

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


    1. DaveDee
      16.03.2017 13:16
      +2

      Сайт благополучно упал)


      1. ultrablox
        16.03.2017 13:32

        это все мой бесплатный аккаунт на heroku, не выдержал))


  1. Yamaneco
    16.03.2017 13:27
    -1

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


    1. ultrablox
      16.03.2017 13:28
      +1

      мое простенькое heroku-приложение не справился с потоком пользователей, перезапустил.
      если она не запускается, то скорее всего из-за отсутствия сертификата — отключите в винде проверку.


  1. Mimizavr
    16.03.2017 13:40

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


    1. ultrablox
      16.03.2017 13:54

      Да, здесь мне больше всего нравится труд Воглера в качестве «пищи» для шаблонов. Шаблоны постепенно пополняю.


      1. Mimizavr
        16.03.2017 13:58

        Хм, надо на досуге ознакомиться. Я читал отечественных авторов)


    1. SBKarr
      16.03.2017 14:31
      -1

      1. kimtendu
        16.03.2017 21:15
        -1

        1. shteyner
          17.03.2017 14:41

          Все что не вписалось в остальные ситуации записываем в безумие)


  1. msts2017
    16.03.2017 14:07

    хм, действительно, вот это —

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

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


  1. ClearAirTurbulence
    16.03.2017 14:57

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


    А можно ли задавать в карточках конкретные дату\время события, как свойство? Может быть полезным для, например, рассказов с жёсткой привязкой по времени.

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


    1. ultrablox
      16.03.2017 15:28

      Можно сделать свой шаблон — для этого откройте редактор шаблона и там настройте поля. Для персонажей и др. редактор пока не работает, но пока можно в xml руками сделать. В след версиях исправлю.
      Если нужно поле дата — тоже можно добавить, но надо подумать какая шкала времени там нужна. Классический календарь врядли будет полезен?


      1. k102
        16.03.2017 15:34

        Думаю что подошел бы, если добавить возможность делать там пропуски — а то часто встречаются вещи типа «прошло N лет» — не скроллить же)


        1. ultrablox
          16.03.2017 15:36

          можно сделать шкалу (условно 0.0 — 1.0), на ней расставить «временные точки». И в карточке в этом поле просто ставить бегунок в отношении этих точек.


      1. ClearAirTurbulence
        16.03.2017 17:41

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

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


        1. ultrablox
          16.03.2017 18:53

          ок, сделал тикет


  1. akinchicantonvasilevich
    16.03.2017 14:58

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


    1. ultrablox
      16.03.2017 15:30

      да, уже 2 раза перезапускал :) но главное рассказать интересующимся о существовании этого проекта, к вечеру поток сойдет на нет, можно будет спокойно качать


      1. akinchicantonvasilevich
        16.03.2017 17:31

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


      1. valery1707
        17.03.2017 12:27
        +1

        Может стоило разместить сайт на GithubPages (исходники на Github, раздавать бинарник от туда же, и документацию сделать там же)?


        1. ultrablox
          17.03.2017 12:29

          На сайте я написал мини-cms с возможносью выкладывать новые версии по кнопке и несколько других полезных фич, упрощающих мне жизнь (в том числе движок для markdown-рендеринга документации с корректировкой относительных ссылок). Хотя не исключаю, что часть этого есть и там.


  1. Anilexis
    16.03.2017 15:30
    +1

    А диалоги с выборами реплик можно сделать?
    У Obsidian такой редактор чем-то на ваш похож — https://www.kickstarter.com/projects/inxile/torment-tides-of-numenera/posts/1119445


    1. ultrablox
      16.03.2017 18:57
      +1

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


  1. SL_RU
    16.03.2017 16:41
    +1

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


    1. ultrablox
      16.03.2017 19:01

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


  1. amarao
    16.03.2017 17:01
    +1

    Картинки на dropbox'е? Смешно. И не видно.


    1. ultrablox
      16.03.2017 18:58

      а как лучше сделать?


      1. amarao
        16.03.2017 19:00
        +1

        https://habrastorage.org/


  1. impetus
    16.03.2017 17:01

    А документации в едином скачиваемом файле нет? Привык как-то читать datashe pdf-ки… или ткните носом если в упор не вижу. Спасибо.
    Да инструмент полезный, я для этого даже IDEF0 себе пользовал бывало (просто был под рукой, небольшой проектик)


    1. ultrablox
      16.03.2017 23:10

      pdf-ной нету. Сделал на сайте небольшой движок, для рендеринга markdown-пакета. Но в оффлайн это нетривиально скомпилить.


  1. Areso
    16.03.2017 18:46
    +1

    Использую yEd.


    1. ultrablox
      16.03.2017 19:03

      Тоже сначала начинал с Visio, прежде чем начинать ultra_outliner :)


      1. Areso
        16.03.2017 19:17

        у yEd по сравнению с Visio есть три существенных преимущества: бесплатность, кросс-платформа, опенс-сорс (для тех, кому это важно).
        Но да, есть и недостатки.


  1. Mingun
    16.03.2017 20:58

    Что ж вы… Qt, а из папки с кириллическими путями не стартует...


    1. ultrablox
      16.03.2017 21:13

      как не стартует? по идее это уже давно решено.


      1. Mingun
        17.03.2017 20:03

        Странно. У меня не стартует из папки D:\Полезности\Закачки\Утилиты\ultra_outliner, но стоит перенести ultra_outliner в корень диска, запускается моментально.


        Win7 Pro, SP1, x64


        1. ultrablox
          18.03.2017 17:22

          действительно, к след версии исправится


  1. herrmannelig
    16.03.2017 21:57

    М-м, Труби. Я его даже переводил, пока он не вышел на бумаге.
    Спасибо за программу, дело замечательное и полезное.
    Присоединюсь к товарищу, который просил ветвистые диалоги — хотя бы даже в виде отдельной программы. Кмк, именно игры станут (уже стали) новым видом синтетического искусства; некоторые смысловые вещи в них настолько сильнее можно подать, чем в пассивных фильмах/книгах, что прямо хочется немедленно переверстать все заготовки на игросценарии.


  1. DSolodukhin
    17.03.2017 13:48
    +1

    Есть ли в планах открыть исходники?


  1. RocketMen
    17.03.2017 13:48
    +1

    Очень интересная идея
    Думаю это можно было бы применить для написания жизненных сценариев, прогнозирование событий, бывает это необходимо
    Еще мобильное приложение на айпад, я бы купил)


    1. ultrablox
      17.03.2017 13:49
      +1

      обещать не буду, но если удастся для экспериментов достать айпад, то может попробую портировать, благо QT на IOS портировано.


  1. pltnkv
    19.03.2017 21:59

    Посмотрите realtimeboard, тоже бесконечные доски с гибким функционалом. Если вы работаете над проектом не один, а в команде, то в нём может быть удобней


  1. maxgabba
    22.03.2017 16:52

    Понял, что нашёл отличный вариант для составления CJM ))