Компилятор QSP в Javascript и плеер

Компилятор QSP в Javascript и плеер

Компилятор по-умолчанию делает монолитный html файл (без зависимостей), но есть варианты.

Сорцы здесь: https://hg.sr.ht/~naryl/SugarQSP
Демка взята отсюда: http://qsp.su/index.php?option=com_cont … ;showall=1
Собственно демка: https://5e755f120b98f.htmlsave.com/

Пока реализованы не все стандартные функции, и нет сборки доступной для скачивания. Баг репорты пока слать не нужно. smile

Собственно, компилятор написан с полного нуля и использует формальный копилятор компиляторов на основе packrat... короче, мне очень легко менять синтаксис, ввести новые возможности и т.д. На данный момент в планах сделать его полностью совместимым с Qqsp. Большинство отличий продиктованы тем что это именно компилятор, а не интерпретатор:


  1. & используется только для разделения выражений

  2. { ... } - это не строка, а блок кода. Их нельзя склеивать операторами +.

  3. DYNAMIC/DYNEVAL могут выполнить только блок кода, а не произвольную строку.

  4. $CURACTS возвращает блок, а не строку.

  5. В <a href="exec:..."> не работают <<подвыражения>>. В этом всё равно нет смысла и никто так не делал, т.к. там и так код на QSP, а не JS, но в классике работало.

  6. DISABLESUBEX ничего не делает (хотя можно накостылить чтобы делало, но... это будет очень сильный костыль, и похоже что всё равно никто DISABLESUBEX не использует)



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

Изменено: naryl
22.Мар.20 12:56:09
Garrett Fletcher
useravatar
Offline
4 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Компилятор QSP в Javascript и плеер

И ответы на вопросы заданные в ВК (где меня нет и не будет):

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

Сохранение сделано в файлы, в точности как в SugarCube (формат квестов для Twine). В демке есть.

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

Данные (в т.ч. графику) можно делать частью html, но тогда много трафика будет тратиться при первом открытии. Если игра имеет слишком много графики - можно просто скачать исходник (.qsp) и играть на любом стандартном интерпретаторе (более стандартном чем AeroQSP или Quest Navigator. Т.е. qspgui или Qqsp).

вопрос, как это храниться всё будет, и можно ли будет экспортировать во внешний файл

Ну, демку можно просто сохранить Ctrl+S и потом открыть без сети. Соответственно, на усмотрение автора можно либо всё хранить в одном файле (как в демке), либо использовать ссылки в сеть на картинки, звуки, js-библиотеки и т.д.

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

Garrett Fletcher
useravatar
Offline
4 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Компилятор QSP в Javascript и плеер

Ещё вопрос был

Будет ли поддержка wait, input и msg, так как в Навигаторе её нет

INPUT будет, MSG есть.

WAIT - большой костыль. Сейчас сделал busy-wait (будет тормозить всю вкладку, а то и браузер). Нормально можно сделать только нестандартную форму c отложенным блоком. Он выполнит второй аргумент после задержки, но сам скрипт в котором используется WAIT продолжится сразу, без задержки. Т.е.

Код:

WAIT 1000, {*PL 'Прошла секунда...'}

*PL 'После WAIT'

Выведет "После WAIT", подождёт секунду, потом выведет "Прошла секунда...".
И существующие интерпретаторы такую форму WAIT не поймут.

Garrett Fletcher
useravatar
Offline
4 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Компилятор QSP в Javascript и плеер

можно ли sql базу подключить

Можно использовать произвольный javascript код как и в Qqsp и в Навигаторе. Соответственно с sql базой на сервере можно говорить ajax-ом. И вроде бы это должно работать и с Qqsp и с Навигатором.

Garrett Fletcher
useravatar
Offline
4 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
981
Всего опросов:
14
Всего сообщений:
16790696
Сообщений на этой неделе:
3
Пользователи форума:
 
Всего пользователей:
2419
Последним зарегистрировался:
silviel