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

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

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

Сорцы здесь: https://hg.sr.ht/~naryl/qsp-txt2web
Демка взята отсюда: 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 ничего не делает


Изменения стандартных операторов по просьбам трудящихся. Не используйте если хотите чтобы игра работала на существующих плеерах:

  1. IMG <пути к картинкам...> - выводит несколько картинок одна поверх другой. Используя картинки с прозрачностью  можно добиться эффекта наложения слоями. Есть варианты IMG и *IMG для вывода в дополнительное и основное окно соответственно.


"Новые" возможности которые на самом деле присутствуют и в интерпретаторах, но незадокументированы в вики.

  1. FOR <переменная> = <начальное значение> TO <конечное значение>: <блок кода> - цикл со счётчиком. Так же как и у других блоков есть и многострочный вариант, закрывающийся END.

  2. LOCAL <переменная> [= <начальное значение>] - объявляет локальную переменную, к которой есть доступ только из текущего блока кода.

Изменено: naryl
11.Июн.20 09:46:34
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 есть.

UPD: Теперь есть все.

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

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

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

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

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

Информация

Статистика форума:
 
Всего тем:
987
Всего опросов:
14
Всего сообщений:
16790754
Всего сообщений сегодня:
1
Пользователи форума:
 
Всего пользователей:
2450
Последним зарегистрировался:
yovavo7804