Twine 2 руководство: Twine 2. Обзор и руководство для начинающих

Содержание

Полезные линкинки TWINE

Вы не залогинены. Что это значит?

Документация по языкам Twine

Общая Wiki TWINE – http://twinery.org/wiki/start

Язык Harlow

Язык/Формат Harlow

Официальная документация – https://twine2.neocities.org/3.html

Язык SugarCube

Язык/Формат SugarCube

Официальное описание языка: http://www.motoslave.net/sugarcube/2/

Документация: http://www.motoslave.net/sugarcube/2/docs/

Русская локализация: http://www.motoslave.net/sugarcube/download.php/2/locale/ru-locale-for-sugarcube-2.zip

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

Что такое Twine (для разработчиков)?
Twine 2. Обзор и руководство для начинающих

Основной корпус текстов и коммунити на английском языке.

1. Видео тьюториал по Twine – 22 видео – общий объем не более 2,5 часов: https://www.youtube.com/playlist?list=PLlXuD3kyVEr5tlic4SRe6ZG-R9OyS1T4d
2. Наиболее фундаментальная книга, почти энциклопедия: Writing Interactive Fiction with Twine Melissa Ford – http://ptgmedia.pearsoncmg.com/images/9780789756640/samplepages/9780789756640.pdf

3. Пример игры Меллисы: https://www.melissafordauthor.com/a-very-empty-basket-mobile-version/
4. A Quick Twine (2.2+) Tutorial by Allison Parrish    http://catn.decontextualize.com/twine/
5. How to use Twine and SugarCube to create interactive adventure games: https://opensource.com/article/18/2/twine-gaming
6. Welcome to the Twine Cookbook! The Twine Cookbook is a collection of examples organized around common topic areas: http://twinery.org/cookbook/
7. Официальное руководство – SugarCube v2 Documentation: http://www.motoslave.net/sugarcube/2/docs/
8. Frequently asked questions. http://twinery.org/wiki/frequently_asked_questions?s[]=import

Коммунити

1. Welcome to the Interactive Fiction Community Forum!  https://intfiction. org/c/authoring/choice-based-if
2. Коммунити на reddit: https://www.reddit.com/r/twinegames
3. Дискорд – https://discord.gg/n5dJvPp
4. Официальный форум вопросов и ответов: https://twinery.org/questions/

Инструменты

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

Минимально рекомендуемый набор:

Рекомендую для структурированных текстов:

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

1. Создание и разработка истории включает работу с текстом и работу со структурой текста.

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

Бесплатные инструменты:

  • https://docs.google.com/document/ . Позволяет работать в облаке с любого компьютера, позволяет делиться документами, получать отзывы. Полезен для получения отзывов финальных документов. Для работы со структурами не удобен.
  • Page на MAC – простой, мало функций.

Платные инструменты:

  • Evernote – работает в облаке, на компьютере, синхронизируется с любых устройств, позволяет делиться документами, получать отзывы, можно работать с структурированными документами, создавая папки, блокноты, вставляя теги и референсы. Удобен для исследований и копирования текстов из интернета. Хорош для записей и дневников. Для работы с большими серьезными текстами не удобен. Стоит  8$/месяц (около 100$/ год). Есть бесплатная версия с усеченным функционалом.
  • Scrivener – пока мне понравился больше всего. Удобен для создания сложных структурированных историй, много развитых профессиональных функций. Из недостатков – недешевый 45$ + нет возможности делиться документами, получать отзывы.
  • Word на Windows – описывать не буду. С моей точки зрения не очень приспособлен для работы со структурированными текстами. Т.е. на нем можно все делать, но есть более удобные и развитые инструменты. К тому же, формально MS Word не бесплатный.
  • Относительно неплох https://writerduet.com – все в интернете, есть русский язык, ориентирован на сценаристов, есть б/п версия, платная от 12$/месяц. Позволяет делиться документами и работать в команде. Для работы со структурированными документами менее удобен.
  • https://www.celtx.com – очень мощная штука. В базовой комплектации б/п, но в полной надо платить – для сценариев от 15$/месяц – есть опция для написания нарративов игр, включая интерактивные истории – от 20$/месяц с оплатой за год. Получается 220$ – дорого. Для профессиональной работы это норм, для обучения оверкил)))
  • Story Planner – Русифицированное приложение по созданию набросков сценариев и литературных произведений. Недорого. Не пробовал. Эту программу продвигают для смартфонов, но я не очень верю, что серьезные тексты можно писать на смартфоне или планшете.

Обзоры программ

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

2. Создание нелинейных, интерактивных истории, гейм-дизайн.

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

  • Для записи, структурирования текстов и исследований я использую Evernote. Можно исползовать любой аналог.
  • Однако для серьезной работы именно с структурированными текстами рекомендую Scrivener.
  • Для таблиц – подойдут любые электронные таблицы. В них вы будете записывать параметры сцен и эпизодов.
  • Для построения деревьев – очень удобна бесплатная http://draw.io/ – ее можно скачать и работать в облаке. Также неплохо Google Drawing
  • Для иерархических деревьев я использую MindMap компании Odessa, но она дорогая. Есть много бесплатных программ для Mind Map. Все можно делать в бесплатных http://draw.io/ и Google Drawing
  • Платная, и многообещающая – http://www.chatmapper.com/
  • Не могу не отметить articy:draft – профессиональная программа, но не дешевая.

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

3. Создание интерактивных историй и текстовых игр в виде играбельного файла или приложения.

Мы на курсе будем использовать Twine, но вам стоит знать, что есть много движков. Здесь можно найти огромный список: Another Interactive Fiction Engine List

4. Создание визуальных новелл.

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

Что такое визуальные романы?

Движки для создания визуальных новел.

Книжки по Twine на английском языке

#1 – очень рекомендую – Writing Interactive Fiction with Twine 432 стр./ 12$ https://www.amazon.com/Writing-Interactive-Fiction-Twine-Melissa-ebook/dp/B01ERR2TN2/

#2 известный автор и эксперт – Make Your Own Twine Games! 102 стр./ 12$ – https://www.amazon.com/Make-Your-Own-Twine-Games-ebook/dp/B07BPMS2L5/

 

Как сделать текстовый квест за два часа — Gamedev на DTF

