Истории

Интервью: Garrett Fletcher (разработчик txt2web)

Из этого интервью вы узнаете, какая судьба ждёт язык QSP, в чём разница между сложностью и сложностью, и каким образом Garrett Fletcher вообще решил взяться за модернизацию QSP.

ВБ: Привет, Garrett Fletcher! Очень хочется тебя расспросить про модернизацию QSP, особенно накануне ежегодного QSP Compo, но начну всё же по традиции наших интервью: если одним предложением -- кто ты?

Garrett Fletcher: Случайный чувак в Интернете, который иногда "ради удовольствия" пишет код. Иногда полезный. :)

ВБ: Забавно :) Представляю, ты бродил по Интернету и 25 февраля случайно забрёл на наш discord-сервер, так? Как ты узнал про него? Про сообщество любителей текстовых игр вообще?

Garrett Fletcher: Ну, "сообщества любителей" сейчас есть по всему, так что про него и узнавать не надо было. :) А Discord-сервер искал специально чтобы какие-то вопросы задать по языку QSP.

ВБ: Интересно! А где и как тебя свела судьба с QSP?

Garrett Fletcher: Я вообще последнее время не сильно интересовался IF, раньше было больше, но недавно наткнулся на англоязычную версию Girl Life, у которой есть интересная особенность. Это игра как бы "для взрослых", но в которой контент "для взрослых" совершенно не обязателен. Сначала начал копаться в сорцах чтобы сделать его ещё менее обязательным (оригинал иногда не оставляет игроку выбора), и обнаружил что язык QSP при всех его многочисленных недостатках имеет и ряд гениальных решений, например блок ACT.
    На этом месте и вспомнилась давно забытая идея сделать свой квест и я начал изучать движки по нескольким критериям: возможность писать игры в любом текстовом редакторе, публиковать игры на сайте без флеша и плагинов, и адаптировать язык вод свои нужды. В лидеры сразу выбились Twine (Twee) с не очень удобными на мой вкус языками ("форматами квестов"), и QSP (txt2gam) с отсутствием возможности опубликовать игру на сайте, но достаточно простым и гибким языком чтобы поверх него сделать всё что душе угодно. Подумал какую из двух проблем будет решить проще, проще оказалось решить проблему QSP.

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

Garrett Fletcher: Полностью наоборот. Во-первых, компилятор txt2web написан с нуля и из существующих наработок использует только документацию (но при этом максимально совместим с существующими играми), во-вторых, существует он не ради адаптации языка, а ради того чтобы игры можно было делать страничками в интернете (как Twine), в третьих, надстройка над QSP будет позже и скорее всего никому кроме меня нужна не будет. :D От компиляции игр в веб-страницы очевидно профит получат все, а мне это работы прибавляет всего 5-10%.

Т.е. есть два проекта:
1. txt2web: Компилятор QSP => веб-страница, на котором должны работать существующие игры и которым смогут пользоваться все.
2. qspl: Надстройка над языком QSP, ни с чем не совместимая и нужная только мне.
Конечно, второй проект тоже опубликую и если кому-то он всё же покажется полезным - поработаю над простотой использования.

ВБ: Интересно. Расскажи подробнее про первый проект, txt2web: на какой он сейчас стадии, какие есть ограничения совместимости?

Garrett Fletcher: Первый проект осталось потестировать на больших играх и собрать для виндовса (сейчас скачать можно только верию для линукса - моей основной платформы для разработки). Ограничения все связаны только с тем что компилятор работает один раз на машине автора, и в игре его уже нет. У плееров же всегда есть под рукой интерпретатор который может выполнить любой код.
    Для авторов это значит что код для DYNAMIC и DYNEVAL нельзя собирать из произвольных строк, т.е. они должны быть полностью известны заранее, при компиляции. Есть ещё кое-какие мелочи, но заметные ограничения накладывает только это. Подробности здесь.

ВБ: Интересно. Я, честно говоря, не большой специалист по QSP-играм (особенно по их начинке). Как часто в играх используется не совместимый с компилятором код?

Garrett Fletcher: Все маленькие игры которые я проверял работали без единого изменения, а по большим пока сказать не могу. Скорее всего, в Противостоянии будут проблемы, например.

ВБ: Что ж, интересно было бы посмотреть на результаты тестов больших игр и понять, насколько универсальным получается использование txt2web. В любом случае, возможность опубликовать игру в виде html для меня лично кажется серьёзным аргументом в пользу этой новой версии движка. Публикация онлайн позволяет не только играть при наличии интернета с любого устройства, но и даёт возможность использовать функционал, который связан именно с онлайном. Например, мультиплеер. Насколько мне известно, настоящий мультиплеер реализован сейчас только в Аперо. Расскажи, будет ли возможность сделать что-то подобное с QSP?

Garrett Fletcher: В принципе такая возможность есть у любого движка в котором можно использовать Javascript, и QSP к ним относится. Раньше этого не делали только потому что значение переменной можно положить из QSP в Javascript (и дальше на сервер), но не обратно. Для компилятора возможность реализовать двустороннюю связь сейчас обсуждается. Проблема только в том что авторам всё равно придётся писать сервер с использованием существующих серверных веб-технологий. QSP - только для клиента.
    Кстати, публикация онлайн означает так же что не нужно будет писать по плееру на каждую платформу. Если есть обычный браузер - то вы можете играть в QSP-игры.
    Большое преимущество Аперо в том, что есть один сервер, и все игры используют только его.У игр на QSP никаких серверов нет и не требуется, но это значит, что нет и готового решения для мультиплеера.

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

Garrett Fletcher: Первоначально он был встречен со скептицизмом. Видимо потому что слишком часто попытки что-то сделать заканчивались бесследным исчезновением разработчика. :D Но стоило опубликовать первую работающую игру - интерес возрос многократно. С тестированием проблема. Как я сказал выше, сейчас есть сборка только под линукс, соответственно тестировал его пока, насколько я знаю, только NickoAilus. Дальнейшие шаги - собрать несколько больших игр и убедиться что всё работает (или нет...), затем делать сборку компилятора под виндовс для тестирования широкой аудиторией.

ВБ: Ты упоминал второй проект -- qspl, надстройку над QSP, которая нужна только тебе. Расскажи об этом подробнее.

Garrett Fletcher: Большинству это покажется переусложнением. :D В QSP почти нет средств управления сложностью. Есть только функции, и те реализованы не очень удобно. Но при этом он имеет ряд особенностей, которые делают достаточно лёгкой трансляцию *других языков в него*. DYNAMIC/DYNEVAL могут получать аргументы, т.е. фактически являются абсолютно полноценными лямбдами. Метки и JUMP позволяют реализовывать любые управляющие конструкции.
    Идея состоит в том чтобы сделать удобный мне язык с лисповым синтаксисом и макросами, и переводить его в QSP. Заодно можно сделать язык более безопасным, например проверять на использование необъявленной переменной, попытку вызова обычной локации как функции и т.д. Список идей для него очень большой, но реализация будет достаточно простой. На Common Lisp, на котором реализованы оба проекта, вообще очень легко писать компиляторы и трансляторы. 

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

ВБ: Занятно. И всё это ради удобного управления сложностью игры?

Garrett Fletcher: Complexity, а не difficulty. Т.е. сложный код на QSP сложно поддерживать и очень мало средств для описания сложной логики относительно простым высокоуровневым кодом.

ВБ: Ясно! Всё это делается в связи с идеей какой-то игры на QSP, так?

Garrett Fletcher: Да. Рассказать подробности пока не могу, но это будет примерно пополам сюжетка со стенами текста и выживалка со сложной логикой и боёвкой. Обычно такие игры не нравятся фанатам ни тех ни других, но я хотел бы рискнуть.

ВБ: Интригует! Что ж, будем ждать новостей о разработке игры, видимо после того, как закончатся новости о разработке движка! Ты будешь писать один или в команде?

Garrett Fletcher: Знакомый сделает графику и поможет с редактурой текстов. Код и сюжет - мои. Из контента я умею только немного писать, и немного в 3d-графику. А по задумке нужны именно 2d рисунки.

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

Garrett Fletcher: Скорее всего дело в том что язык QSP действительно достаточно простой для авторов. Сначала просто пишется текст, потом тут понадобилась переменная, здесь условие, на форуме подсказали про локации-функции... Ещё одно опасение из-за которого компилятор сначала был встречен со скептицизмом - что им будет так же сложно пользоваться как Quest Navigator'ом. Т.е. простую игру для QSP можно написать испольуя только строки и блоки ACT. Для использования Quest Navigator нужно понимать хотя бы основы веб-технологий. Для QSPL нужно будет как минимум не пугаться лиспового синтаксиса, которого в простых случаях чуть побольше чем в QSP.

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

ВБ: Интересно. Как ты думаешь, возможно ли в таком случае в интерактивной литературе увидеть когда-нибудь действительно большой проект, созданный большой командой? Или по своей сути текстовые квесты -- это авторские игры?

Garrett Fletcher: Посмотрите на любую давно развивающуюся игру. Количество разработчиков уже измеряется десятками. Но чтобы собралась большая команда и сделала игру с нуля, скорее всего нужны какие-то гарантии окупаемости, а у IF слишком маленькая для этого аудитория.

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

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

Garrett Fletcher: Понятия не имею. Широкая публика сейчас вообще много читать сильно не любит.

ВБ: Понятно. Расскажи, как ты познакомился с текстовыми квестами и интерактивной литературой?

Garrett Fletcher: Настоящим знакомством наверно были англоязычные игры на Twine несколько лет назад, но о качестве игр мне попавшихся говорит то, что я сейчас ни одной вспомнить не могу. Ещё задолго до этого был интерактивный роман (название жанра меняется от издания к изданию :D) "Теперь ты - стальная крыса". Гарри Гаррисон - первоклассный автор, но впечатление немного портило наличие локаций с текстом вроде "Возвращайся откуда пришёл и подумай ещё раз" и отсутствия у бумажных книг кнопки "назад". После второй привыкаешь при переходе держать палец на странице с прошлой локацией. Примерно в это же время Космические Рейнджеры набирали авторов текстовых квестов, и в готовой игре их было довольно много, и некоторые довольно длинные, но всё же они там были на правах мини-игры.

А более недавно (считай третий раз) вспомнить о IF заставили... текстовые квесты в Saints Row 3 и 4.

ВБ: Да уж, разносторонее знакомство! Вот ты сейчас занимаешься модернизацией довольно старого движка. С твоей помощью он, может быть, догонит время. А что касается самой интерактивной литературы: как ты думаешь, куда всё движется?

Garrett Fletcher: Похоже что относительно массовую популярность сейчас получают игры на смешении традиций VN и IF. Не могу сказать что всё движется именно в этом направлении, т.к. авторы для каждой игры выбирают лучший способ подачи, да и ресурсы часто ограничены, но похоже что именно это позволяет собрать относительно большую аудиторию. Т.е. это либо VN с логикой, инвентарём, сильным ветвлением и т.д., либо текстовый квест с большим количеством графики.

ВБ: А какие у тебя вкусы, совпадают ли они с этими общими тенденциями? Можешь выделить какие-то игры на QSP, например, которые тебе понравились?

Garrett Fletcher: Для меня графика не так принципиальна, но в целом - совпадают. В принципе, с одной стороны люблю и игры с настолько сложной логикой чтобы её было невозможно эксплуатировать, а формат текстовых квестов-песочниц для этого идеально подходит потому что авторам не нужно думать практически ни о чём другом. С другой стороны, мимо интересной интерактивной книги тоже не пройду.

На QSP сейчас не могу особо выделить какие-то игры, т.к. после "третьего знакомства" сразу пошёл интенсивно кодить компилятор, но в качестве сложных игр для тестирования мне предложили Противостояние и Вереницу Миров. У второй есть вариант в fb2, и она действительно вызвала флешбеки книги-игры Гаррисона из детства. Противостояние порадовала как раз комплексностью (при принятии решений можно руководствоваться соображениями логики, а не попытками обмануть игру) и детальностью - не могу припомнить вторую игру где у женщин тоже есть обхват бицепса. :D

ВБ: Уже очень скоро закончится приём игр на QSP Compo 2020. Понятно, что к лету ты вряд ли успеешь закончить с компилятором, а авторы вряд ли смогут научиться его использовать. А что насчёт следующих конкурсов? Как ты думаешь, увидим ли мы онлайн-игру на QSP осенью-зимой на КОНТИГР-2020 или на следующий QSP Compo, например?

Garrett Fletcher: Осенью-зимой скорее всего успеем. NickoAilus сейчас делает IDE в отличие от Qgen кроссплатформенную, и он собирается сразу интегрировать в неё компилятор. Так что скорее всего учиться даже не придётся - просто нажать кнопку на панели инструментов. Если у него что-то пойдёт не так, то мне сделать отдельный графический интерфейс только для компилятора - тоже дело нехитрое.

А игры для него можно и в Qgen писать, потом экспортировать в txt-файл и отдавать его компилятору.

ВБ: Здорово! Будем ждать новых игр на QSP нового поколения. Спасибо за интервью и за твою инициативу!

16.05.2020

Комментариев нет:

Отправить комментарий