От школьного урока до Netflix: что такое Twine и как я на нём делаю игру.
Привет. Сегодня без сюжетов и персонажей - расскажу на чём вообще делаю свою игру и как это устроено изнутри.
Но сначала немного о том, что меня к этому привело.
Знаешь эти детективные настолки в коробке, которые продаются на маркетплейсах? Где ты с друзьями расследуешь дело, вскрываешь конверты с уликами, ищешь убийцу. Я их обожаю. Но каждый раз ловлю себя на мысли переделать какие-то мелочи или раскрыть линии сюжета.
В коробке ты ограничен бумагой. Персонажи там - пара строчек на карточке. Сюжет линейный: вскрыл конверт, прочитал, пошёл дальше. А что если дать этим персонажам живые характеры? Историю, мотивы, реакции которые меняются от твоих действий? Что если расследование можно вести в любом порядке, а не по заранее заданным шагам? Что если у убийцы есть психология, а у свидетелей - секреты которые не лежат на поверхности?
Вот из этой мысли - «взять уют детективной настолки и насытить её живой историей» - и выросла идея попробовать создать свою игру. А инструментом стал движок Twine. И этот пост об этой приблуде!
Что такое Twine и почему именно он.
Twine - бесплатный движок для интерактивных историй, текстовых игр и визуальных новелл. Главная фишка: чтобы сделать простую игру, код знать не нужно вообще. Пишешь текст, расставляешь ссылки - получаешь игру в виде обычной HTML-страницы, которая открывается в любом браузере.
Создал его в 2009 году веб-разработчик и геймдизайнер из Балтимора Крис Климас. И тут любопытная деталь - Twine не выстрелил сразу. По словам самого Климаса, движок никому не был интересен, пока его не подхватило инди-сообщество, о котором он на тот момент даже не знал. Вдохновлялся он текстовыми квестами 80-х и романом «Дом листьев» - хотел сделать инструмент, где в центре стоит автор, а не команда программистов и художников.
Философия так и звучит - «писатель в центре процесса». Поэтому Twine облюбовали не только геймдевелоперы, но и поэты, психологи, активисты - люди далёкие от кода.
Как устроена работа - пассажи.
Вся игра собирается из блоков, которые называются пассажами. Представь карточки на стене, соединённые ниточками - в редакторе это так и выглядит. Каждый пассаж - отдельный экран: комната, диалог, развилка.
Вот простейший пассаж:
Двойное двоеточие - имя пассажа. Текст в двойных квадратных скобках - ссылка-переход. Игрок жмёт «Войти» - попадает в пассаж Frida_porog. Это уже работающая нелинейная история.
StoryInit - мозг игры.
Есть особый пассаж - StoryInit. Он запускается один раз в самом начале, до того как игрок что-то увидит. Сюда я прописываю стартовые значения: таймер, счётчики улик, флаги «опрошен ли персонаж», «найдена ли улика».
Доллар - переменная. $klyuch_naiden = 0 значит «ключ ещё не найден». Когда игрок находит ключ, ставлю значение в 1 - игра запоминает. Дальше проверяю: ключ найден - дверь открывается; нет - «заперто». Это и есть логика, которая превращает текст в игру с памятью и последствиями.
У меня немного базовых знаний JavaScript - на фоне многих геймдевелоперов это совсем скромно. Но для Twine этого хватает: большую часть логики собираешь из простых макросов, а в чистый код лезешь только когда нужно что-то нестандартное.
Story Format - диалекты движка.
У Twine нет одного жёсткого языка - есть story formats, форматы историй, как диалекты:
- Harlowe - по умолчанию, для новичков
- SugarCube - мощный, для сложных проектов с логикой
- Snowman - для тех кто лезет в чистый JavaScript
- Chapbook - «второе поколение», делает сам Климас
Я выбрал SugarCube - он тянет сложную логику, таймеры, состояния. Для детектива с десятками улик незаменим.
А куда CSS?
Чтобы игра не выглядела как голый текст на белом фоне, в Twine есть отдельная вкладка - Stylesheet. Туда вставляешь обычный CSS, он применяется ко всей игре. Именно там я задаю тёмный фон, рамки диалогов, стиль кнопок - весь «архивно-нуарный» вид. Рядом вкладка JavaScript - для сложных штук вроде таймера обратного отсчёта.
Что дальше, когда сценарий готов?
Самое приятное - публикация. Twine конвертирует всю игру в один HTML-файл. Без установок, без аккаунтов, без магазинов приложений. Файл можно залить на itch.io, выложить на сайт или просто скинуть другу в личку. Открыл ссылку - играешь.
Пара фактов которые меня удивили.
Twine куда серьёзнее чем кажется.
Сценарист Чарли Брукер написал на Twine сценарий «Чёрного зеркала: Брандашмыг» - того самого интерактивного фильма Netflix. И вот тут начинается интересное. Сценарий разросся до 170 страниц. В фильме больше 150 минут уникальных съёмок, разбитых на 250 сегментов, которые дают больше триллиона возможных путей. Официально - пять «главных» концовок, но сами создатели спорят между собой сколько их на самом деле: продюсер Аннабель Джонс говорит пять, Брукер - больше, а продюсер Маклейн насчитывает до двенадцати.
Брукер, кстати, сначала наотрез отказывался учить Twine - «да ни за что я не буду в этом разбираться». А через пару недель уже ковырялся в нём сам, методом проб и ошибок. Знакомо до боли 😄
И самое забавное - Netflix потом публиковал статистику выборов зрителей. Решение «расчленить или закопать тело отца» дало раскол 52% на 48%. Маленький текстовый движок превратился в инструмент социологического эксперимента.
А ещё на Twine сделана Depression Quest - игра, вокруг которой развернулся скандал «геймергейт», одна из крупнейших дискуссий индустрии о том, что вообще считать игрой. На Reddit до сих пор можно найти многостраничные споры - игра это или «просто текст с кнопками». Любопытно что та же претензия летит во все текстовые игры, и каждый автор отвечает на неё по-своему.
Twine применяют и в образовании - доктор Джеремайя Макколл разработал методику преподавания истории через игры-симуляторы на Twine. Ученики не читают про событие, а проживают его, принимая решения. Его первая профессиональная страсть - преподавание в средней школе, особенно разработка учебных подходов, которые помогут ученикам мыслить как эксперты в своих дисциплинах. Его книга «Играя прошлое: использование видеоигр для преподавания истории в средней школе» (второе издание, Routledge, 2022) - первая работа на эту тему. Вторая, «Разработка исторических игр для классов: практическое руководство для преподавателей», выйдет в Routledge во второй половине 2026 года. В общем интересный дядька - почитать о нём и его подходе можно тут:
Вот так, если коротко, устроена кухня моей игры. Никакой магии.
Это была общая картинка. А чуть позже хочу показать конкретный процесс - как создаётся одна локация целиком, с кодом и разбором: от пустого пассажа до работающей сцены с диалогом и уликами.
А вы пробовали делать что-нибудь в Twine или подобных движках? Или знаете игры на нём которые зацепили - поделитесь в комментах, интересно почитать!