{"id":98786,"url":"https:\/\/dtf.ru\/gamedev\/98786-kak-sdelat-tekstovyy-kvest-za-dva-chasa","title":"\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u0432\u0435\u0441\u0442 \u0437\u0430 \u0434\u0432\u0430 \u0447\u0430\u0441\u0430","services":{"vkontakte":{"url":"https:\/\/vk.com\/share.php?url=https:\/\/dtf.ru\/gamedev\/98786-kak-sdelat-tekstovyy-kvest-za-dva-chasa&title=\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u0432\u0435\u0441\u0442 \u0437\u0430 \u0434\u0432\u0430 \u0447\u0430\u0441\u0430","short_name":"VK","title":"\u0412\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u0435","width":600,"height":450},"facebook":{"url":"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https:\/\/dtf.ru\/gamedev\/98786-kak-sdelat-tekstovyy-kvest-za-dva-chasa","short_name":"FB","title":"Facebook","width":600,"height":450},"twitter":{"url":"https:\/\/twitter.com\/intent\/tweet?url=https:\/\/dtf.ru\/gamedev\/98786-kak-sdelat-tekstovyy-kvest-za-dva-chasa&text=\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u0432\u0435\u0441\u0442 \u0437\u0430 \u0434\u0432\u0430 \u0447\u0430\u0441\u0430","short_name":"TW","title":"Twitter","width":600,"height":450},"telegram":{"url":"tg:\/\/msg_url?url=https:\/\/dtf.

ru\/gamedev\/98786-kak-sdelat-tekstovyy-kvest-za-dva-chasa&text=\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u0432\u0435\u0441\u0442 \u0437\u0430 \u0434\u0432\u0430 \u0447\u0430\u0441\u0430","short_name":"TG","title":"Telegram","width":600,"height":450},"odnoklassniki":{"url":"http:\/\/connect.ok.ru\/dk?st.cmd=WidgetSharePreview&service=odnoklassniki&st.shareUrl=https:\/\/dtf.ru\/gamedev\/98786-kak-sdelat-tekstovyy-kvest-za-dva-chasa","short_name":"OK","title":"\u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0438","width":600,"height":450},"email":{"url":"mailto:?subject=\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u0432\u0435\u0441\u0442 \u0437\u0430 \u0434\u0432\u0430 \u0447\u0430\u0441\u0430&body=https:\/\/dtf.ru\/gamedev\/98786-kak-sdelat-tekstovyy-kvest-za-dva-chasa","short_name":"Email","title":"\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043f\u043e\u0447\u0442\u0443","width":600,"height":450}},"isFavorited":false}

39 606 просмотров

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

Пример страницы из текстового квеста, сделанного в Twine​

Скорость разработки текстового квеста в этом инструменте ограничена фактически только вашей скоростью по созданию собственно текста. Тестовый пример к этой статье в 1900 слов и 12000 знаков с пробелами я написал за 2 часа (ссылка в конце) . Примерно столько же я потратил на черновик этой самой статьи.

Да, редактуру и вычитку лучше проводить по отдельной колонке расхода времени, иначе это морально вас может убить. А, может, сделает сильнее.

Суперсила Twine

Сила Twine в том, что он позволяет увидеть связи между узлами текстового квеста в виде схемы.

​Редактор историй показывает схему связей между локациями

Когда-то я писал текстовые игры как обычный код в текстовом редакторе. Там приходилось решать кучу вопросов:

  • все ли узлы связаны переходами;
  • все ли задуманные выборы реализованы, то есть ведут к какому-то тексту;
  • нет ли у меня «потеряшек» — висячих узлов, в которые невозможно попасть.

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

Twine решает массу таких проблем тем, что просто показывает графическую схему. И все «потеряшки» видны как на ладони — как и густота связей, нереализованные варианты и так далее.

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

Итак, Twine — это комбинация трёх инструментов в одной программе:

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

Где взять

На сайте Twinery.org лежат свежии версии для Windows, MacOs и Linux — никто не уйдет обиженным. Их надо скачать, установить и запустить. Это продукт с открытым кодом, если интересуетесь - можете заглянуть на GitHub проекта, но для разработки собственно текстовых игр это не нужно — главное, запустить редактор историй. Здесь и далее я буду описывать работу с Windows-версией. И, кстати, тут есть тёмная тема!

Тёмная тема, язык и подготовка к работе

При открытии Twine выглядит примерно так. У вас, скорее всего, он будет светлым.

По умолчанию Twine включает светлую тему

Чтобы включить тёмную/светлую тему, надо кликнуть на иконке луны или солнца внизу справа.

Чтобы выбрать русификацию или адаптацию под другой язык, нажмите на кнопку Language и выбирайте. Есть украинский, китайский, испанский... всего 20 локализаций. Это влияет только на внешний вид самого редактора, текстовая игра будет на том языке, на котором вы будете набирать текст, что видно на скриншоте.

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

​Stories и Истории —  исходники для разных локализаций Twine (не игр!) лежат в разных папках

Файлы проектов в Twine хранятся под Windows в директории «Документы» для текущего пользователя. У меня были разные эксперименты: одни я делал под английским интерфейсом, другие —под русским, поэтому первые сохранились в папке Stories, вторые — в «Истории». И, да, китайский интерфейс создаёт на вашем компьютере папку с иероглифами. Это не проблема, просто забавно.

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

Как создать текстовую игру в Twine

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

Ах, форматы! Я забыл сказать, что Twine — прекрасно расширяется с помощью разных форматов, которые можно воспринимать как микро-движки с собственными языками и возможностями. Для начала работы выбор формата не имеет значения. Если вы описываете локации или ситуации, и соединяете их выборами, то сеть переходов будет работать во всех форматах.

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

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

Для начала можно выбрать любой формат — его можно поменять потом.

Чтобы начать новую историю, нажмите на кнопке «+История» (+Story).

Введите имя игры-истории и нажмите «Добавить». Всё, вы в редакторе истории.

Редактор истории

Он выглядит как огромный лист миллиметровки, на котором лежат листочки. В начале там будет только один «Безымянный параграф».

Параграф — это локация в бродилке или один кадр в диалоге. Короче, это базовый узел в сети, из которой будет сплетена игра.

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

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

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

Объём текста в параграфе теоретически не ограничен. Но длинные простыни в наш век — на любителя. Кроме того, их придётся проматывать на экране мобильника. Решайте сами.

​Объём текста в описании не ограничен. Кстати, ссылки на другие параграфы можно давать прямо в тексте

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

Как добавить переход к другой локации

Чтобы добавить переход, действие или выбор в диалоге, введите двойные квадратные скобки, а внутри напишите название параграфа, к которому надо перейти. Вот так

[[Облизать муравьиную тропу]]

Как только вы это сделаете, Twine тут же создаст второй параграф с этим именем. А если такой параграф уже есть, просто соединит их переходами.

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

[[Текст выбора|название параграфа, куда идти]]

[[Облизать муравьиную тропу|ants]]

Жмите на крестик в верхнем углу и закрывайте параграф. Теперь в редакторе лежит несколько узлов будущей игры. Их можно перетаскивать как угодно.

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

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

Тестовый запуск игры

Тут все банально — нажмите «Запустить» или «Тестировать» в редакторе истории.

Игра откроется в вашем браузере.

Если что-то измените в игре — запускайте заново.

Экспорт игры, публикация и показ друзьям

Чтобы экспортировать игру в HTML, в редакторе истории нажмите на названии игры внизу и выберите «Опубликовать в файл». После этого укажите путь и название с расширением .html

Получится обычный HTML-файл, который можно заархивировать и отправить друзьям или выложить на свою страницу (к примеру, на бесплатный хостинг GitHub Pages).

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

Многие сценаристы используют Twine для разработки диалогов или визуальных новелл на других движках, вплоть до Unity и Unreal — просто они экспортируют данные, описывающие сеть переходов и параграфов, в формат JSON. Это тоже монетка в копилку ваших представлений о возможностях проекта.

Дерзайте

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

Я начал набрасывать пример к статье — игру-квест «Лорд-титан» про безумный магический мир после ужасных катастроф, и не успел обернуться, как пролетело два часа. Да, для полноценной игры это мало. Нужно как минимум восемь часов, по моим прикидкам, чтобы сделать что-то законченное. Ну или быть гением минимализма. Я не гений, факт.

Если вам интересны текстовые игры типа квестов из «Космических рейнджеров» — это готовый инструмент для создания подобных забав.

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

Twine — IFВики

Общая информация

Система для создания интерактивных историй на JavaScript. В качестве интерпретатора готовых историй используется интернет-браузер.

Ранее система называлась Tweebox.

Для описания историй можно использовать несколько простых вики-подобных форматов. Формат описывает язык исходного кода и исходный внешний вид игры.

Кроме графического редактора, который называется собственно Twine, есть также консольная утилита twee, которая позволяет хранить код игры в системах контроля версий (git), а также разбивать код на несколько файлов.

Игры Twine, как правило, можно без потерь декомпилировать в код twee или импортировать в редактор, получив полный код игры. Но при этом Twine 2 не может открывать игры Twine 1 и наоборот, а программа-конвертер несовершенна и работает только с SugarCube.

Доступные форматы (Twine 2)

  • Harlowe - по умолчанию. Чёрный текст по центру белого фона. Википодобный язык.
  • Snowman - напоминает Markdown
  • SugarCube - наследие Twine 1. Позволяет иметь несколько слотов сохранений.
  • Proofread - выводит весь текст игры на одной странице для облегчения вычитки. Twine автоматически переводит игру в этот формат, когда вы нажимаете на кнопку "proofread copy".

Возможно создать свой формат. Также в сообществе могут быть другие авторские форматы.

Примеры кода

Harlowe
(if: $hasKey)[It looks like the $keyColor key will [[open the door]].]
(else:)[No way forward here, unfortunately.]
Snowman
<% if (s.hasKey) { %>
It looks like the <%= s.keyColor %> key will [[open the door]].
<% } else { %>
No way forward here, unfortunately.
<% } %> 
SugarCube
<<if $hasKey>>
It looks like the $keyColor key will [[open the door]].
<<else>>
No way forward here, unfortunately.
<</if>>

Ссылки

См. также

Harlowe 2.1.0 manual

Harlowe 2.1.0 manual
Введение
Разметка переходов
    основы
    кодирование
    дополнительное
    список
    раздел
    пробел
    Список макросов
      основной цвет
      структура данных
      дата и время
      состояние игры
      ссылок
      в реальном времени
      математика
      номер
      всплывающее окно
      ревизия
      сохранение
      отображение и скрытие 9000 ur8
      стиль
      стиль
      Типы данных
      Специальные ключевые слова
      Специальные теги перехода
      Журнал изменений
      Приложение

Сообщать об ошибках и предлагать функции

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

Что нового в версии 2.0

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

  • Цветовая схема Харлоу по умолчанию теперь - белый текст на черном, в соответствии с SugarCube и Sugarcane. Вы можете снова изменить цвет на белый, следуя приведенным ниже инструкциям.
  • Выражения вроде $ a <4 и 5 теперь будут интерпретироваться как $ a <4 и это <5 вместо того, чтобы всегда вызывать ошибку.
  • Использование - это с операторами сравнения, например, $ a - <3 , теперь допустимо.
  • Чейнджеры могут быть прикреплены к хукам с пробелом между ними - (if: $ coverBlown) [Выполнить!] теперь действителен.
  • Чейнджеры могут быть прикреплены к именованным крючкам - (if: true) | moths> [Несколько бабочек!] теперь действителен.
  • Ченджеры могут быть добавлены вместе с помощью + при прикреплении их к крючку - (шрифт: 'Shatter') + (текстовый стиль: 'outline') [АВАРИЯ!] теперь действителен.
  • CSS по умолчанию был изменен таким образом, что шрифт истории должен быть переопределен на tw-story , а не на html (для согласованности с другими свойствами CSS).

Следующие новые функции также заслуживают вашего внимания.

  • Встроенная ? Страница , ? Переход , ? Боковая панель и ? Ссылка крючки
  • Скрытые перехватчики и макросы команд (show 🙂 и (hidden 🙂
  • Временные переменные (см. Статью (set :))
  • Специальные любые и все имена данных для массивов, строк и наборов данных (см. Статьи каждого типа)
  • Макрос смены (for 🙂
  • Макрос команды (enchant 🙂
  • Макросы данных (найти :), (изменено 🙂 и (свернуто 🙂
  • Псевдонимы (dm 🙂 и (ds 🙂 для (datamap 🙂 и (dataset 🙂
  • Разметка столбца
  • Два прохода элементов теперь имеют атрибут tags .

Полный список изменений см. В разделе журнала изменений.

Переход от темного к светлому:

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

  (enchant:? Page, (text-color: черный) + (background: white))
  

Здесь используется встроенный обработчик new? Page для нацеливания на всю страницу и новый макрос (enchant 🙂 для непосредственного применения к ней команд чейнджера.В будущем запланированы дополнительные функции, которые позволят стилизовать страницу таким образом без CSS, оставаясь в рамках кода Харлоу и позволяя использовать внутри него переменные и другие макросы.

Разметка ссылки

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

Внутри совпадающих не вложенных пар [[ и ]] поместите текст ссылки и название отрывка, разделены либо -> , либо <- , со стрелкой, указывающей на название отрывка.

Вы также можете написать сокращенную форму, где нет разделителя <- или -> . Все содержимое рассматривается как название отрывка, а его оценка рассматривается как текст ссылки.

Пример использования:
  [[Перейти в подвал-> Подвал]] - ссылка, которая ведет к проходу под названием «Подвал».
[[Парашютный спорт <-Jump]] - это ссылка, которая ведет к отрывку под названием «Парашютный спорт».
[[Вниз по люку]] - это ссылка, которая ведет к проходу под названием «Вниз по люку». 
Детали:

Внутренняя часть ссылки (текст между [[ и ]] ) может содержать любой символ, кроме ] .

Детали:

Вы можете вложить эти коды - '' // текст // '' отобразит жирным курсивом - но они должны быть вложенными симметрично. '' // текст '' // работать не будет.

Больше разнообразных стилей текста можно создать с помощью макроса (text-style :), прикрепив его к текстовый крючок, который вы хотите стилизовать. И, кроме того, вы можете использовать HTML-теги, такие как , в качестве дополнительных вариант укладки.

Макроразметка

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

В Harlowe много встроенных макросов. Чтобы использовать его, вы должны позвонить по номеру в своем отрывке, написав имя, двоеточие и некоторые значения данных в круглых скобках. Например, вы вызываете (print 🙂 макрос вроде так: (печать: 54) . В этом примере print - это имя макроса, а 54 - это значение.

Имя макроса нечувствительно к регистру, дефису и подчеркиванию. Это значит, что любая комбинация регистра, дефисов и подчеркиваний в имени будет проигнорирована.Вы можете, например, написать (go-to :) как (goto :) , (Goto :) , (GOTO :) , (GoTo :) , (Go_To :) , (Got - o) :) , (-_-_ g-oto :) , или любая другая комбинация или вариация.

Вы можете предоставить вызову макроса значения данных любого типа - числа, строки, логические значения и т. Д. Эти также может быть в любой форме - «Красный» + «живот» - это выражение, которое производит одну строку «Redbelly», и может использоваться везде, где может использоваться объединенная строка.Переменные тоже можно использовать с макросами, если их содержимое соответствует ожиданиям макроса. Итак, если $ var содержит строку "Redbelly", то (print: $ var) , (принт: «Redbelly») и (принт: «Red» + «живот») абсолютно одинаковы.

Кроме того, каждый вызов макроса сам генерирует значение - (num :), например, производит число, (a 🙂 массив - так что они также могут быть вложены в другие вызовы макросов. (if: (num: "5")> 2) вкладывает макрос (num 🙂 в макрос (if :).

Если макросу можно или нужно дать несколько значений, разделите их запятыми. Вы можете задать макрос (a :) три числа вроде этого: (a: 2, 3, 4) . Конечное значение может иметь запятую после него, а может и не быть - (a: 2, 3, 4,) одинаково верно. Кроме того, если у вас есть значение данных, которое представляет собой массив, строку или набор данных, вы можете «разложить» все значений в вызов макроса с помощью оператора ... : (либо: ... $ array) будет действовать так, как если бы каждое значение в $ array был помещен в вызов макроса (либо 🙂 отдельно

Переменная разметка

Как описано в документации к макросу (set :), переменные используются для запоминания значений данных. в своей игре следите за статусом игрока и т. д.Они начинаются с $ (для обычных переменных) или _ (для временных переменных, которые существуют только внутри одного прохода, ловушки или лямбды).

Из-за того, что этот синтаксис потенциально противоречит долларовым значениям (например, 1,50 доллара США) в тексте вашей истории, переменные не могут начинаться с цифры.

Вы можете распечатать шпагат

2: how_to_create_your_first_story [Twine Wiki]

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

Начнем со списка историй Twine. Выглядит это так:

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

Используйте зеленую кнопку + Story в правой части экрана, чтобы начать новую историю.Он откроет воздушный шар с вопросом, как его назвать. Вы можете называть его как хотите - если вы не чувствуете себя креативным, вы не ошибетесь с Strange Encounter in Space .

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

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

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

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

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

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

[[Попробуйте поговорить с существами]]
[[Спуститесь по трапу вашего космического корабля]]

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

Текст, показываемый читателю, может отличаться от названия вашего отрывка. См. Подробности в разделе «Как создавать ссылки».

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

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

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

Когда вы закончите свою историю, щелкните или коснитесь названия своей истории на панели инструментов.На его конце есть небольшой восходящий треугольник, например ▲, чтобы указать, что это меню. Это меню рассказов. В нем есть варианты, которые вы не будете использовать так часто, как работаете над своей историей. Например, вы можете Rename Story из этого меню, но нас интересует Publish to File . Это сохранит вашу историю в файле HTML , который работает сам по себе - вашим читателям не нужно устанавливать Twine самостоятельно. Вы можете отправить этот файл кому-нибудь по электронной почте или опубликовать его для всеобщего обозрения.

Если вы используете Twine в Safari на OS X, то опция Publish to File откроет новую вкладку с большим количеством кода. К сожалению, это ограничение именно этого браузера. Просто выберите Сохранить как из меню Файл , ​​чтобы сохранить его как файл.

Это оно! Теперь вы знаете все, что нужно для создания простой истории. Конечно, со Twine вы можете добиться гораздо большего. Остальная часть этого руководства может помочь вам в обучении.

twine2: add_an_image_movie_sound_effect_or_music [Twine Wiki]

Добавить изображение, фильм, звуковой эффект или музыку

Twine 2 в настоящее время не может встраивать мультимедиа в вашу историю. Если вы хотите создать что-то, в котором интенсивно используются изображения, звук или фильмы, вы можете пока придерживаться Twine 1. Но это не значит, что вы не можете использовать эти вещи в своей истории! На данный момент вам нужно хранить их в другом месте - будь то на контролируемом вами веб-сайте или в сервисе, который вы используете, например Dropbox, - и помещать ссылки на них в свою историю.

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

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

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

Добавление изображения

Как только вы узнаете, что такое URL вашего изображения, отобразить его в вашей истории так же просто, как ввести правильный код HTML , чтобы отобразить его:

 Две лисы 

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

Добавление видео

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

  

Есть гораздо больше возможностей для настройки внешнего вида вашего видео - подробнее читайте в статье HTMl5Rocks.

Если вы хотите встроить видео из такой службы, как YouTube или Vimeo, проверьте страницу, чтобы найти возможность встроить его.См. Справку YouTube и Vimeo для получения конкретных инструкций о том, как получить код для встраивания и настроить его. Когда у вас есть этот код, введите его как есть в свой отрывок, чтобы он отобразился.

Добавление звуковых эффектов и музыки

Код для добавления базового звукового эффекта выглядит так:

 

Атрибут autoplay заставляет его играть, как только отображается проход, в котором он находится.

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

 << cacheaudio "открывается дверь" "URL вашего звукового эффекта" >> 

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

 << аудиосистема "открывается дверь" >> 

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

Внешние ресурсы

  • DJ White создал библиотеку под названием Twine Audio для включения повествования в истории Twine.Однако он работает только в браузерах Chrome и Opera. Исходный веб-сайт twineaudio dot com , похоже, в настоящее время указывает на спам-сайты.

  • Дэн Кокс опубликовал обучающее видео по добавлению изображений в формате истории SugarCube.

twine2 / add_an_image_movie_sound_effect_or_music.txt · Последнее изменение: 2017/10/09 20:39 (внешнее редактирование)

Полное руководство по Twine 2 для начинающих.1 - Адам Хэммонд

Я (все еще) одержим Twine. Мне нравится, что это позволяет обычным людям создавать интерактивные истории и видеоигры. Мне нравится, что он публикуется в стандартных веб-форматах, таких как HTML, CSS и JavaScript. Мне нравится, что его приняли посторонние и хулиганы всех мастей. Может быть, больше всего мне нравится то, что он дает студентам английского языка действительно хороший повод изучить кодирование и программирование.

Вот несколько руководств, которые я составил для своих студентов по английскому языку 563, «Введение в цифровые гуманитарные науки», чтобы они могли начать работу со Twine.Эти руководства предполагают некоторое базовое знакомство с HTML и CSS. Если у вас его нет, я бы порекомендовал ознакомиться с моим Руководством по HTML + CSS для начинающих (или любым из бесчисленных введений в эти темы, доступных в Интернете).

На данный момент у меня четыре направляющих:

Примечание: Если вы ищете мои старые руководства по Twine 2.0, теперь они живут здесь.

В этом руководстве объясняется, что такое отрывок в Twine и как создавать связи между ними.Эти инструкции применимы к любому формату рассказа в Twine, включая формат Twine 2.1 по умолчанию, Harlowe, и мой предпочтительный формат рассказа, SugarCube 2.

Скачать PDF-версию: Начало работы со шпагатом

Концепция проезда

Игры Twine состоят из «отрывков» - отдельных фрагментов текста. (В классической теории гипертекста они называются «лексиями».) Игра в Twine предполагает переход от одного отрывка к другому. Отрывки состоят из двух элементов: названия и содержания.Имя прохода никогда не отображается игроку; он просто используется негласно, чтобы направлять читателя на его пути в игре. С другой стороны, контент - это то, что видит пользователь, когда достигает этого отрывка игры.

Создание ссылок

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

Вы находитесь в комнате с двумя дверями.Вы можете войти в [[дверь слева]] или [[дверь справа]].
 

Twine продуман и автоматически создает два новых прохода в соответствии с набранным вами текстом: один называется «дверь слева», а другой - «дверь справа». Игроки вашей игры смогут нажимать на слова между скобками, что переводит их в соответствующие отрывки. Если вам нужны более простые названия отрывков, вы можете использовать | (символ, который вы получаете при вводе Shift- \).Например, вы можете ввести

Вы находитесь в комнате с двумя дверями. Вы можете войти в [[дверь слева | левую дверь]] или [[дверь справа | правую дверь]].
 

Здесь, в [[ двойные квадратные скобки ]] , ​​текст перед | - это то, что читатель видит и нажимает, а текст после | - это название отрывка, на который вы ссылаетесь. Twine создаст ссылки на проходы, называемые левой и правой дверью, с которыми немного легче работать, чем с громоздкими длинными именами.

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

В этом руководстве объясняется, как использовать CSS для изменения внешнего вида игры Twine 2.1. Все эти инструкции основаны на формате истории SugarCube 2.Перед началом убедитесь, что ваша игра Twine настроена для формата SugarCube. Для этого щелкните название своей истории в ее главном представлении «карта истории». Выберите «Изменить формат истории» и установите флажок рядом с «SugarCube 2.x». Это руководство было разработано для моих студентов и предполагает некоторое знакомство с HTML и CSS.

Скачать PDF-версию: Сделайте вашу игру Twine потрясающей с помощью CSS

Вспоминая основы

Что мне нравится в Twine, так это то, что он публикует материалы в стандартных веб-форматах.Он использует HTML для содержания, CSS для представления и JavaScript для всего, что связано с программированием. Поскольку в ней используются эти стандартные форматы, в вашу игру можно играть практически на любом компьютере, телефоне, планшете и т. Д.

По умолчанию игры Twine в SugarCube выглядят довольно ужасно. Это должно побудить вас поставить свой личный визуальный отпечаток на вашу игру. Хорошие новости: поскольку вы уже немного знакомы с CSS, это довольно просто.

Чтобы отредактировать CSS истории Twine, щелкните название вашей истории на главном экране «Карта истории», затем нажмите «Редактировать таблицу стилей истории».Это загрузит экран, который представляет собой простой старый (пустой) файл CSS.

Изменение настроек по умолчанию

Поскольку игры Twine представляют собой обычные HTML-файлы, неудивительно, что вы меняете внешний вид большинства вещей в игре по умолчанию, стилизуя элемент body (элемент самого высокого уровня в дереве HTML-документов. ”)

Добавление следующего кода, например, изменит цвет фона на белый, сделает цвет по умолчанию темно-серым, изменит шрифт по умолчанию на Futura и сделает размер шрифта по умолчанию немного больше:

тело {
цвет фона: белый;
цвет: темно-серый;
семейство шрифтов: Futura, Impact, Helvetica, без засечек;
размер шрифта: 125%;
}
 

И снова неудивительно, что изменение цвета и поведения ссылок достигается за счет стилизации элемента a, элемента HTML для ссылок:

a {
красный цвет;
}
a: hover {
цвет: малиновый;
текстовое оформление: нет;
border-bottom: сплошной малиновый 4px;
}
 

Изменение внешнего вида отдельных проходов

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

Опять же, Twine лучший, и с ним довольно легко. Первое, что вам нужно сделать, это открыть проход, с которым вы хотите сделать что-то особенное. Прямо под названием отрывка находится опция с надписью + tag. Щелкните по нему, чтобы добавить выбранный вами тег. Например, предположим, что мы хотим добавить тег под названием «ура» для особенно удачного перехода. Напишите слово ура и нажмите на галочку.

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

.hooray {
цвет фона: розовый;
цвет: васильковый;
размер шрифта: 200%;
}
 

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

Скрытие боковой панели

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

# ui-bar {
дисплей: нет;
}
 

(SugarCube помещает боковую панель в HTML-блок с идентификатором ui-bar. Эта инструкция CSS просто указывает вашему браузеру не отображать этот блок).

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

#сказка {
маржа слева: 3.5em;
}
 

Добавление собственного HTML и его стилизация с помощью CSS

Как видите, Twine очень хорошо держит руку. Вам не нужно вводить собственный HTML-код, например, для абзацев: он вставляет

с для вас. Но если вас не устраивает то, как Twine вставляет HTML в вашу игру, вы можете ввести свой собственный HTML-код прямо в отрывок.

Например, вы можете захотеть создать жуткий эффект, при котором текст исчезает, если пользователь наводит на него указатель мыши.Вы можете сделать это, вставив свой собственный HTML-элемент div в отрывок из Twine и стилизовав его в CSS.

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

В небе появляется жуткий НЛО.
Когда вы смотрите на него, он исчезает.
Но ты уверен, что он там есть.

Затем вы можете добавить несколько строк в файл CSS вашей истории, в котором вы зададите стиль классу пришельцев этого div, чтобы он исчезал при наведении курсора мыши на элемент.

.aliens: hover {
непрозрачность: 0;
переход: 1s вся легкость;
}
 

Затем этот код HTML и CSS будет работать вместе, чтобы слова «Когда вы смотрите на него, он исчезает», исчезают, когда курсор пользователя наводит на них курсор, путем постепенного перехода непрозрачности div пришельцев к нулю в течение одной секунды. .

Теперь вы знаете все, что вам нужно знать, чтобы создать полностью настраиваемый визуальный опыт в вашей игре Twine. Сходить с ума!

В этом руководстве объясняется, как добавлять изображения и музыку в Twine 2.1, а также как разработать структуру папок и использовать относительные ссылки. Перед началом убедитесь, что ваша игра Twine 2.1 настроена для формата SugarCube 2. Для этого щелкните название своей истории в ее главном представлении «карта истории». Выберите «Изменить формат истории» и установите флажок рядом с «SugarCube 2.x». Примечание: это руководство предполагает некоторое знакомство с HTML и CSS.

Скачать PDF-версию: Добавление изображений и музыки

Добавление фото или видео из Интернета

Добавить медиа в вашу игру Twine так же просто, как добавить HTML-теги.Допустим, вы хотите добавить изображение жуткого коридора к первому отрывку вашей игры о застревании в коридоре. Все, что вам нужно сделать, это выполнить поиск по запросу «коридор» в Google, перейти к изображениям, найти понравившееся изображение и затем нажать «Просмотреть изображение». Теперь изображение будет отображаться в вашем браузере, а его URL-адрес будет в адресной строке. Все, что вам нужно сделать, это получить его URL с помощью «Копировать».

Теперь у вас есть вся информация, необходимая для вставки этого изображения в вашу игру Twine.Давайте добавим HTML-тег img прямо над существующим содержанием в отрывке:

Фотография коридора и двух дверей
Вы в коридоре. Вы видите две двери: [[дверь слева]] и [[дверь справа]].
 

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

Вы можете так же легко вставить в свою игру видео с YouTube. Просто найдите видео, которое хотите вставить, нажмите «Поделиться» под видео, выберите «Вставить» и скопируйте HTML-код в свою игру. Вот и все: в вашей игре есть видео.

Построение структуры папок

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

Способ получить полный творческий контроль над игрой - спроектировать ее в структуре папок, которую вы создали сами. Предположим, например, что я создаю папку под названием «Игра в коридоре» где-нибудь на жестком диске моего компьютера.Здесь будет жить моя игра и все ее медиаресурсы (изображения, аудиодорожки и т. Д.). В основной папке hallwaygame я собираюсь поместить саму игру, которую я планирую назвать «Hallway Game.html» (помните, игры Twine публикуются в виде файлов HTML).

Теперь в папке «Hallway Game» я собираюсь создать подпапку под названием images, в которую я буду помещать все изображения для моей игры. Допустим, я создал свой оригинальный образ коридора с двумя дверями в конце.Я сохраню это изображение как hallway.jpg и помещу его в подпапку изображений, которую я только что создал.

Теперь, вместо того, чтобы использовать полный URL-адрес файла в Интернете, я собираюсь использовать так называемую относительную ссылку. Вместо того, чтобы указывать, где изображение находится в сети, я собираюсь указать, где изображение находится под номером по отношению к основному файлу Twine (Hallway Game.html). Я точно знаю, где находится hallway.jpg по отношению к hallwaygame.html, поскольку я поместил его в свою собственную структуру папок: он находится во вложенной папке, называемой изображениями.В HTML это можно представить как относительный путь: images / hallway.jpg

Итак, давайте поместим этот относительный путь в мой предыдущий отрывок как src моего тега img.

Фотография коридора и двух дверей
Вы в коридоре. Вы видите две двери: [[дверь слева]] и [[дверь справа]].
 

Если вы нажмете кнопку Play в Twine, вы увидите - ах! - что изображение не появляется. Это потому, что когда вы нажимаете Play в Twine, вы просто видите своего рода предварительный просмотр своей игры. Где существует этот «превью» - непростой вопрос. Это что-то вроде преисподней. Он не публикуется в Интернете для всеобщего обозрения; и хотя это где-то на вашем компьютере , это не то место, к которому вы можете получить полезный доступ. Так что давайте вытащим игру Twine из этого преисподней и поместим ее в какое-нибудь конкретное место. Мы делаем это, щелкнув название истории в главном представлении «карта истории» и выбрав «Опубликовать в файл». Отлично: теперь давайте сохраним нашу игру как «Hallway Game.html» в папке, которую мы для нее создали.

А теперь давайте на минутку оставим Twine. Перейдем в папку, в которой мы сохранили «Hallway Game.html», и дважды щелкнем по ней. Он откроется в веб-браузере - и, если вы правильно ввели тег img, отобразится ваше изображение.

Теперь соберите еще несколько изображений для своей игры и сохраните их все во вложенной папке изображений. Где бы вы ни хотели, чтобы они появлялись в вашей игре, используйте теги img с относительными путями, указывающими на images /. Теперь ваша игра Twine находится в одном месте - все в папке hallwaygame.Теперь вы можете загрузить эту папку на веб-сервер, и она будет отображаться так же хорошо, как и на вашем собственном компьютере. (Поскольку относительные пути, ну, ну, относительные , им все равно, на вашем компьютере они или в Интернете - все, что их волнует, это как добраться из одного места в другое и находитесь ли вы в в Интернете или на своем компьютере, способ перехода от «Hallway Game.html» к «hallway.jpg» такой же: загляните в изображения вложенной папки, и оно будет там.

Добавление музыки

По идее ничего особенного в добавлении музыки нет.Вы можете просто использовать стандартные HTML-теги для добавления музыки. На практике, однако, в SugarCube 2 есть гораздо более простой способ добавления музыки - набор так называемых «макросов», которые упрощают работу с музыкой.

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

Звуковые макросы

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

Чтобы загрузить песни, мы собираемся создать новый отрывок под названием StoryInit. Это особый отрывок, который SugarCube обрабатывает особым образом: он выполняет все команды в этом отрывке, прежде чем показать игроку первый проход в игре.StoryInit не связан ни с какими другими отрывками, потому что не является частью истории. Это просто место для мирских дел, связанных с историей. Здесь мы будем использовать его для загрузки песен.

Хорошо, давайте сделаем отрывок под названием StoryInit и напишем следующий код:

<< cacheaudio "mainsong" "music / dauphin.mp3" >>
<< cacheaudio "happyysong" "music / henry.mp3" >>
 

Первая строка создает «аудиоресурс» с именем main song (хотя вы можете называть ее как хотите) из аудиофайла с именем dauphin.mp3, который находится в подпапке Music относительно «Hallway Game.html». Вторая строка создает второй аудиоресурс под названием happyysong из файла henry.mp3, который мы поместили в ту же папку.

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

<< воспроизведение основной звуковой песни >>
 

Эта строка вызывает звуковой макрос SugarCube, затем указывает имя загруженной песни, которую мы хотим воспроизвести (основная песня, созданная в StoryInit), а затем определяет действие (воспроизведение начинает воспроизведение песни).

Если вы нажмете «Играть» в Twine, вы заметите, что это еще не работает. Ну конечно не работает! Нам нужно вынести нашу игру Twine из преисподней и использовать функцию «Опубликовать в файл», чтобы сохранить ее в виде конкретного HTML-файла в папке «Hallway Game» - ее истинном доме, где находятся все ее медиаресурсы! - до того, как он заработает. Если вы это сделаете, то услышите свою песню.

Теперь предположим, что когда ваш игрок доходит до экрана «выиграть», вы хотите наградить его счастливой песней.Поместите следующие строки кода в этот «выигрышный» отрывок, и основная песня исчезнет, ​​а песня станет счастливой - другой песней, которую мы создали в StoryInit

.
<< остановка основной звуковой песни >>
<< аудио счастливой песни >>
 

Как только вы снова опубликуете свою игру в папке «Hallway Game», вы обнаружите, что теперь у вас есть очень продвинутая игра Twine с саундтреком, который адаптируется к действию!

Затем вы захотите ознакомиться с полным списком SugarCube 2.x аудио (он может гораздо больше, чем просто воспроизведение и остановка!).

В этом руководстве объясняется, как использовать переменные и выполнять базовое программирование в Twine 2.1. Все эти инструкции основаны на формате истории SugarCube 2. Перед началом убедитесь, что ваша игра Twine 2.1 настроена для формата SugarCube 2. Для этого щелкните название своей истории в ее главном представлении «карта истории». Выберите «Изменить формат истории» и установите флажок рядом с «Sugarcube 2.x»

Скачать PDF-версию: Программирование в Twine

Что такое переменная?

Переменная - это контейнер, содержимое которого можно изменять.(Он получил свое название от того факта, что его содержимое является «переменным».) Думайте о нем как о конверте. Вы можете положить в конверт листок бумаги с надписью «Адам». Вы можете положить в него лист бумаги с надписью 9. Вы можете поместить в него целый роман.

У переменных есть имена и значения. Значение переменной - это «содержание», описанное выше - слово «Адам», или число 9, или весь роман. Имя - это просто сокращение, которое Twine будет использовать для доступа ко всему, что в нем. Вы должны выбрать имя переменной, но вы можете называть ее как хотите.Единственное правило - переменные Twine всегда должны начинаться со знака доллара ($). Чтобы оживить переменную, используйте команду SugarCube <>, которая выполняет две функции: создает переменную с определенным именем и присваивает ей ее начальное «значение».

<< установить для переменной $ myvariable значение "Адам" >>
<< установить для $ myothervariable значение 99 >>
<< установить для $ elseanother значение true >>
 

Это три основных типа переменных, которые могут понадобиться создать: текстовые (они же «строки»), числа (они же «числовые» переменные) и истина / ложь (они же «логические»).Обратите внимание, что вам нужно заключить в кавычки содержимое текстовых переменных. Не используйте кавычки для чисел или для переменных true / false.

Приложение №1: Использование ключа в игре

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

Вам понадобится переменная с названием что-то вроде $ hasKey, которая будет принимать одно из двух значений: false, если у игрока ее нет, и true, когда она ее находит.

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

<< установить для $ hasKey значение false >>
 

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

<< установить для $ hasKey значение true >>
 

(Обратите внимание, что <> может создать переменных, но если переменная уже существует, он просто изменяет значение переменной.)

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

<< if $ hasKey is true >> Вы вставляете ключ в дверь, и она открывается. Вы [[проходите через дверь | снаружи]].
<< elseif $ hasKey is false >> Вы пытаетесь открыть дверь, но она заперта, и она не сдвинется с места.Вам нужно будет [[искать ключ | start]].
<>
 

Twine начинает с вычисления первой строки оператора if; если это не так, он смотрит на первую строку elseif, затем смотрит на остальные строки elseif (если есть еще), а затем перестает работать, когда достигает <>, что означает, что оператор if окончено. В дополнение к if и elseif вы также можете написать else, что означает просто: «Если ни одно из условий if или elseif не выполняется, то выполните это .Также обратите внимание, что если вы работаете с числами, вы можете использовать условные операторы, такие как gt («больше чем») и lt («меньше чем») вместо просто is.

Все это означает следующее. Сначала Twine проверяет, истинно ли значение $ hasKey. Если это так, он отобразит текст «Вы вставляете ключ в дверь, и она открывается» и дает пользователю возможность щелкнуть ссылку на проход, в котором он находится за пределами замка. Если $ hasKey не соответствует действительности, Twine не будет отображать этот текст пользователю , а пользователь не сможет перейти по этой ссылке.Теперь Twine рассмотрит следующую возможность. Здесь он оценит, является ли $ hasKey ложным. Если он ложный (что по умолчанию, поскольку мы установили его в качестве начального значения в открывающем проходе), то Twine отобразит текст «Вы пытаетесь открыть дверь, но она заперта, и она не сдвинется с места», и единственный вариант - щелкнуть ссылку, которая вернет их к началу игры, чтобы повторно начать поиск этого неясного отрывка, в котором для $ hasKey установлено значение true.

Приложение №2: Проверка имени игрока

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

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

Введите ваше имя:
<< текстовое поле "$ name" "" >>
Когда будете готовы, щелкните [[здесь]].
 

Этот код указывает, что все, что игрок вводит в текстовое поле, будет сохранено в переменной с именем $ name («» просто означает, что в поле нет текста по умолчанию - если вы написали «Введите свое имя здесь» в этом поле. , текстовое поле изначально будет отображаться с надписью «Введите здесь свое имя».)

Теперь, на следующей странице, вы можете настроить так, чтобы ваша игра отображала специальное сообщение, если кто-то ввел свое имя как «Адам».

<< если $ name - "Адам" >> Эй, тебя зовут Адам! Так и мое!
<> Привет, $ name.
<>
 

Twine будет отображать только «Эй, тебя зовут Адам! Как и мое! » если переменная $ name равна «Адам». В противном случае - <> - он просто скажет «Привет» и повторит имя человека в ответ (да, это классная вещь о переменных.Если вы запишете имя переменной в обычный текст, Twine заменит его значением переменной, когда он действительно показывает его игроку.)

Приложение № 3: Запись «счастья» игрока

Допустим, вы хотите, чтобы ваша игра фиксировала текущий подсчет того, насколько «счастлив» ваш игрок. Вы можете сделать это с помощью числовой переменной. Например, в начале игры вы можете включить:

<< установить для $ счастья значение 0 >>
 

Затем, когда что-то происходит, чтобы сделать вашего игрока счастливым, вы можете включить эту строку:

<< установить $ Счастье в $ Счастье + 1 >>
 

Если в этом проходе уровень счастья игрока равен нулю, эта строка кода установит его на 1 (0 + 1 = 1).Если уровень счастья игрока равен 3, эта строка кода установит его на 4 (3 + 1 = 4). Причина, по которой вы не хотите, чтобы эта строка была << установкой $ счастья на 1 >>, заключается в том, что это сотрет все ваши «текущие подсчеты» и просто установит значение счастья на 1, независимо от того, насколько счастливы ваш игрок был до того, как наткнулся на этот конкретный отрывок.

Когда что-то случится, что расстроит вашего игрока, вы можете включить эту строку кода:

<< установить $ Счастье в $ Счастье - 1 >>
 

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

<< if $ Счастье gte 5 >> Вы берете трубку, и она просит вас принести мороженое, и вы [[полностью уходите]].
<> Тебе не хочется брать трубку. Думаю, ты никогда не узнаешь, о чем она хотела тебя спросить. Вы [[сидите дома]].
<>
 

Здесь, если ваша переменная $ счастья имеет значение 5 или выше (gte - SugarCube, говоря «больше или равно»), ваш игрок получит возможность перейти к проходу с мороженым.В противном случае - <> - их единственный выход - перейти к переходу «оставайся дома».

Это всего лишь несколько примеров для начала. Если вас это взволновало, вам стоит ознакомиться с полным списком макросов SugarCube 2.x.

Вот и все! А теперь вперед и создавайте потрясающие игры Twine !!!

Добро пожаловать в документацию по шпагату! - документация twine 3.4.1

Обеспечивает независимую загрузку исходных и двоичных файлов от системы сборки. артефакты распространения как новых, так и существующих проекты.

Цель Twine - улучшить взаимодействие PyPI за счет улучшения безопасность и тестируемость.

Самая большая причина использовать Twine заключается в том, что он надежно аутентифицирует вы к PyPI через HTTPS, используя проверенное соединение, независимо от базовая версия Python. Между тем, python setup.py загрузить будет работать правильно и безопасно только в том случае, если ваша система сборки Python версия и соответствующая операционная система настроены правильно.

Во-вторых, Twine рекомендует вам создавать свои файлы распространения. питон setup.py upload позволяет загружать пакет только в качестве последнего шага после сборка с distutils или setuptools в рамках той же команды призыв. Это означает, что вы не можете протестировать именно тот файл, который собираетесь загрузите в PyPI, чтобы убедиться, что он работает, перед загрузкой.

Наконец, Twine позволяет предварительно подписывать файлы и передавать .asc файлов в вызов командной строки (загрузка шпагата myproject-1.0.1.tar.gz myproject-1.0.1.tar.gz.asc ). Это позволяет вам чтобы быть уверенным, что вы вводите кодовую фразу gpg в код gpg сам, а не что-либо еще, так как вы будете непосредственно выполнение gpg --detach-sign -a <имя файла> .

  1. Создайте несколько дистрибутивов обычным способом:

     $ ​​python setup.py sdist bdist_wheel
     
  2. Загрузите со шпагатом для тестирования PyPI и убедитесь, что все работает правильно.Twine автоматически запросит ваше имя пользователя и пароль:

     $ ​​загрузка шпагата -r testpypi dist / *
    имя пользователя: ...
    пароль:
    ...
     
  3. Загрузить в PyPI:

  4. Готово!

Дополнительная документация по использованию Twine для загрузки пакетов в PyPI находится в Руководство пользователя Python Packaging.

загрузка шпагата

Загружает один или несколько дистрибутивов в репозиторий.

 $ ​​загрузка шпагата -h
использование: загрузка шпагата [-h] [-r REPOSITORY] [--repository-url REPOSITORY_URL]
                    [-s] [--sign-with SIGN_WITH] [-i IDENTITY] [-u ИМЯ ПОЛЬЗОВАТЕЛЯ]
                    [-p ПАРОЛЬ] [-c КОММЕНТАРИЙ] [--config-file CONFIG_FILE]
                    [--skip-existing] [--cert path] [--client-cert path]
                    [--verbose] [--disable-progress-bar]
                    расст [расст...]

позиционные аргументы:
  dist Файлы дистрибутива для загрузки в репозиторий
                        (индекс пакета). Обычно dist / *. Может дополнительно
                        содержать файл .asc для включения существующей подписи
                        с загрузкой файла.

необязательные аргументы:
  -h, --help показать это справочное сообщение и выйти
  -r РЕПОЗИТОРИЙ, --repository РЕПОЗИТОРИЙ
                        Репозиторий (индекс пакета) для загрузки пакета
                        к.Должен быть раздел в файле конфигурации (по умолчанию:
                        pypi). (Также можно установить через TWINE_REPOSITORY
                        переменная среды.)
  --repository-url REPOSITORY_URL
                        URL-адрес репозитория (индекса пакета) для загрузки
                        пакет в. Это отменяет --repository. (Так же может быть
                        устанавливается через переменную среды TWINE_REPOSITORY_URL.)
  -s, --sign Подписать файлы для загрузки с помощью GPG.
  --sign-with SIGN_WITH
                        Программа GPG, используемая для подписи загрузок (по умолчанию: gpg).-i ИДЕНТИЧНОСТЬ, --identity ИДЕНТИЧНОСТЬ
                        Идентификатор GPG, используемый для подписи файлов.
  -u ИМЯ ПОЛЬЗОВАТЕЛЯ, --username ИМЯ ПОЛЬЗОВАТЕЛЯ
                        Имя пользователя для аутентификации в репозитории
                        (индекс пакета) как. (Также можно установить через
                        Переменная среды TWINE_USERNAME.)
  -p ПАРОЛЬ, --password ПАРОЛЬ
                        Пароль для аутентификации в репозитории
                        (индекс пакета) с. (Также можно установить через
                        Переменная окружения TWINE_PASSWORD.)
  --non-interactive Не запрашивать имя пользователя / пароль в интерактивном режиме
                        если требуемые учетные данные отсутствуют. (Может также
                        устанавливается через среду TWINE_NON_INTERACTIVE
                        Переменная.)
  -c КОММЕНТАРИЙ, --comment КОММЕНТАРИЙ
                        Комментарий для включения в файл распространения.
  --config-файл CONFIG_FILE
                        Используемый файл конфигурации .pypirc.
  --skip-existing Продолжить загрузку файлов, если они уже существуют.(Только
                        действует при загрузке в PyPI. Другие реализации
                        может не поддерживать это.)
  --cert path Путь к альтернативному пакету CA (также можно задать через
                        Переменная окружения TWINE_CERT).
  --client-cert path Путь к SSL-сертификату клиента, отдельный файл
                        содержащий закрытый ключ и сертификат в PEM
                        формат.
  --verbose Показать подробный вывод.
  --disable-progress-bar
                        Отключить индикатор выполнения.

шпагат

Проверяет, будет ли длинное описание вашего дистрибутива правильно отображаться на PyPI.

 $ ​​проверка шпагата -h
использование: проверка шпагата [-h] [--strict] dist [dist ...]

позиционные аргументы:
  dist Файлы дистрибутива для проверки, обычно dist / *

необязательные аргументы:
  -h, --help показать это справочное сообщение и выйти
  --strict Fail при предупреждениях
 

Регистр шпагата

ПРЕДУПРЕЖДЕНИЕ : Команда register больше не нужна, если вы загрузка в pypi.орг. Таким образом, он больше не поддерживается в Warehouse. (новое программное обеспечение PyPI, работающее на pypi.org). Однако вам это может понадобиться, если вы используют другой индекс пакета.

Для полноты его использования:

 $ ​​регистр шпагата -h

использование: регистр шпагата [-h] -r REPOSITORY [--repository-url REPOSITORY_URL]
                      [-u ИМЯ ПОЛЬЗОВАТЕЛЯ] [-p ПАРОЛЬ] [-c КОММЕНТАРИЙ]
                      [--config-file CONFIG_FILE] [--cert путь]
                      [--client-cert path]
                      упаковка

позиционные аргументы:
  package Файл, из которого мы читаем метаданные пакета.необязательные аргументы:
  -h, --help показать это справочное сообщение и выйти
  -r РЕПОЗИТОРИЙ, --repository РЕПОЗИТОРИЙ
                        Репозиторий (индекс пакета) для регистрации пакета
                        к. Должен быть раздел в файле конфигурации. (Может также
                        устанавливается через переменную окружения TWINE_REPOSITORY.)
                        Первоначальная регистрация пакета больше не требуется на
                        pypi.org:
                        https: // упаковка.python.org/guides/migrating-to-pypi-
                        org /
  --repository-url REPOSITORY_URL
                        URL-адрес репозитория (индекса пакета) для регистрации
                        пакет в. Это отменяет --repository. (Так же может быть
                        устанавливается через переменную среды TWINE_REPOSITORY_URL.)
  -u ИМЯ ПОЛЬЗОВАТЕЛЯ, --username ИМЯ ПОЛЬЗОВАТЕЛЯ
                        Имя пользователя для аутентификации в репозитории
                        (индекс пакета) как. (Также можно установить через
                        Переменная среды TWINE_USERNAME.)
  -p ПАРОЛЬ, --password ПАРОЛЬ
                        Пароль для аутентификации в репозитории
                        (индекс пакета) с. (Также можно установить через
                        Переменная среды TWINE_PASSWORD.)
  --non-interactive Не запрашивать имя пользователя / пароль в интерактивном режиме
                        если требуемые учетные данные отсутствуют. (Может также
                        устанавливается через среду TWINE_NON_INTERACTIVE
                        Переменная.)
  -c КОММЕНТАРИЙ, --comment КОММЕНТАРИЙ
                        Комментарий для включения в файл распространения.--config-файл CONFIG_FILE
                        Используемый файл конфигурации .pypirc.
  --cert path Путь к альтернативному пакету CA (также можно задать через
                        Переменная окружения TWINE_CERT).
  --client-cert path Путь к SSL-сертификату клиента, отдельный файл
                        содержащий закрытый ключ и сертификат в PEM
                        формат.
 

Twine может считывать конфигурацию репозитория из файла .pypirc либо в вашем домашний каталог или с опцией --config-file .Подробнее о написание и использование .pypirc , см. спецификацию в Python Руководство пользователя упаковки.

Переменные среды

Twine также поддерживает настройку с помощью переменных среды. Параметры переданы командная строка будет иметь приоритет над параметрами, установленными через среду переменные. Определение через переменную среды полезно в средах, где не удобно создавать файл .pypirc (например, на сервере CI / build).

  • TWINE_USERNAME - имя пользователя для аутентификации в репозиторий.
  • TWINE_PASSWORD - пароль для аутентификации в репозиторий.
  • TWINE_REPOSITORY - конфигурация репозитория, определенная как раздел в .pypirc или предоставляется как полный URL-адрес.
  • TWINE_REPOSITORY_URL - URL-адрес репозитория для использования.
  • TWINE_CERT - настраиваемый сертификат CA для использования в репозиториях с самоподписанные или ненадежные сертификаты.
  • TWINE_NON_INTERACTIVE - Не запрашивать имя пользователя / пароль в интерактивном режиме если требуемые учетные данные отсутствуют.

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

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

Например, чтобы установить имя пользователя и пароль для PyPI:

 $ ​​набор ключей для ключей https: // upload.pypi.org/legacy/ ваше-имя пользователя
 

или

 $ ​​python3 -m набор ключей для ключей https://upload.pypi.org/legacy/ ваше-имя пользователя
 

и введите пароль, когда будет предложено.

Для другого репозитория замените URL на соответствующий репозиторий. URL. Например, для Test PyPI используйте https://test.pypi.org/legacy/ .

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

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

Отключение брелока

В большинстве случаев, если просто не установить пароль с помощью брелка , Twine вернуться к запросу пароля. В некоторых случаях наличие Связка ключей вызовет неожиданные или нежелательные запросы от системы поддержки.В этих случаях может быть желательно полностью отключить Связку ключей. Отключить Брелок, просто вызвать:

или

 $ ​​python -m keyring --disable
 

Эта команда настроит для текущего пользователя «нулевую» связку ключей, эффективное отключение функциональности и разрешение Twine запрашивать для паролей.

См. Шпагат 338 для обсуждение и предыстория.

Как использовать Twine и SugarCube для создания интерактивных приключенческих игр

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

Twine - интерактивный генератор историй. Он использует HTML, CSS и Javascript для создания автономных приключенческих игр в духе классических игр, таких как Zork и Colossal Cave.Поскольку Twine в значительной степени представляет собой объединение нескольких открытых технологий, он достаточно гибок, чтобы выполнять множество мультимедийных трюков, делая игры более похожими на HyperCard, чем вы обычно ожидаете от HTML.

Установка шпагата

Вы можете использовать Twine в Интернете или загрузить его локально с веб-сайта. Разархивируйте загрузку и щелкните значок приложения Twine , чтобы запустить его.

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

Привет, мир

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

Назовите отрывок так, чтобы обозначить его место в вашей истории. В предыдущей версии Twine начальный отрывок должен был называться Start , ​​но в Twine 2 подойдет любое название. Это по-прежнему хорошая идея, чтобы сделать его разумным, поэтому придерживайтесь чего-то вроде Start или Home или init .

Чтобы получить текстовое содержание этой истории, введите:

  Привет [[мир]]  

Если вы знакомы с викитекстом, вы, вероятно, уже догадались, что слово «мир» в этом отрывке на самом деле является ссылкой на другой отрывок.

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

Откройте новый отрывок для редактирования и введите текст:

 

Это было сделано с помощью шпагата.

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

Это немного, но это начало!

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

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

Продвинутый шпагат

Зная только достаточно, чтобы построить эту историю hello world , вы можете создать отличное текстовое приключение, состоящее из исследований и выбора. Что касается быстрого старта, это не так уж и плохо. Как и во всех хороших технологиях с открытым исходным кодом, здесь нет потолка, и вы можете пойти дальше с помощью нескольких дополнительных приемов.

Проекты

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

SugarCube - это альтернативная библиотека JavaScript для Twine, которая обрабатывает мультимедиа, функции воспроизведения мультимедиа, расширенное связывание переходов, элементы пользовательского интерфейса, файлы сохранения и многое другое.Он может превратить ваше обычное текстовое приключение в мультимедийную феерию, которая может соперничать с такими приключенческими играми, как Myst или Beneath the Steel Sky.

Установка SugarCube

Чтобы установить серверную часть SugarCube для вашего проекта:

  • Загрузите библиотеку SugarCube. Несмотря на то, что Twine поставляется с более ранней версией SugarCube, вам следует загрузить последнюю версию.
  • После загрузки распакуйте архив и поместите в удобное место. Если вы не привыкли систематизировать файлы или управлять творческими ресурсами для разработки проектов, поместите распакованный каталог SugarCube в каталог Twine для безопасного хранения.

  • Каталог SugarCube содержит только несколько файлов, с фактическим кодом в формате .js . Если вы работаете в Linux, щелкните файл правой кнопкой мыши и выберите Копировать .

  • В Twine вернитесь в библиотеку проектов, щелкнув значок домика в нижнем левом углу окна Twine.

  • Нажмите кнопку Formats на правой боковой панели Twine. На вкладке Добавить новый формат вставьте путь к файлу в формате .js и нажмите зеленую кнопку Добавить .

    Если вы не в Linux, введите путь к файлу вручную в следующем формате:

    файл: ///home/your-username/path/to/SugarCube-2/format.js

Использование SugarCube

Чтобы переключить проект на SugarCube, войдите в режим раскадровки вашего проекта.

В представлении раскадровки щелкните заголовок раскадровки в нижнем левом углу окна Twine и выберите Изменить формат истории .

В появившемся окне Story format выберите параметр SugarCube 2.x.

Изображения

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

Создайте где-нибудь каталог проекта. Внутри этого каталога создайте подкаталог с именем img для ваших изображений, audio для вашего аудио, video для видео и так далее.

В этом примере я использую изображение с openclipart.org. Вы можете использовать это или что-то подобное. Независимо от того, что вы используете, поместите свое изображение в каталог img .

Продолжая проект hello_world, вы можете добавить изображение в один из проходов, используя синтаксис изображения SugarCube:

 

 Изображение мира.
Привет [[мир]].

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

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

Переменные и программирование

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

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

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

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

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

Переменные в синтаксисе SugarCube устанавливаются с помощью макроса <>.В SugarCube есть множество макросов, и все они удобны. В этом примере проекта используется несколько файлов.

Измените второй отрывок, который вы создали, чтобы предоставить читателю несколько новых возможностей для исследования:

 

Это было сделано в [[Twine]] в [[Linux]].
<< выбор Старт «Вернуться на Землю». >>

Здесь вы используете макрос <>, который связывает любую строку текста прямо с заданным отрывком. В этом случае макрос <<выбор>> связывает строку «Return to Earth» с переходом Start.

В новый отрывок вставить следующий текст:

 Twine - это интерактивная история. Он работает во всех операционных системах, но я предпочитаю использовать его в [[Linux]]. 

<< установить для $ шпагат значение true >>
<< выбор Начать «Вернуться на Землю». >>

В этом коде вы используете макрос <> для создания новой переменной с именем $ twine . Эта переменная является логической, потому что вы просто устанавливаете для нее значение «истина». Вы скоро поймете, почему это важно.

В отрывке из Linux введите этот текст:

 Linux - это [[Unix]] операционная система с открытым исходным кодом. 

<< установить для $ linux значение true >>
<< выбрать Start «Вернуться на Землю». >>

А в Unix отрывок:

 BSD - это версия операционной системы Unix компании AT&T с открытым исходным кодом. 

<< установить для $ bsd значение true >>
<< выбор Start «Вернуться на Землю». >>

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

Для определения состояния переменной и соответствующей генерации HTML используйте макрос <>.

 Образ мира. 

Привет [[мир]].
<>
<

    >
    << если $ twine истинно >> <
  • > Planet Twine <
  • > <>
    << если $ linux истинно> > <
  • > Planet Linux <
  • > <>
    << если $ bsd истинно >> <
  • > Planet BSD <
  • > <>
    <
>

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

Перемещайтесь по сюжету, периодически возвращаясь на Землю. Обратите внимание, что счет каждого места, которое вы посетили, появляется внизу отрывка «Начало» каждый раз, когда вы возвращаетесь.

Но ничего не объясняет, почему появляется список посещенных мест. Сможете ли вы понять, как объяснить читателю количество исследованных отрывков?

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

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

Изменить мир пассаж:

 Это было сделано в [[Twine]] в [[Linux]]. 

<< установить для $ offworld значение true >>
<< выбрать Start "Вернуться на Землю". >>

Затем используйте другой макрос <>, чтобы определить, установлена ​​ли для переменной $ offworld значение true .

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

 Образ мира. 

Привет [[мир]].
<
>
<

    >
    << если $ twine истинно >> <
  • > Planet Twine <
  • > <>
    << если $ linux истинно> > <
  • > Planet Linux <
  • > <>
    << если $ bsd истинно >> <
  • > Planet BSD <
  • > <>
    <
>
<
>

Попробуйте воспроизвести историю еще раз.Обратите внимание, что читателя не ждут обратно на Землю, пока он не покинет Землю.

Исследуй все

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

Вы можете внести дополнительные изменения в свой проект, изменив таблицу стилей CSS. Для этого щелкните заголовок своего проекта в режиме раскадровки и выберите Изменить таблицу стилей истории .Если вы знакомы с JavaScript, вы также можете создавать сценарии для своих историй с помощью Edit Story JavaScript .

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

A Quick Twine (2.2+) Учебное пособие: вычислительные подходы к повествованию

Эллисон Пэрриш

Загрузите Twine здесь. Это руководство посвящено Twine 2.2.1, и, надеюсь, будет полезен даже для немного более ранних или более поздних версий. (А несколько лет назад я сделал учебник специально для Twine 1.4, который все еще может быть полезен если вы хотите использовать эту версию!)

Игра Twine состоит из «узлов» (или «переходов»; в терминах гипертекста, мы бы назвали их «лексией») и связями между ними.Интерфейс приложения представляет каждый узел в виде блока, а ссылки между узлами в виде стрелок из одного блока к другому. Это полезно для понимания и отслеживания структура вашей игры.

Первые шаги

Когда вы запускаете Twine в первый раз, это выглядит примерно так:

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

Изменение формата истории по умолчанию

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

Потому что существует так много разных пользователей Twine с разным мышлением и разных стилей, Twine поддерживает несколько различных наборов правил, касающихся как написать такой код, чтобы каждый мог писать код в стиле это им удобно.Эти наборы правил называются «рассказом». форматы ». Каждый История, которую вы создаете, должна использовать один (и только один) формат истории. История по умолчанию формат называется Harlowe, но мне нравится преподавать с помощью SugarCube. Так что я собираюсь использовать SugarCube для этого урока. Однако для этого вам нужно необходимо изменить формат истории по умолчанию с Harlowe на SugarCube.

В списке историй на правой боковой панели есть текст, который гласит «Форматы» - ссылка, при активации которой открывается диалоговое окно.В моем версии Twine диалоговое окно выглядит так:

В этом диалоговом окне выберите альтернативу SugarCube с последней версией число (SugarCube 2.x.x, чем выше число, тем лучше). Затем закройте чат.

Создание новой истории

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

После того, как вы нажмете + Добавить , вы увидите следующий экран. Это где ты собственно напишите свою историю. В поле с надписью «Отрывок без названия» рядом с ним маленький зеленый значок ракеты. Здесь и начнется ваша история.

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

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

Редактирование отрывков

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

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

  Название проезда: Железнодорожный вокзал
Тело перехода:

    Вы стоите на переполненном вокзале.

    Пора [[купить билет | Билетная касса]].
  

Странный текст в [[ и ]] - это ссылка . Текст слева от вертикальная черта ( | ) - это текст ссылки, а текст справа от вертикальной черты находится название отрывка, на который вы хотите создать ссылку.

При закрытии окна редактирования текста отрывка (ваши изменения будут сохранены автоматически), вы заметите, что появился новый отрывок:

Ага, верно! Когда вы создаете ссылку, нацеленную на несуществующий отрывок, Шпагат идет вперед и создает его за вас.Удобно. Интерфейс редактирования истории также визуализирует связи между отрывками со стрелками, что упрощает сохранение отслеживайте, как связаны ваши отрывки.

Я собираюсь дважды щелкнуть новый отрывок, созданный для меня Twine, и добавить новый текст:

  Название прохода: Билетная касса
Тело перехода:

    Вы пойдете на юг, в [[Cosmopolitan City]]? Или на север, к этому
    крошечная деревушка, в которую вы ходили летом, [[Ghost Lake]]?
  

Когда вы закроете это окно, Twine снова создаст проходы на которую вы ссылались.Обратите внимание: если вы не добавите | по вашей ссылке, Twine будет считать, что текст ссылки также является названием отрывка. на который вы хотите создать ссылку. Теперь ваша история должна выглядеть так:

Теперь вернитесь и добавьте текст к новым отрывкам, которые вы создали.

  Название пассажа: Cosmopolitan City
Тело перехода:

    Суета большого города бодрит вас.
    Но почувствуете ли вы когда-нибудь, что вы принадлежите? КОНЕЦ
  

  Название прохода: Призрачное озеро
Тело перехода:

    Озеро Призрак приятно в это время года.Говорят вой
    шум - это просто эффект ветра, движущегося по поверхности
    воды, но вы в этом не уверены. КОНЕЦ
  

Удаление отрывков

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

Когда вы это увидите, вам следует вернуться и исправить ссылку! (Вы можете удалить ссылку из текста отрывка, или добавить новый отрывок с названием, которое цель ссылки.)

Играем в вашу игру

Теперь вы создали простую ветвящуюся историю в Twine. Если хочешь попробовать, используйте кнопку ▶ ️ Воспроизвести на панели в нижней части окна Twine. Это будет откройте новое окно, в котором показана ваша история! Это будет выглядеть примерно так:

Вы можете переходить по ссылкам в своей истории, а затем закрыть окно, когда законченный. Кнопка Test выполняет то же действие, что и Play , за исключением того, что она также показывает специфичную для формата истории «отладочную» информацию (т.е., аннотации и сообщения, которые могут облегчить решение проблем, когда они возникнут). Видеть Тестовый режим SugarCube Руководство для получения дополнительной информации Информация.

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

Добавление медиа в вашу историю

К сожалению, Twine 2 в настоящее время не поддерживает возможность объединения медиафайлов. (например, изображения, видео и звук) с вашим файлом истории.Но под капотом Twine - это просто модный способ создания файлов HTML, поэтому вы можете использовать теги HTML для легко ссылаться на медиа, размещенные на вашем собственном веб-сайте.

Например, я взял изображение с лицензии Creative Commons из Викимедиа. Commons и загрузил на свой личный веб-хостинг сайт. (Спасибо, пользователь Викимедиа Фамартин!). Теперь я могу включить URL-адрес файла в тег прямо внутри текст отрывка. (Не забудьте добавить атрибут alt для людей, которые не могут загрузить изображение или кто использует программу чтения с экрана.)

  Название прохода: Призрачное озеро
Тело перехода:

    Озеро Призрак приятно в это время года. Говорят
    воющий шум - это просто эффект ветра, движущегося по
    поверхность воды, но вы в этом не уверены. КОНЕЦ

    фотография Призрачного озера
  

Теперь, когда вы играете в игру, вы увидите изображение в том месте, куда вы положили тег:

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

Недавняя (2020 г.) проблема GitHub при добавлении ресурсов в игры Twine 2, ссылки на много разных решений проблема, включая кодировку ваши медиаресурсы как Base64.

Сохранение и отправка вашей игры

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

Вы можете отправить этот файл своим друзьям или загрузить в Интернет с помощью любого сервис, который позволяет загружать файлы HTML (также известные как «статическое содержимое хостинг »). Если у вас нет места в Интернете для загрузки файла, попробуйте:

  • Neocities: бесплатный общий веб-хостинг с дружественный интерфейс
  • itch.io: сайт по раздаче игр. Много шпагата авторы используют это!

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

Слежение за вещами

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

Мы собираемся поговорить о макросах , , переменных, и , функциях .

Макросы и переменные

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

Макросы записываются так:

  <<что-то>>
  

… то есть две угловые скобки вокруг чего-то, где что-то - это имя макроса, который вы хотите использовать. Некоторые макросы содержат другую информацию между скобки, как мы увидим ниже. Обратите внимание, что макросы - это , а не HTML-тегов! Они работает только в Twine, а не на старых веб-страницах.Если вы хотите просмотреть все доступные вам макросы, официальный SugarCube документация - хорошее место для смотрю.

Получение пользовательского ввода с текстовым полем

Первый макрос, о котором мы поговорим, - это <> , который позволяет предложите вашему читателю что-нибудь напечатать. Затем вы можете взять все, что они набрал и использовать в другом отрывке. Начни новую игру Twine с нуля, и отредактируйте начальный «Отрывок без названия» так, чтобы он выглядел так. (Примечание: я не буду включать скриншоты для окна редактирования отрывка для оставшейся части этого руководство.)

  Название прохода: Добро пожаловать!
Тело перехода:

    Пожалуйста, введите ваше имя ниже.

    << textbox "$ player_name" "Ваше имя" "Приветствую" >>
  

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

Что именно это за струны? Ну, во-первых, читатель введет какой-то текст, и мы хотим использовать этот текст позже. Нам нужно дать этому тексту немного вид дескриптора или имени, чтобы мы могли обратиться к нему позже. Имя, под которым значение в Twine называется «именем переменной». В этом случае $ player_name имя переменной. (Мы могли выбрать любое имя, какое захотим - оно просто чтобы начать с $ и содержать только буквы, цифры и символы подчеркивания.)

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

Наконец, третий параметр позволяет указать, какой отрывок читатель после ввода информации в текстовое поле следует перейти к. В этом случае я указал отрывок под названием «Приветствия», которого я еще не произносил (хотя однажды вы закрыли окно редактирования отрывка, вы заметите, что у Twine автоматически сделал это для нас.)

Вот снова текст макроса:

  << текстовое поле "$ player_name" "Ваше имя" "Приветствую" >>
  

В целом, вы можете прочитать этот макрос как: «Привет, Шпагат! Сделайте ввод текста коробка. Что бы ни вводил читатель, запомните это в переменной с именем $ имя_плеера . Сначала введите текст Ваше имя в текстовое поле, а когда читатель отправляет свою запись, отведите их в отрывок под названием Привет, ».

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

Отображение значения переменной

Конечно, просто поместить то, что игрок ввел в переменную, не поможет. много. На самом деле нам нужно сделать что-то с этой переменной. SugarCube имеет номер макросов для управления переменными и изменения того, что делает игра на основе значение переменной.Самый простой из них - <> , который вы используете вот так:

  << print $ имя_переменной >>
  

… замена $ имя_переменной именем переменной, которую вы хотите отобразить. Я собираюсь отредактировать отрывок «Приветствия» в игре, которую делаю, чтобы он отображает все, что читатель набрал в первом отрывке. Отредактируйте «Приветствия» отрывок так:

  Название отрывка: Приветствую
Тело перехода:

    Здравствуйте, << print $ player_name >>!
  

В приведенном выше примере мы указали макросу <> использовать имя переменной $ player_name , поэтому мы помещаем $ player_name в <> макрос.Сыграйте в игру с самого начала, и вы заметите, что все, что вы наберете в первом отрывке, появится во втором!

УПРАЖНЕНИЕ: сделайте игру Twine, которая задает читателю несколько вопросов о сами, один за другим. (Например, «как тебя зовут?», «Какие у тебя волосы цвет »,« придумайте число от одного до пятнадцати »и т. д.). В последнем отрывке отображать всю информацию, введенную читателем.

Поскольку отображение значения переменной является обычным явлением, SugarCube имеет ярлык.Можно просто указать имя переменной (включая $ ). Для Например, следующий текст отрывка будет делать то же самое, что и текст отрывка выше:

  Название отрывка: Приветствую
Тело перехода:

    Привет, $ player_name!
  
Установка переменных

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

  << установить $ имя_переменной в значение >>
  

… где $ имя_переменной (снова) - это имя, которое мы выбираем для переменной, и значение - это какое-то значение, обычно либо число (например, 5 ), либо строка текста (например, «Мать сказала, что будут такие дни» ). (Больше о различные виды значений ниже.)

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

Прохождение # 1:

  Название прохождения: Начало викторины
Тело перехода:

    Добро пожаловать в личную викторину 2000!

    Вы предпочитаете [[шартрез]] или [[серо-коричневый]]?
  

Прохождение # 2:

  Название пассажа: шартрез
Тело перехода:

    Ярко и живо, а? Очень интересно.<< установить для $ личность значение "кокетливый" >>

    [[Смотрите свои результаты | Результаты]]
  

Прохождение # 3:

  Название пассажа: серо-коричневый
Тело перехода:

    Ах, мягкий и элегантный.

    << установить для $ личность значение "заслуживающий доверия" >>

    [[Смотрите свои результаты | Результаты]]
  

Прохождение # 4:

  Название прохода: Результаты
Тело перехода:

    Наш тест показал, что ваш тип личности
    $ личность. Спасибо за участие!
  

Вот как должна выглядеть история в редакторе:

Сыграть завершенную версию этой личности викторина, чтобы увидеть, как это работает и узнайте, какова ваша личность!

Различные виды ценностей

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

Макрос <> также может устанавливать числовых значений , например 5 или 19,42 . Когда вы пишете число, вам не нужно включать кавычки.

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

УПРАЖНЕНИЕ. Создайте игру Twine, в которой <> задает переменную $ score для читатель, исходя из того, какой из нескольких проходов они выберут в игре. Есть все переходы приводят к переходу «Игра окончена», в котором отображается переменная $ score .

Изменение значения переменной

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

  << установить для $ favourite_color значение "красный" >>
  

… а затем в другом отрывке:

  << установить для $ favourite_color значение "синий" >>
  

Переменная $ favourite_color теперь будет иметь вид "синий" до конца история (или пока ваша история снова не изменит свое значение!).Вот пример игры который изменяет переменную, которая отслеживает уровень голода читателя в ответ на выбор, который они делают.

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

Есть простой способ сделать это с помощью SugarCube, используя выражений. An «Выражение» - это комбинация значений, переменных и операторов, которые компьютер проверяет и оценивает , выдавая единственное значение. Мы поговорим еще о выражениях ниже (что это такое, как они работают и правила для соединяя их вместе). А пока вот как написать выражение, которое заставляет макрос <> увеличивать переменную на единицу.

Допустим, вы начинаете один отрывок с этого кода:

  << установить $ score на 0 >>
  

Если вы хотите увеличить значение в $ score на 1, вы можете поместить этот макрос в другом отрывке:

  << установить $ score на $ score + 1 >>
  
Слишком много виджетов

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

Прохождение # 1:

  Название прохода: Добро пожаловать
Тело перехода:

    Добро пожаловать в магазин виджетов.

    Поздравляю! Вы наш миллионный клиент. У тебя есть
    выиграл неограниченный запас виджетов! Как здорово.

    << установить для $ widget_count значение 0 >>

    [[Войти в выставочный зал | Выставочный зал]]
  

Прохождение # 2:

  Название прохода: Выставочный зал
Тело перехода:

    Вы находитесь в демонстрационном зале виджетов.Вы окружены
    красивые, сверкающие виджеты.

    У вас есть виджет (ы) $ widget_count.

    [[Взять виджет]]
  

Прохождение # 3:

  Название перехода: Виджет взять
Тело перехода:

    Берешь виджет.

    << установить для $ widget_count значение $ widget_count + 1 >>

    [[Назад | Выставочный зал]]
  

Ваша игра должна выглядеть так:

Я загрузил для вас полную версию игры с виджетами.

Вы можете заменить + в выражении на - , если хотите, чтобы значение до уменьшите на единицу вместо увеличения.Вы также можете изменить номер: если поставить 20 вместо 1 , значение увеличится на двадцать вместо один. Попробуйте!

Установочные звенья

Мы потратили много времени на создание отрывков, которые служат только одной цели: использовать макрос <> для установки переменной на определенное значение, затем перейти к другому отрывку. Оказывается, это очень обычное дело хотеть делать - настолько часто, что у Twine есть сокращение, позволяющее вы можете установить переменную прямо внутри ссылки! Этот метод называется сеттером. ссылка »и выглядит так:

  [[Текст ссылки | PassageName] [$ variable = value]]
  

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

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

Прохождение # 1:

  Название прохождения: Начало викторины
Тело перехода:

    Добро пожаловать в личную викторину 2000!

    Вы предпочитаете [[шартрез | Результаты] [$ identity = "flirtatious"]]
    или [[серо-коричневый | Результаты] [$ identity = "trustworthy"]]?
  

Прохождение # 2:

  Название прохода: Результаты
Тело перехода:

    Наш тест показал, что ваш тип личности
    $ личность.Спасибо за участие!
  

УПРАЖНЕНИЕ: Используя ссылки установщика, можете ли вы создать версию Widget Emporium игра, в которой используется всего два прохождения? Только один пассаж?

Принятие решений с помощью

<>

На данный момент мы знаем, как устанавливать переменные, печатать переменные и как изменять значение переменной после ее установки. Теперь мы узнаем, как заставить наши истории Twine делать разные вещи в зависимости от значения переменной.

Макрос <> / <> / <> проверяет соответствие значения переменной определенные критерии. Если это так, то текст между Отображаются <> и <> , и любые макросы в них будут выполнен. Если это , а не , тогда текст между <> и <> , снова вместе с любыми макросами. (Если вам не нужно особенное поведение, когда <> условие не выполняется, вы можете просто пропустить <> ).

Самый простой способ использовать <> / <> / <> - использовать имя переменной после , если . В следующем коде будет отображаться «У вас есть ключ!» только если переменной $ player_has_key присвоено значение с помощью макроса <> ранее.

  << if $ player_has_key >> У вас есть ключ! <> Этот ключ должен
быть где-нибудь здесь ... <>
  

Вот игра Twine, в которой используется макрос <> / <> для отображения фрагмент текста в отрывке, только если игрок посетил другой отрывок.

Прохождение # 1:

  Название прохода: Начало
Тело перехода:

    Вы находитесь на лесной поляне.

    << если $ wear_spectacles >>
    Поскольку вы носите хрустальные очки, вы видите [[кошку]]
    здесь его усы, посеребренные в лунном свете.
    <>
    Вам приходит в голову рыться в своих [[вещах]].
    <>
  

Прохождение # 2:

  Название пассажа: вещи
Тело перехода:

    В ваших вещах вы найдете пару хрустальных очков.Ты
    решили надеть их.

    << установить для $ wear_spectacles значение 1 >>

    [[Назад | Начать]]
  

Прохождение # 3:

  Название прохождения: cat
Тело перехода:

    Кот говорит. «Я Кот Времени», - говорит он. "Я могу взять
    вы в любое время, когда захотите ".

    ЛУЧШИЙ КОНЕЦ 100% ЗАВЕРШЕНИЕ
  

Вот как должен выглядеть готовый макет:

Здесь вы можете увидеть, что вещи проезд <> s $ wear_spectacles от до 1 , когда читатель посещает отрывок.Когда игрок возвращается к Start , ранее скрытый фрагмент текста (ссылка на cat ) появляется, позволяя читателю завершить рассказ.

Сыграйте в «Кошку времени» здесь.

Вы также можете использовать <> для цепочки проверок на наличие нескольких условий; увидеть пример для либо () ниже.

Функции

У

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

либо ()

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

  Дождь льется из << принта ("шифер", "камень", "мрачный") >>
небо. 

… или чтобы произошло что-то случайное:

  << установить $ player_fate в любое ("смерть", "счастье", "фондю") >>
<< если $ player_fate - "смерть" >>
Вы умираете окончательно и мучительно.
<< elseif $ player_fate - это "счастье" >>
Вы живете долго и счастливо.
<< elseif $ player_fate - фондю >>
Вы устраиваете вечеринку с фондю со всеми своими ближайшими друзьями.
<>
  
посетил ()

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

  Вы посетили сырный магазин << распечатать посещение ("Сырный магазин") >> раз.
  

Эту функцию также можно использовать в макросах <> для принятия решений на основе посетил ли читатель конкретный отрывок:

  << при посещении ("Университет")> 0 >>
Вы были в университете, поэтому знаете все, что вам нужно знать
об интерактивном тексте.<>
  
предыдущая ()

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

  Вы успешны в своей карьере, даже если << if previous () является
"Университет" >> вы начинаете без реального опыта << иначе, если предыдущий () -
"Тренинг" >> у вас нет формального образования <>. 

Подробнее о выражениях

Прочтите документацию SugarCube на выражения.

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

  • - это : истина, если левое значение равно правому значению.
  • neq : истина, если левое значение НЕ равно правому значению ( neq сокращенно для не равно ).
  • > : истина, если левое значение больше правого.
  • <: истина, если левое значение меньше правого.
  • > = : истина, если левое значение больше или равно правому значению.
  • <= : истина, если левое значение меньше или равно правому значению.

Так, например, чтобы проверить, имеет ли переменная $ player_name какое-то значение , кроме Josephine, вы можете добавить в свой код следующий макрос:

  << if $ player_name neq "Josephine" >>
Эта мадлен предназначена только для Жозефины! Уходите!
<>
  

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

Так, например, чтобы какой-то текст появлялся только в том случае, если у ридера пять монет И что их зовут Роберт:

  << if ($ player_name - "Роберт") and ($ coin_count> = 5) >>
Вы Роберт, и у вас достаточно монет, чтобы купить этот великолепный
и волшебный меч.<>
  

Чтобы отобразить текст, если у игрока либо 0 очков, либо 100 очков:

  << если ($ оценка равна 0) или ($ оценка равна 100) >>
Вы либо действительно хороши в этой игре, либо очень плохи в этой игре.
<>
  

Наконец, оператор , а не , принимает выражение прямо вправо, и считается «истина», если выражение «ложь», и «ложь», если выражение правда." Вы можете использовать это, чтобы проверить, соответствует ли определенное условие , а не получить:

  << если нет ($ оценка 0) >>
У вас больше или меньше нуля! Отличная работа.<>
  

Удаление лишних пробелов

Вы могли заметить, что каждый раз, когда мы используем макрос, какие-то странные дополнительные в готовом выводе появляется пробел. Это происходит потому, что Twine считает новые строки, которые находятся внутри макроса (т.е. после >> ), даже если макрос ничего не отображает (например, если условие <> не выполняется). Например, такой код:

  Вот текст раньше.<< если $ player_name - "Sandra" >>
Вы Сандра.
<>

А вот и текст после.
  

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

Один из способов исправить это - просто удалить как можно больше новых строк, размещение макроса <> против другого текста:

  Вот текст раньше.<< если $ player_name - "Sandra" >>

Ты Сандра. <>

А вот и текст после.
  

Это нормально (попробуйте!), Но это немного сбивает с толку, потому что <> Макрос находится в странном месте. В идеале мы хотели бы сохранить пробелы в нашем коде, чтобы не усложнять избегая появления нежелательных пробелов.

Другой способ сделать это - использовать символ \ (обратная косая черта).Если вы положите этот символ в конце строки, он указывает Twine не отображать новая строка в визуализированном выводе:

  Вот текст раньше.

<< если $ player_name - "Sandra" >> \
Вы Сандра.

<> \
А вот и текст после.
  

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

  <>
<< установить $ сыр на 1 >>
<< установите для $ room_title значение "Вестибюль" >>
<< установите для $ current_trouser_type значение "Denim" >>
<>
  

Стили ссылок

Раздел «Ссылки в лексике» книги Стейси Мейсон и Марка Бернстайна «О Ссылки: Упражнения в Стиль »описывает несколько стили ссылок, которые реализует Sugarcube.Давайте посмотрим на некоторые из них!

Это список не исчерпывающий! Я просто пишу о некоторых низко висящих фрукты. Использование интерактивной программы Sugarcube макросы, ссылки макросы и DOM макросы, это возможно создавать связи с очень сложным и выразительным поведением с очень немного кодирования.

Велосипедные звенья

Макрос <> создает «циклическую» ссылку. Такая ссылка не ведет к другому проходу; вместо этого, когда читатель нажимает на нее, текст ссылки изменения.Этот макрос функционально похож на выпадающий виджет или серию радиокнопок, а Sugarcube сохраняет любую опцию, отображаемую в данный момент на экран. Схематично макрос выглядит так:

  << цикл автоматического выбора "$ var_to_store_result" >>
  << option "Label1" "value1" >>
  << option "Label2" "value2" >>
  ...
<>
  

Sugarcube сохранит выбранный в данный момент параметр в переменной с именем между кавычками в первом параметре макроса <> .Каждый шаг цикл включен как макрос < в <> ; первое параметр < - это текст отображаемой ссылки, а второй Параметр - это значение, сохраняемое в указанной выше переменной.

Вот пример:

  Я съел бранч << cycle "$ brunch" autoselect >>
  << вариант "huevos rancheros" "яйца" >>
  << вариант "вафли" "вафли" >>
  << вариант "Кобб салат" "салат" >>
<>
  

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

  Днем позже я с любовью вспомнил о бранче. 

Как выглядит:

Замена звеньев

При нажатии замещающая ссылка заменяется заданным текстом. Его довольно просто с синтаксической точки зрения:

  << linkreplace "исходный текст ссылки" >> замена <>
  

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

  Нет места лучше << linkreplace "home" >> my << linkreplace
"брат" >> сосед зятя по комнате в колледже <>
квартира <>. 

Как выглядит:

Синхронизированный текст

Макрос <> от

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

  << с таймером 100 мс >> Текст для отображения ... <>
  

Второй параметр должен быть отформатирован как данные CSS time тип (то есть: целое число плюс с для секунд или мс для миллисекунд, без пробелов между ними).

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

Вот пример, который объединяет все это:

  Совсем не так, это как ... \
<< по времени 1500 мс >> разное. \
<< следующие 2000 мс >> Как что-то совсем другое.\
<< следующие 2500 мс >> Вы даже не догадываетесь, что это такое.
<>
  

Работа с переходами

Отрывок - основная единица текста в Twine. У отрывка есть название, некоторые теги и тело. Помимо отображения и связывания отрывков, Sugarcube дает вам возможность рассматривать отрывки как данные и как исходный материал. Этот В разделе есть несколько примеров того, что вам нужно знать, чтобы воспользоваться это.

Особые проходы

Sugarcube просматривает вашу игру в поисках отрывков с определенными именами, а затем использует эти отрывки для определенных целей.Полный список специальных названия отрывков в официальная документация. Но вот несколько основных моментов:

  • StoryInit : содержание этого отрывка оценивается перед рассказом. начинается. Это отличное место для инициализации переменных.
  • StoryAuthor и StoryDisplayTitle : Содержание этих отрывков используется для установки автора истории и ее отображаемого заголовка в левой части Панель пользовательского интерфейса Sugarcube.
  • PassageHeader и PassageFooter : Содержимое этих отрывков включены до и после (соответственно) отображается текущий отрывок.Вы можете использовать это для включения общих элементов в каждый отрывок или для выполнения инициализация и очистка переменных перед переходом.

Включая отрывки

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

Синтаксис макроса <> выглядит следующим образом:

  << включить "Название перехода" "div" >>
  

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

Теги перехода

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

Функция tags () оценивает список тегов для текущего отрывка; тегов ().includes ("tag-name") проверяет, применен ли тег с tag-name к текущему отрывку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *