Пошаговая инструкция по созданию текстового квеста на android. Часть 1
Пару недель назад, в сотый раз перепроходя Colossal Cave Adventure, я задумался, почему сейчас выпускают так мало игр данного жанра. Ведь это целый мир, в который погружаешься с головой. С этой мыслью, я решил начать делать свои текстовые квесты. Именно этому и посвящается сегодняшняя статья, надеюсь вам понравится!
В первой части, я опишу все инструменты по созданию игры, не затрагивая сюжет. Вторая часть, будет посвящена работе с комментариями, дереву повествования и самому сюжету в целом. В третьей части я опишу, все затраты на рекламу, получение сертификатов, способы монетизации приложения.
Создание игры:
Первой трудностью, с которой мне пришлось столкнуться, стало то, что я по образованию далеко не программист. Раньше я думал, что создание текстовых квестов, требует кучи навыков, помимо умения грамотно писать. Но немного походив по форумам я нашел ее, программу, для таких же «безруких» как и я, и имя ей Twine. twinery.org
Twine – это программа, для создания интерактивной литературы. Ее функционал заключается в очень простой визуальной блок-схеме, а скриптинг представляет собой создание гиперссылок между отдельными узлами(блоками). В итоге получается готовая html игра, которую можно сразу запускать в браузере. Не смотря на свою простоту, она поддается глубокой настройке – вы можете поменять фон, добавить музыку, поиграться со шрифтами и т.д. и т.п. Все скрипты, для смены дизайна можете найти на этих сайтах: twinery.org/wiki/script
github.com/scelis/twine
Встроенный функционал включает в себя базовые элементы программирования, такие как переменные и операторы «если». Сообщество Twine написало множество разных макросов на Javascript, значительно расширяющих возможности утилиты, и их можно добавлять в любой проект простым копированием. Также можно скачивать темы для смены оформления программы. Вы можете создать свою таблицу стилей для самостоятельной настройки внешнего вида. Лично я, приверженец классического черно белого стиля. Но мне не понравился стандартный шрифт, тогда я буквально за минуту нашел код, и добавил нотку индивидуальности в свой квест. Если кому интересно скрипт в спойлере.
Какие есть команды для Twine?
Я хочу разработать свой текстовый квест.
Я не программист, не знаю ни единого языка.
Один добрый человек посоветовал использовать Twine и ещё несколько прог, но я остановился на twine.
Единнственное что я знаю — что скобки [[ ]] обозначают действие. К примеру: [[Выйти на улицу]] [[Выпить сока]]. Чисто пример.
Как сделать, что бы текст до выбора между действиями игрока, появлялся не сразу а примерно по 3-5 секунд. То есть, появилась надпись «Привет» и через 3 секунды следующая «Что делаешь?». Надеюсь доступно обьяснил.
Ещё мне нужно, что бы можно было регулировать скорость появления надписей (50%, 100% и 200% например) и размер букв.
Изменить обычный шрифт, покрасить его.
В общем — жду команд, надеюсь на вашу поддержку.
- Вопрос задан более трёх лет назад
- 10915 просмотров
Twine 2. Обзор и руководство для начинающих
По просьбам трудящихся и своей инициативе – разбор Twine 2, инструмента для написания Интерактивной литературы и текстовых квестов.
Дисклеймер: в тексте много технических подробностей, мыслей в слух и мелочей, которые можно пропустить при первом знакомстве с инструментов. Оно все убрано под спойлеры.
Об Twine
Twine 2 – это идейный потомок проекта Twee/TweeBox. В свое время существовал проект Twee, написанный на языке Python. Его внутренняя система разметки/макросов больше всего напоминала Wiki-разметку. Насчет популярности не скажу, но своя армия фанатов у него была. Достаточно большой проблемой Twee была ее скорость работы. Поскольку движок был написан на Python, для сборки десктопных приложений использовалась библиотека wxWidgets, известная своей невысокой скоростью работы.
Позже был создан TweeBox — порт, переписанный на JavaScript. А потом Twee был переименован в Twine. Возможно, в то время и отпочковался коммерческий проект AXMA, более известный у нас, нежели ее прародитель. Потому что сделан и продвигается отечественной командой разработчиков.
К слову, AXMA сохранила тормознутость предшественника. Кто-то говорит. что все нормально, но у меня она всегда тормозит. А еще меня отталкивает жопоголизм разработчиков: за 1000 рублей нам предлагают сохранение HTML-файла, отсутствие копирайта AXMA в файле и (sic!) лицензия на редактирование файла. Это как если бы Adobe требовали ставить копирайт «powered by PhotoShop» в каждой отфотошопленной фотке. И меня пугает внутренний язык разметки/макросов. Но тут кому как.
Сейчас Twine полностью переписан на JavaScript (jQuery/Backbone/Underscore), вместо wxWidgets использует среду исполнения node-webkit. Это дало ей преимущество в скорости. И возможность делать самые разные вещи, которые мы рассмотрим, когда будем собирать готовое приложение для публикации.
Внутри Twine 2 есть такие языки как Harlowe и SugarCube (старый wiki-образный код + чорное оформление). Так же присутствует SnowMan, который предлагает использовать вместо макросов чистый JS внутри тэгов вида .В целом, для людей, работавших с AXMA или писавших свою IF-книгу на чистом HTML, проблем возникнуть не должно.
Об Harlowe
Harlowe – достаточно простой и логичный язык макросов, встроенный в Twine 2. Писать на нем лично мне оказалось гораздо проще, удобнее и понятнее, чем в AXMA. Я «верующий» программист, и верую в то, что язык должен отвечать задачам. А писать скрипты в Wiki-разметке это содомия. Прочитайте про философию MVC на досуге.
Внешне Harlowe выглядит совместным потомством языков Clojure и Python. От первого ему достались команды, обернутые в круглые скобочки и минимальный набор используемых знаков пунктуации; а от второго он получил наименование переменных через $variable, три вида массивов и отсутствие «логических скобок» в некоторых макросах. Хотя лично я бы сделал Harlowe более питонообразным. Потому что макрос вида (if (a>b): (print «a>b»)) выглядит изящнее чем (if: (a>b))[(print: «a>b»)]. Как минимум, меньше вложенных скобочек, и в первом случае я лучше вижу логику.
Еще в Harlowe есть inline-оператор <>. Фигурные скобки позволяют превратить несколько абзацев текста в одну строку и убрать лишние пробелы. Очень удобно, потому что Twine понимает переносы строк внутри составных макросов как переносы в тексте.
Из разметки полезно запомнить *Наклонный текст*, **Жирный текст** и ^^Верхний индекс^^.
(set: $variable to value) – устанавливает некоторое значение в переменной. Имя переменной начинается на $.
(print:) – выводит некоторый текст или результат вычислений. Например (print: 5 + 5) выведет 10.
(display: «имя параграфа») – выводит содержимое параграфа.
(if:)[](else-if:)[](else:)[] – стандартная логическая цепочка if-else. В квадратных скобках пишутся действия, которые выполняются при условиях. В (if:) и (else-if:) после двоеточия пишется условие, в(else:) — нет. конструкций (else-if:) может быть несколько. В целом, такая структура соответствует операторам switch-case-dafault в том же JavaScript.
(a:) – создает нумерованный массив. Элементы массива указываются после двоеточия через запятую: (a: 1,2,3,4,5).
(datamap:) — создает именованный массив вида ключ-значение. Т.е. (datamap: «Name1», Value1, «Name2», Value2) вернет массив строк Name1 и Name2, которым соответствуют значения Value1 и Value2.
Макрос (datanames:) вернет массив имен в datamap, а (datavalues:) — список значений.
(current-date:), (current-time:), (monthday:) и (weekday:) возвращают Текущую дату, Текущее время, Число месяца и День недели.
(link: «text»)[New text] — создает интерактивную ссылку, после нажатия на которую текст ссылки подменяется на содержимое квадратных скобок.
(link-reveal: «text»)[after text] — создает ссылку, по нажатию на которую текст ссылки дополняется текстом из квадратных скобок.
(link-goto: «text», «passage») — полный аналог [[text->passage]].
(link-goto: «passage») аналогичен [[passage]].
(go-to: «passage») – безусловный переход на блок passage.
(alert: «Message») — выводит сообщение.
(confirm: «Message») — выводит сообщение с кнопками ОК и ОТМЕНА. Возвращает true или false. Использует Python-подобный принцип: (set: $wantCake to (confirm: «Do you want a cake?»)) – и позволяет напрямую забирать ответ пользователя.
(prompt: «Message») — выводит сообщение и поле для ввода. Можно использовать для запроса пользовательского имени: (set: $name to (prompt: «Your name, please:»)).
Это самые основные макросы, которые понадобятся в самом начале. Остальное есть в документации по Harlowe.
Интерфейс Twine довольно прост. Его можно разделить на главное окно и окно истории. На главном окне вы видите список своих историй, открываются они двойным кликом. В меню справа полезные кнопки это + История, Форматы, и Язык. В меню Форматы можно выбрать между форматами Harlowe, Snowman и SugarCube и выставить его по умолчанию. Harlowe стоит по умолчанию, собственно о нем и идет здесь речь.
После нажатия на + История нам предлагают ввести имя истории и Добавить ее или Отменить решение. История появится в левом верхнем углу списка. На самом блоке истории отображается миниатюра истории. В правом верхнем углу миниатюры под значком шестеренки скрываются подменю: Запустить историю, Тестировать историю, Опубликовать в файл, Переименовать историю, Сделать дубликат истории. Чтобы открыть историю для редактирования по ней нужно кликнуть два раза.
В окне истории вы видите синее размеченное поле и меню внизу. Там расположены кнопки Домой в виде домика, Кнопка с названием истории, поисковая строка, кнопки масштаба,Тестировать, Запустить и +Параграф. В меню с названием истории есть разделы Редактировать JavaScript, Редактировать таблицу стилей, Сменить формат истории, Переименовать историю, Привязать к сетке, Статистика истории, Получить копию для вычитки и Опубликовать в файл. Лично для меня полезными были Редактировать JavaScript (учтите, скрипт загрузится в самом начале, до того, как загрузился движок, на котором работает сама игра), Редактировать таблицу стилей, Привязать к сетке (очень удобная вещь), получить копию для вычитки и Опубликовать в файл (открывается окно для сохранения истории в standalone-файл с движком внутри).
Чтобы добавить параграф нужно нажать + Параграф. На поле появится новый блок. У блока есть всплывающее меню из четырех иконок: Удалить, Изменить, Тестировать и Сделать «имя параграфа» отправной точкой истории. Параграф так же можно удалить кнопкой Delete, а открыть двойным кликом.
У каждого параграфа есть название, на на которое ссылается указатель, а так же тэги, которые можно использовать для стилизации и форматирования. В меню окна приложения есть пункты Twine и Редактировать. В меню Twine есть пункт Показать библиотеку – удобно для добавления историй, хотя это можно сделать через главное меню. Отменять/вырезать/копировать/вставлять можно и через Ctrl+Z/X/C/V. Да, правая кнопка мыши не работает.
Процесс создания игры
В качестве примера по созданию простой игры я буду переносить на Twine свою же игру Press [RE:START]. Исходники можно взять здесь, готовый Twine-файл со стилями здесь.
Для начала я создаю пустой параграф index и вставляю туда исходный тест первой страницы, который помещен внутрь .
Поскольку Twine довольно превратно понимает [квадратные скобки], тест всех ссылок нужно обрамлять в [ ]. Однако, если ВСЕ ваши ссылки обрамляются таким образом, проще открыть Меню истории -> Редактировать таблицу стилей и добавить следующий блок: tw-link:beforetw-link:after .
Twine автоматически создает параграфы, на которые были добавлены ссылки, поэтому проблема с созданием параграфов вручную отпадает сама собой.
По очереди переносим содержимое всех страниц в соответствующие блоки, заменяю ссылки на квадратные скобки. Поскольку лишний раз перетаскивать и переписывать мне было лень, ссылки я оформлял в обратном стиле: [[имя параграфа
Поскольку мне не нужно возвращаться к предыдущей странице, я открываю в меню «редактировать таблицу стилей» и пишу туда: tw-sidebar . Это позволяет скрыть сайд-бар, на котором показываются стрелочки. В принципе, в Twine можно вставлять код на JavaScript/jQuery, но он исполняется сразу при загрузке, а сами «страницы» генерируются динамически из текста пассажей. Поэтому полностью удалить сайд-бар или набить его новым функционалом через JS лично у меня пока не получается.
Как видите создание страниц довольно просто само по себе, расширять функционал можно через макросы.
В Harlowe учитываются тэги, прикрепленные к блоку. Добавить их можно по кнопке +Тэг под названием истории.
Если вы хотите добавить шаблонный элемент, который будет на каждой странице, добавьте тэг header (содержимое будет отображать над текстом) или footer (содержимое будет отображать под текстом).
Тэг startup позволяет вставить макросы, которые загружаются до начала истории. Здесь можно, например, проинициализировать все переменные.
Так же Harlowe поддерживает локальное хранилище в браузерах. Это позволяет сохранять и загружать состояния игры:
(savegame: «Slot A») — сохраняет игру в слот «Slot A»
(loadgame: «Slot A») — загружает игру в слоте «Slot A»
(saved-games:) — возвращает список сохранений.
В Harlowe есть свои особенности по обращению с переменным и массивами в частности. Так, можно напрямую обратиться в элементу массива через (a:)’s 1st, 2nd, 3rd или last. Так же вместо этого поддерживается синтаксис вида (a:)’s (1) для доступа к первому элементу, (a:)’s (-1) — к последнему элементу.
Twine 2, поскольку он написан на HTML/JS, поддерживает скрипты и HTML/CSS. Для кастомизации содержимого через CSS полезно знать следующие элементы внутренней разметки Twine 2:
- tw-story — корневой элемент истории
- tw-passage — элемент, в котором рендерится сама история. Содержит стандартные свойства, аналогичные элементу div, стой лишь разницей, что свойство width имеет значение по умолчанию 60%.
- tw-link — элемент, в который оборачиваются ссылки типа (link:), (goto:) и [[]]. Поддерживает класс .visited.
- tw-sidebar — элемент, в котором отображаются кнопки вперед и назад.
- tw-icon — иконки вперед и назад. Класс .undo отвечает за иконку назад, .redo — за иконку вперед.
- mark — элемент, используемый для части HTML, которую нужно оставить без изменений. по умолчанию имеет свойства color:rgba(0,0,0,0.6); background-color: #ff9.
Итого:
- Из плюсов: Twine 2 получился удобным, понятным и быстрым. Язык макросов Harlowe – простой, понятный и единообразный. А люди, знакомые с Python, вообще будут себя чувствовать как дома.
- Из минусов: сложность внедрения JavaScript (статьи предлагают прописывать функции через window.имяФункции() ) и невозможность написания собственных макросов. Что характерно, для SugarCube свои макросы писать можно.
- Из неожиданного: Twine мало известен в русском IF-сообществе, но получил распространение среди маргинальных и ЛГБТ-игроделов. Русская Twine-тусовка позиционирует себя как крайний андерграунд и анти-мейнстрим. Даже на фоне всего остального IF-сообщества. Подробнее – здесь.
Публикация готовой игры
Предельно простой вариант
В левом нижнем меню вашей истории выберите «Опубликовать файл» и укажите куда его сохранить. Twine сам соберет HTML файл и добавит в него код движка. Остается только опубликовать. Для этого у сообщества Twine есть сайт philome.la. Или можете разместить ее в любом другом месте, на страничке уже есть код движка.
Node-WebKit
- Экспортируйте историю, сохранив под названием index.html
- Скачайте Node-Webkit (если хотите, можете скачать сборку не под вашу операционную систему, например для Linux)
- Распакуйте его в папку с экспортированным файлом
- Откройте package.json и добавьте туда: >
- Для проверки запустите nw.exe — должна запуститься ваша история. Можете переименовать nw.exe и заархивировать.
Рецепты
Вариант первый
- Создайте отдельный параграф startup и добавьте ему тег startup.
- В блок вставьте следующий код:(set: $inventory to (a:)). Эта строка создает пустой массив для инвентаря.
- Создайте блок inventory с тегом inventory и вставьте следующий код: (text: $inventory.join(«\n»))(link-repeat: «back»)[(goto: (history:)’s last)] .
- Создайте блок footer с тегом footer. Это шаблон, который будет выводиться внизу страницы. Вставьте следующий код: (if: (passage:)’s tags contains «inventory»))[](else: (link-repeat: «check inventory»)[(goto: «inventory»)])
Вариант второй
- Создайте отдельный параграф startup и добавьте ему тег startup. В блок вставьте следующий код: (set: $inventory to (a:))
- Создайте блок footer с тэгом footer и вставьте следующий код:
- В левом нижнем углу откройте меню и выберите «Редактировать таблицу стилей» и вставьте: .inventory Теперь ваш инвентарь отображается в блоке справа на каждой странице.
Кстати
Я использую объединенный вариант, потому что решил сделать систему с инвентарем и журналом.
При создании большого проекта, состоящего из over9000 страниц, или совместном написании проекта могут возникнуть трудности с размером файла. Поэтому предлагаю такой рецепт:
- Создавайте историю как несколько блоков – в Twine это можно сделать создавая их как отдельные истории с именами Имя истории-1, Имя истории-2 и т.д.
- Проверьте, что у ваших историй есть входы и выходы – они могут висеть пустыми. Главное чтобы окончание истории имело продолжение в другой, с таким же названием. После чего можете удалить висячие параграфы
- Проверьте, не повторяются ли у вас общие блоки. Это могут быть характеристики персонажа, инвентарь, журнал. Удалите эти блоки из всех историй, кроме, например, первой или последней.
- Создайте пустой проект с названием Имя истории и удалите из него автоматически созданный блок.
- Проверьте любую мелочь, которая может отвалиться.
Когда Twine прогрузится, в правом верхнем углу истории (общий файл, без цифр), нажмите на иконку шестерни и выберите Опубликовать в файл. Остальные действия такие же, как были описаны выше, в разделе Публикация.
Полезные ссылочки
Собственно Twine 2. В правом верхнем углу нажмите Download и получите копию под свою OS.
Моя собственная папка Twine 2 в Google Drive, где я буду выкладывать наработки, статьи и переводы руководств. Но это не быстро – одно только руководство по Harlowe занимает 50 страниц. Эта статья тоже выложена, открытая для комментариев и предложений.
Для вопросов есть личка на Gamin.me и совершенно открытая личка в vk.
Спасибо за внимание, еще раз извините, что пришлось выкладывать на Google Docs, так еще и сырую версию с «апичаткаме».
- Cheshire deKat
- 25 апреля 2016, 10:01
Инструменты: Diagram и Twine для прототипа сценария
Привет, на связи Марго. Работая с Костей над концептом сценария для “Тенебры”, я долгое время искала удобные инструменты и паттерны проектирования, которые удовлетворили бы наши потребности. Перебрав десятки различных программ и приложений, я остановилась на диаграммах, для чего-нибудь очень простого, и Twine — для прототипирования ветвления сюжета. Чтобы написать линейный сценарий, можно обойтись одним гугл документом. Сейчас, работая над приквелом к событиям игры, мне не требуется сложных инструментов. Есть канва событий, у повествования есть исходная точка и конечная цель, есть персонажи с понятными взаимоотношениями. Сиди и пиши по порядку, в соответствии плану или поддаваясь творческому порыву. Как только появляется вариативность, задача усложняется. Поэтому, сегодня я хочу поговорить с вами о том, почему стоит рассмотреть для прототипирования именно Twine. Есть и другие альтернативы, типа Articy:draft, но я им не пользуюсь, поэтому не могу ничего о нём сказать. Начнём с самого простого:
Диаграммы
Diagram.net — удобный сайт для создания блок-схем. В нём мы планировали переплетение антагонистов, локаций и любовных интересов, которые могут выступать совсем в разных ролях, в зависимости от маршрута. Мне требовалась визуализация, чтобы разобраться в расстановке сил при разных стечениях обстоятельств. Люблю сравнивать это с шахматной партией, где от решений игрока зависит будущее расположение фигур на доске. В этом же сервисе, мы набросали основу и принципы ветвления сюжета: Здесь хорошо видно, что после пролога идёт первое глобальное ветвление сюжета с выходом в рыжую ветку, куда события буквально утягивают игрока, стоит ему сделать хоть один выбор в их пользу. Там есть блок с выборами между Уильямом и Сильваном, чтобы перенаправить читателя в один из двух маршрутов, или оборвать игру, если тот не смог заработать достаточно очков взаимоотношений с кем-то из них. Для “Тенебры” была выбрана концепция усложнения выхода на некоторые маршруты, чтобы дать постепенное погружение в бэкграунд и не раскрывать сразу всех карт. В каждом из восьми сюжетов, вы углубитесь лишь в какую-то часть вселенной, получите ответы на разные вопросы по мироустройству и взаимоотношениям персонажей. Для задач с визуализацией подойдёт любой сервис блок-схем или доски, типа Miro. Я выбрала Draw.io потому что он:
- Интегрируется с гугл.
- Не виснет, не багается, прост в использовании.
- Не имеет ограничений на количество страниц, итемов и т.д.
- Может сохранить файл в виде изображения.
Twine
Разобравшись с лором, правилами мира, альтернативной историей вселенной, персонажами, основами их характеров, взаимоотношений и темами их сюжетов, мы подобрались к созданию прототипа.
У нас есть блок-схема, общее представление о том, чего мы хотим добиться, и несколько чек-поинтов: пилотная сцена, выход из пролога, несколько блоков ветвления с выходами на четыре самостоятельные ветки в разных локациях, три блока с проверками перед выходом на персональные маршруты и восемь любовных сюжетов с набором концовок.
Каждый блок содержит в себе набор сцен с выборами, SMS сообщениями, телефонными разговорами, которые меняют взаимоотношения главной героини с окружающими персонажами. При переходе из блока в блок, осуществляется проверка очков, чтобы читатель мог ознакомиться с результатами своих действий не только в момент выбора, но и глобально.
Какие у нас были потребности:
- Наглядность.
- Возможность легко попасть в любую сцену для детализации.
- Инкапсулированность. Чтобы каждая сцена имела свою карточку или отдельный файл.
- Возможность вводить большое количество форматированного текста без ухудшения наглядности.
- Надежность сервиса, чтобы он не подвисал из-за объемов.
- Отсутствие лимитов на количество объектов.
- Возможность показать это людям, дать потыкать и получить результат от сделанных ими выборов. Поддержка переменных.
- Простота, чтобы никому кроме меня не пришлось устанавливать никаких приложений.
Twine подошёл по всем пунктам. Он не слишком интуитивен, его интерфейс не юзер френдли, мне пришлось посмотреть видео-гайд и прочитать туториал. Но в результате, я смогла делиться наработками с помощью простого html файла, который фокус группа запускала из браузера.
Работа с блоками в Twine
Их можно назвать карточками, блоками, элементами. В программе они называются “параграфами” и создаются двумя способами:
- В правой нижней части экрана по нажатию на большую зелёную кнопку.
- Либо из тела других параграфов с помощью одной строчки. Например: [[Ответить на звонок|C7]] Двойные скобки обозначают инициализацию запроса. “Ответить на звонок” — как пользователь/тестировщик увидит ссылку. ”C7” — название параграфа, в который перейдёт пользователь по клику.
Я пользуюсь вторым способом, пока работаю с предыдущим блоком.
Теперь, давайте обратим внимание на возможности карточки, которые добавлены разработчиками через интерфейс. Там есть форматирование текста: жирный текст, наклон, перечеркнутый, сделать цветной фон тексту, рамку, работа с заголовками, центрированием, пунктами, использование кода или встроенных часто используемых методов движка.
Примерно так будет выглядеть карточка “0.0.9”
При желании, туда можно добавлять картинки, музыку, звуки, скрывать часть текста и выводить его по клику. Возможностей очень много, но для прототипа я пользовалась минимумом: выделяла цвет маршрута, отслеживала индекс сцены, дату происходящего, записывала локацию и время суток, чтобы контролировать таймлайн.
Но есть функции ещё более интересные!
Переменные
Чтобы сделать прототип играбельным, т.е. отслеживать изменения в зависимости от выборов читателя, у Twine есть поддержка переменных. Если простыми словами — это очки репутации с персонажами. Например, чтобы попасть на ветку братьев, достаточно получить один балл или сделать роковой выбор в приватной комнате. Чтобы выйти на маршрут Уильяма, нужно набрать условных шесть баллов, чтобы события сложились в пользу их сближения, когда будет производиться проверка событий.
Создание переменных: (set: $William to 0)
Изменение переменных: (set: $Sylvan to ($Sylvan + 1))
Проверка переменных: (if:$Brothers >= 2)
В примере видно условия:
Если переменная братьев больше или равна двум, то игрок увидит первый блок текста, где Уильям не поверил Беатрис и не оставил ей никакого выбора. Читатель попадает на маршрут братьев.
Если переменная меньше двух, то Уильям не настаивает на помощи, а читатель остаётся в фиолетовой центральной ветке, чтобы пройти по сюжету дальше, где устроится на работу в клуб, познакомится с Моррисом и Рю, получит ещё кучу разных SMS, несколько раз поговорит по телефону и т.д.
Архитектура
Чтобы не запутаться, я индексировала сцены. Пример: 1.2.12
1 — это глобальная ветка (фиолетовая, рыжая, синяя, красная) 2 — это маршрут внутри ветки (любовная линия персонажа) 12 — номер сцены
Получается, у нас двенадцатая сцена в маршруте Сильвана, который является вторым по счёту в рыжей ветке. Первый — Уильям. Нулевой — это блок выбора между персонажами.
Но циферок, кажется, немного больше.
Например, на скриншоте есть 0.0.6/1 — вторая часть шестой сцены центрального маршрута. То есть, попав в шестую сцену, мы прочитали некоторый блок текста, а потом Беатрис получила SMS. Перед ней выбор — ответить на сообщение или проигнорировать его. Лишь совершив выбор, читатель получает следующий блок текста той же сцены. Событий в одной сцене может быть несколько и нам важно, что выбрал игрок, чтобы посчитать переменные.
Вот ещё один скриншот:
Я группировала сцены и всё что к ним относится.
Из 0.0.16 у нас два события: SMS и звонок.
В 0.0.17 мы планировали выбор в диалоге и SMS от Мартина.Когда мы прототипировали сценарий, сообщений приходили по одному, и порой посреди диалога. Игрок мог ответить или проигнорировать, что сказывалось на сюжете. Позже, мы оставили SMS в активных сценах только от анонимного отправителя, чтобы он продолжал нагнетать своей осведомленностью о жизни Беатрис. А другие сообщения объединили с целые диалоги, чтобы дать игроку початиться с персонажами в спокойных сценах.
Итог
Думаю, читая эту статью, вы заметили ужасное качество текста на скриншотах. Я хочу заострить внимание на том, что такое «прототип» и какие этапы проходит работа с текстом. Потому как неоднократно встречала людей, которые искренне считают, что сейчас прочитают стопку книжек, а потом с первого раза родят идеальный текст.
Нет, такого не бывает. Хотя, ещё больше людей думают, что можно вообще с нуля, не читая и не прибегая к помощи других сценаристов/редакторов, сотворить шедевр, которого ранее не видел свет.
Стадии
Наша работа над сюжетом поделена на несколько итераций:
1. Прототипирование.
2. Тестирование.
3. Написание чернового текста.
4. Логическая сверка с аналитиком.
5. Переработка, улучшение, работа с ритмом текста.
6. Логическая сверка с аналитиком.
7. Редактура и коррекция.
8. Перевод.Прототип
Учитывая, сколько пунктов в этом списке, вы уже должны были догадаться, какую стадию мы внесли в Twine. Создавая карточку для сцены, важно понимать, для чего создаётся эта сцена: знакомство с персонажами, раскрытие какой-то важной информации по лору или сюжету, важные сюжетные узлы, твисты, раскрытие характеров, возможность повлиять на сюжет. В будущем, я бы хотела прописывать эту информацию прямо в карточках. Её можно сделать скрытой от тестеров через переменную.
Чтобы сделать первую обкатку сценария, совсем не обязательно выводить каждую строчку, убиваться литературностью, стараться в ритм и красочность. Нужно сухо и лаконично задокументировать события, набросать суть диалогов: кто говорит, зачем говорят, о чём, как реагируют на слова собеседников. Воспринимайте это как детализированный план, на основе которого, вы потом начнёте писать черновик, который подвергнется ещё нескольким драфтам.