Открыть главное меню
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>>

Ссылки

См. также