Twine | |
Тип | Менюшные платформы |
---|---|
Разработчик(и) | Крис Климас и сообщество, русский перевод Антон Жучков |
Языки интерфейса | 15 языков, в том числе русский |
Операционные системы | Браузер, Windows, macOS, GNU/Linux (Twine 1.x без GNU/Linux) |
Написано на | JavaScript (версия 1.x на Python 2) |
Язык разработки | Собственный скриптовый Twine с визуальным редактором и JavaScript |
Читаемые форматы файлов | Исходный код Twine (*.tws) |
Создаваемые форматы файлов | Исходный код Twine (*.tws), Веб-страницы (*.html) |
Дата первого выпуска | 2009 |
Последняя версия | 2.3.4 (сохраняющая актуальность версия 1.4.2 первого поколения) |
Дата последней версии | 23 сентября 2019 |
Лицензия | GNU GPL v3.0 |
Сайт | twinery.org |
Содержание
Общая информация
Система для создания интерактивных историй на 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>>