Движки, платформы, конструкторы…
  • Дата создания
    25 февраля 2015
  • Топиков
    27
  • Ограничение на постинг
    0.000

qSpider 1.1.0

Вышла новая версия qSpider — 1.1.0.

Новые фичи:
— standalone сборка игры (плеер без полки игр и загрузкой игры из конфига)
— в online версию добавлена возможность использовать ссылку на игру из каталога
— улучшено отображение горячих клавиш в меню паузы (вместо meta теперь отображается название клавиши в зависимости от платформы (Ctrl на Window и ⌘ на Mac)

Список исправлений:
— исправлена работа savegame/opengame команд и их работа при nosave=1
— исправлен запуск aero игр в десктоп версии
— исправлена работа тега center в названии действий, предметов и пунктов меню
— исправлена поддержка загрузки лейаута из qspgui.cfg
— исправлено закрытие view панели
— исправлена поддержка кирилицы в названии файлов внутри zip архивов созданных в Windows
— исправлено падение плеера если горячая клавиша была нажата при открытом msg/input
— исправлено сохранение по имени (savegame '1') в десктоп версии
— исправлена поддержка gt без пробелов вокруг (&‌gt'loc') внутри ссылок

Ссылки на игры из каталога в online версии
Теперь к ссылке на онлайн версию можно добавить параметр catalogId.
Например https://qspfoundation.github.io/qspider/?catalogId=125 — игра сказочка на ночь
Если игры еще нет на полке — она будет автоматически добавлена.
Когда игра на полке — она будет запущена.
Соотвествующий id можно взять из ссылки на qsp каталог — qsp.org/index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id=126&Itemid=55
необходимо взять значение параметра sobi2Id (126 в примере)

Standalone версия плеера

Для тех кто хочет опубликовать свою игру онлайн без полки игр или же собрать desktop версию своей игры была добавлена standalone версия плеера (без полки игр и загрузкой игры из файла конфига).

Особенности standalone сборки:
  • если в файле конфига описано несколько игр — будет запущена первая из списка
  • не поддерживаются архивы игр — их надо распаковать

В релиз теперь включается архив с standalone версией — qspider-player-standalone.zip
Игру вместе с файлом конфига game.cfg необходимо поместить в папку game.
После этого игру вместе с плеером можно публиковать online.

Для создания desktop версии игры подготовлен шаблон репозитория с необходимыми скриптами для сборки. Будет необходим аккаунт на github.com и минимальные навыки работы с git.

Создание репозитория
  • заходим в репозиторий https://github.com/QSPFoundation/qspider-standalone-game-template
  • в правом верхнем углу нажимаем Use this template и Create a new repository
  • обязательно отмечаем Include all branches
  • вводим название репозитория, выбираем public (необходимо для использования Github Pages для онлайн версии и файла автоапдейтов)
  • создаем репозиторий

Добавление файлов игры и минимальные настройки для online публикации
  • клонируем репозиторий
  • копируем файлы игры в папку репозитория (в дальнейшем лучше разработку вести в ней)
  • если у игры не было game.cfg файла — заполняем пустой файл из репозитория, указывая id, название и путь к qsp(или qsps) файлу игры
  • коммитим файлы и пушим

Публикация только онлайн версии
  • заходим на вкладку Actions в репозитории
  • в левой панели выбираем Update github pages (game only)
  • в правом верхнем углу таблицы нажимаем Run workflow и нажимаем кнопку Run workflow в появившейся панели
  • выбираем All workflows в левой панели
  • Ждем пока Update github pages (game only) и pages build and deployment (появится после завершения (Update github pages (game only))) завершатся

Ссылку на игру можно найти в вкладке Settings -> Pages.

Настройка desktop сборки

Генерация ключей для подписи автоапдейтов игры
Для этого шага необходимо установить NodeJS
  • открываем консоль (в windows это можно сделать нажав win + R и набрав cmd)
  • запускаем команду
    npx @tauri-apps/cli signer generate
  • вводим пароль для нашего ключа
  • копируем публичный ключ из вывода в консоли (строка случайных символов после слов Your public key was generated successfully:)
  • открываем файл game.build.conf.json в папке репозитория и вставляем ключ в поле pubkey
  • копируем приватный ключ из вывода в консоли (строка случайных символов после слов Your secret key was generated successfully — Keep it secret!)
  • открываем вкладку Settings репозитория
  • в левой панели выбираем Secrets and Variables — Actions
  • в секции Repository secrets добавляем 2 записи:
    1. TAURI_PRIVATE_KEY, в значение вставляем скопированный приватный ключ
    2. TAURI_KEY_PASSWORD, в значение вводим пароль использованный при генерации ключей

Заполнение данных для десктоп сборки
  • меняем иконку игры game-icon.png — размер 1024х1024 пикселей png с прозрачностью
  • открываем файл game.build.conf.json в папке репозитория
  • вводим название игры в поле package.productName
  • изменяем версию в package.version если необходимо
  • изменяем идентификатор сборки в поле tauri.bundle.identifier — только английские буквы разделенные точкой
  • заполняем поля tauri.bundle.publisher, tauri.bundle.copyright, tauri.bundle.shortDescription и tauri.bundle.longDescription
  • в поле tauri.updater.endpoints добавляем ссылку на github pages репозитория с /updater.json в конце
  • настраиваем окно игры в секции tauri.window
  • коммитим и пушим изменения

Создание релиза игры
  • открываем вкладку Actions в репозитории
  • в левой панели выбираем Game release
  • в правом верхнем углу таблицы нажимаем Run workflow и нажимаем кнопку Run workflow в появившейся панели
  • выбираем All workflows в левой панели
  • ждем пока Game release успешно завершиться (может занять минут 10)
  • в левой панели выбираем Update github pages (game and updater)
  • в правом верхнем углу таблицы нажимаем Run workflow и нажимаем кнопку Run workflow в появившейся панели
  • Ждем пока Update github pages (game and updater) и pages build and deployment (появится после завершения (Update github pages (game and updater))) завершатся

Ссылка на последний релиз будет доступна в правом сайдбаре на вкладке Code.

Для созданий новых релизов вместе с изменением файлов игры необходимо изменить версию в файле game.build.conf.json.

qSpider 1.0.1

Вышла новая версия qSpider — 1.0.1

Список исправлений:
  • исправлен доступ к QSP каталогу из России (теперь vpn не требуется)
  • в аеро теме исправлены 2 неправильно использованые переменные оформления
  • аттрибут qsp-action для вызова команд плеера переименован в qsp-command
  • в qspider библиотеку добавлена функция qspider_event
  • исправлен ряд опечаток в переводах
  • в меня паузы исправлен размер кнопок (в русской локали обрезался текст)
  • исправлен запуск игр из консоли в десктоп версии
  • исправлен баг когда несколько вызовов msg или input подряд приводили к зависанию плеера
  • исправлен запуск архивов с играми с старым расширением gam
  • в Firefox исправлена проблема с дропдаунами где после выбора опции продолжал выбиратся текст
  • при перезапуске или выходе из игры меню паузы теперь сбрасывается на экран описания игры
  • иконка заданная в файле конфига будет отображаться на полке игр
  • в аеро режиме исправлено определение размеров картинок задающих размеры msg или input

qSpider 1.0.0

Вышло большое обновление qSpider — 1.0.0.

Список основных изменений:

— добавлена полка игр
— доступ к каталогу QSP игр прямо из плеера (к сожалению оказалось что РКН блокирует cloudflare домен и поэтому в России каталог сейчас доступен только через VPN, я занимаюсь этой проблемой)
— локализация плеера (английский, русский и украинский язык)
— темная и светлая тема для полки игр
— убран верхний тулбар (доступ к загрузке/сохранению и настройкам через меню паузы открывающееся по нажатию Esc)
— поддержка архивов с игрой не на самом верхнем уровне а в папке
— поддержка rar архивов
— поддержка коллекций игр в архивах (для этого в корне архива должен лежать game.cfg с списком игр)
— количество слотов сохранения теперь можно настроить в конфиге (save_slots аттрибут)
— плеер был переделан для поддержки тем (класический и аеро плееры это теперь тоже темы, и есть возможность создавать полностью свои темы)
— возможность связать элементы HTML форм с qsp переменными
— добавлен ряд кастомных HTML тегов для более простого обновления данных (без полного обновления описания например)
— добавлена возможность вызова qsp кода по определенным событиям (клик, двойной клик, клик правой кнопкой, наведения курсора)
— возможность вызова команд плеера по клику

Привязка элементов HTML форм к qsp переменными
Элементы HTML форм (input, select, textarea) теперь можно связать с qsp переменной c помощью специального аттрибута qsp-bind. Связь двунаправлена — изменение переменной обновит элемент и изменения элемента (ввод текста или выбор опции) записываются в переменную.
<input type="text" qsp-bind="$username">
<input type="password" qsp-bind="$form_password">
<input type="color" value="#e66465" qsp-bind="$color">
<input type="checkbox" value="1" qsp-bind="enable">
<select qsp-bind="$car">
   <option value="mercedes">Mercedes</option>
   <option value="audi">Audi</option>
</select>

Вызов QSP кода по событию
Добавлена возможность вызвать qsp код по определенным событиям с помощью аттрибутов начинающихся с qsp-on:
Подерживаются
  • qsp-on:click — одинарный клик
  • qsp-on:dblclick — двойной клик
  • qsp-on:contextmenu — клик правой кнопкой
  • qsp-on:mouseenter — наведение курсора
  • qsp-on:mouseleave — выход курсора за пределы элемента

<div qsp-on:click="exec: msg 'click'" qsp-on:dblclick="exec: msg 'dblclick'">Click me</div>
<div qsp-on:contextmenu="exec: menu '$context_menu'">Right Click me</div>
<div qsp-on:mouseenter="exec: pl 'enter'" qsp-on:mouseleave="exec: pl 'leave'">Hover me</div>

Вызов команд плеера
Добавлена возможность вызова команд плеера по клику на HTML элемент с помощью аттрибута qsp-action
<button qsp-action="resume">Resume</button>
Поддерживаемые команды
  • quit — выход из игры на полку игр
  • restart — перезапуск игры
  • resume — продолжить игру (закрытие меню паузы)
  • mute — выключить звук
  • unmute — включить звук
  • quicksave — быстрое сохранение
  • quickload — быстрая загрузка
  • pause:saves — открыть меню сохранения
  • pause:preferences — открыть настройки
  • scroll:main:bottom и scroll:main:top — прокрутка окна основного описания
  • scroll:stats:bottom и scroll:stats:top — прокуртка окна доп описания
Эти команды также можно вызвать из кода подключив библиотеку qspider
inclib 'qspider'
@qspider_quit()
@qspider_restart()
@qspider_open_pause_screen('saves')
@qspider_scroll('main', 'top')

Новые HTML теги
  • qsp-variable — вывод значения qsp переменной (обновлятся автоматически), есть доступ по индексу или строковому ключу
    <qsp-variable name="money"></qsp-variable>
    <qsp-variable name="counts" index="5"></qsp-variable>
    <qsp-variable name="$items" key="knife"></qsp-variable>
    
  • qsp-show — возможность скрыть/показать тег по определенному условию
    <qsp-show when="should_show=1">Этот текст будет виден только когда значение should_show перменной будет равно 1</qsp-show>
  • qsp-style — динамический css из qsp переменной (аналогично $STYLESHEET переменной в аеро но не ограничено только этой переменной)
    <qsp-style from="$STYLESHEET"></qsp-style>
    <qsp-style from="$styles"></qsp-style>

Регионы
qsp-region тег дает возможность обновлять только часть экрана, его можно использовать как на уровне файла теми так и в основном или дополнительном описании.
<qsp-region name="region1"></qsp-region>
Для обновления региона из кода необходимо подключить qspider библиотеку
inclib 'qspider'
Библиотека встроена в плеер и предоставляет следующие методы работы с регионами
  • qspider_update_region — полностью перезаписывает содержимое региона
  • qspider_prepend_region — добаление в начало рагиона
  • qspider_append_region — добавление в конец региона
  • qspider_scroll_region — скрол содержимого региона (как в начало так и в конец)
  • qspider_clear_region — очистка сожержимого региона


@qspider_update_region('region1', '<b>Текст</b>')
@qspider_prepend_region('region1', 'Текст<br/>')
@qspider_append_region('region1', '<br/>Текст')
@qspider_scroll_region('region1', 'top')
@qspider_scroll_region('region1', 'bottom')
@qspider_clear_region('region1')

Слои
qsp-layer тег дает возможность быстро показывать или скрывать большой кусок отображения
Слои рисуются один поверх другого позволяя делать наложения интерфейса или например модальные элемент. Порядок слоев определяется через аттрибут index. По умолчанию все слои скрыты.
<qsp-layer name="layer1" index="10">Some UI</qsp-layer>
Для управления слоями необходимо подключить qspider библиотеку
inclib 'qspider'
Библиотека встроена в плеер и предоставляет следующие методы работы с регионами
  • qspider_show_layer — включает отображение слоя
  • qspider_show_only_layer — включает отображение слоя пряча все остальные слои
  • qspider_hide_layer — прячет слой

@qspider_show_layer('layer1')
@qspider_show_only_layer('layer1')
@qspider_hide_layer('layer1')

Кастомные темы
Плеер был переработан для поддержки кастомных тем (классический и аеро варианты теперь тоже отдельные темы). Тема представляет собой HTML код, где для каждого элемента плеера используется свой HTML тег.
Примеры встроенных тем — классическая и аеро.
В игре можно подключать дополнительные теми и определять дефолтную через файл конфига
[[game]]
id = "test-asset-qspider"
title = "Test qspider functionality"
file="qspider.qsps"
themes = ["custom-theme.html"]
defaultTheme = "custom-theme"
Тему можно переключать подключив qspider библиотеку
inclib 'qspider'
@qspider_change_theme('custom-theme')
Более подробное описание тем будет позже.

Полуночная месса

«Midnight Mass — это короткое текстовое приключение, которое даст волю вашему творческому мышлению!


Оснащенные инструментами, позволяющими создавать разветвления, необязательные диалоги и создавать запланированные события всего в несколько кликов, мы призываем вас проявлять творческий подход и создавать истории, которые ВЫ хотите рассказать!


Мы надеемся, что в сочетании с примером начальной истории в качестве основной игры вы получите немного жуткого повествования, и вам понравится наш небольшой проект, и вы получите удовольствие, создавая свои собственные приключения!»


В комплект входят демонстрационная игра, визуальный редактор и плеер приключений.
Инструмент написан на движке Godot
https://godotengine.org/

Ссылка:
https://wumpusgimlet.itch.io/midnight-mass

qSpider 0.13.0

Вышла новая версия плеера qSpider — 0.13.0

Новые фичи:
  • msg и input больше не закрываются по клику вне модалки, улучшена поддержка клавиатуры — закрытие по Esc, кнопка в msg теперь фокусируется при открытию (соответственно нажатие пробела или Enter аналогично клику на кнопку)
  • в браузерную версию добавлена возможность открытия файла с списком игр или отдельной игры через URL — например https://qspfoundation.github.io/qspider/?config=https://qspfoundation.github.io/qspider/game/game.cfg загрузит файл конфига, а https://qspfoundation.github.io/qspider/?game=https://qspfoundation.github.io/qspider/game/skazka/skazka.qsp — то есть теперь можно просто выложить файл игры на какой-то сервер и запускать через qspfoundation.github.io/qspider, здесь пока есть ограничение — на сервере должна быть включена поддержка CORS (я занимаюсь возможностью обойти это ограничение)
  • добавлена поддержка запуска игры в текстовом формате qsp — для этого файл должен быть с расширением `.qsps`, поддерживаются кодировки utf-8 и utf-16le (qgen экспортирует в этой кодировке), но я рекомендую utf-8 поскольку файл будет значительно меньше по сравнению с utf-16le
  • для запуска плеера из qgen больше не нужен дополнительный bat файл
  • в десктоп плеере теперь доступна панель разработчика как в обычном браузере

Исправлены следующие баги:
  • сепаратор в меню выводился отдельным пунктом меню
  • исправлена поддержка 4-го недокументированного параметра в rgb функции отвечающего за альфа канал (прозрачность)
  • исправлен первый запуск (иногда при запуске из qgen не открывалась игра)
  • исправлена поддержка html — теперь все аттрибуты тегов должны сохраняться (раньше большая часть терялась при отрисовке)
  • исправлено отображение названия игры в toolbar — раньше длинное название ломало отображение
  • исправлен креш плеера при использование ряда тегов

В процессе работы часть кода была вынесена в отдельные npm пакеты, доступные без плеера
@qsp/converters — в пакете содержатся функции для конвертации из текстового формата qsp в бинарный и обратно
@qsp/cli — консольная утилита для конвертации аналогичная txt2gam (требует наличия усnановленой NodeJS, но может запускаться на linux и mac)
@qsp/wasm-engine — ядро QSP собранное в WebAssembly и JavaScript обвязка для запуска игр, пакет специально собран таким образом что его можно запускать как в браузере так на NodeJS сервере

Parchmap

Parchmap — веб-интерпретатор Z-машины, похожий на parchment, но с дополнительным функционалом.

Ключевые особенности:

  • автоматическое составление карты
  • возможность оставлять заметки в комнатах
  • быстрое перемещение между локациями
  • автоматическое завершение ввода (подсказки)
  • навигация по стрелкам курсора (с shift-ом)



На данный момент поддерживаются только z-игры. В некоторых из них автонавигация и картографирование могут не работать.

Страница с обсуждением на intfiction.org

qSpider 0.12.0

Вышла новая версия плеера qSpider — 0.12.0

В этой версии добавлена desktop версия плеера для 3 основных платформ
Windows
MacOs
— Linux — deb пакет и AppImage формат

Основные изменения в desktop версии:
— возможность открыть qsp игру из папки (в отличии от web версии, где можно открыть только архив)
— открытие игры через drag-n-drop файла игры на окно плеера
— открытие игры через консоль (с помошью параметра --file)
— загрузка файла конфига из папки с игрой
— дополнительная секция в файле конфига для настройки окна desktop плеера
— автоматической обновление desktop плеера при выходе новой версии

Исправлены следующие баги:
— не поддерживался html в диалоге input
— в aero режиме убран лишний отступ при HIDE_SCROLL_ARROWS=1
— исправлен тег center для большего соответвия classic плееру

Настройка окна desktop плеера
В конфиг файле добавлена новая секция
[game.window]
width = 1280
height = 960
resizable = true
minWidth = 1024
minHeight = 768
width и height задают размер окна при старте игры, minWidth и minHeight дают возможность задать минимально возможные размеры при resize окна, а resizable параметр позмоляет запретить изменения размера в принципе (автоматически включается в aero редиме)

Запуск плеера из qgen
Из-за бага в используемой библиотеке сделать плеер напрямую совместимым с qgen не получилось, надеюсь в ближайшее время баг будет исправлен и тогда плеер можно будет просто выбрать в настройках qgen.
Пока же для запуска можно использовать простенький bat файл
SET QSPIDER=C:\Program Files\qSpider\qSpider.exe
SET DESTPATH=%~f1
start "" "%QSPIDER%" "--file=%DESTPATH%"
Меняем путь установки если он отличается от стандартного, сохраняем в виде .bat файла и потом выбираем этот файл в настройках qgen.

qSpider 0.11.1

Вышла новая версия плеера qSpider — 0.11.1

Исправлены следующие баги:
  • добавлены data-qsp аттрибуты, упущенные в прошлой версии
  • исправлен баг с неправильными путями к ресурсам после загрзуки qsp модуля из папки
  • исправлена минимальная высота контента у панелей (основное и дополнительное описание) — раньше высота зависела только от контента и абсолютно спозиционированные элементы могли распологаться некоректно, теперь внутренний блок панели занимает как минимум всю высоту панели
  • исправлена поддержка svg тегов

qSpider 0.11.0

Вышла новая версия плеера qSpider — 0.11.0
Демо — https://qspfoundation.github.io/qspider/

Новые фичи:
  • подержка игр в AeroQSP формате
  • поддержка style аттрибута в тегах
  • к основным элементам интерфейса добавлен data-qsp аттрибут (data-qsp=«main», data-qsp=«actions» и тд)
Исправлены следующие баги:
  • кнопки сохранения/загрузки теперь будут спрятаны, если в игре установлен nosave=1
  • исправлен align аттрибут в таблицах
  • исправлен вызов onactsel (в прошлых версиях поведение отличалось от классического плеера)
Поддержка игр в AeroQSP формате
Собственно этот функционал так и затянул выход новой версии. Я старался добиться, чтобы как можно больше AeroQSP игр можно было запускать без дополнительных изменений самой игры. Оказалось что HTML движок в флеш версии AeroQSP достаточно специфичен и не всегда совпадает с тем как работает браузер.

Вот список особенностей и отличий:
  • несколько игр использовали синтаксис, который поменялся в 5.8.0 (порядок аргументов в INSTR, ARRCOMP, ARRPOS) и в qSpider будут выдавать ошибку о несовпадении типов данных
  • в AeroQSP шрифты подключались в формате swf, использовать такой формат больше нет возможности, поэтому если игра использует нестандартные шрифты — их необходимо будет подключать через файл конфига в секции game.resources
  • в qSpider не поддерживаются эффекты pixels, h_blinds и v_blinds, остальные эффекты могут немного отличаться от того как работала флеш версия
  • не поддерживается переменная SCROLL_SPEED (хотя я вроде и не видел чтобы она использовалась хоть в одной игре)
  • обработка клика в флеше отличается от браузера — если на блоке нет обработчика то он не перехватывает клик даже если размещен поверх другого, в ряде игр это привело к тому что неспрятанные панельки (пустые и не видимые) в qSpider блокируют клики по линкам под ними. Пример — игра Новогодние сказки где кнопка Играть почти полностью перекрыта пустой на этот момент панелькой действий. Лечится небольшими изменениями игры — отключением неиспользуемых панелей.
  • в флеше тег center внутри таблиц растягивает таблицу на всю ширину, при этом еще размеры ячеек без явно указанной ширины в этом случае считаються не как в браузере, чаще всего заметно в действиях — для форматирования по умолчанию используется таблица, и если в названии действия использовать тег center, то в флеш версии текст будет по середине панели, а в qSpider — нет. Лечиться добавлением width=100% в такую таблицу. Я не смог сделать это на уровне плеера поскольку в ряде игр это ломало отображение.

Пример подключения
Для подключения AeroQSP игры через конфиг необходимо в основной секции добавить mode = «aero», и если используеться размер игры отличающийся от дефолтного 800х600 — добавить секцию с размерами

[[game]]
id = "c2cb4b5b-6a1c-482e-bb47-9ef207fb0dcd"
title = "Чашка кофе"
mode = "aero"
file = "aero_coffee.aqsp"

[game.aero]
width = 504
height = 680
При этом можно использовать как aqsp архив, так и распаковать его и прописать ссылку на qsp файл в папке.

ВАЖНОЕ ЗАМЕЧАНИЕ:
Я не собираюсь развивать и поддерживать (кроме багфиксов) формат AeroQSP, поэтому не советую начинать новые игры с его использованием. В планах добавить в qspider возможность упавления темой игры, но пока конкретной даты нет.

qSpider 0.10.0

Вышла новая версия плеера qSpider — 0.10.0

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

Исправлены следующие баги:
— неправильно создавался файл сохранений размером > 64кб (любая более-менее крупная игра), загрузка такого сохранения в дальнейшем выдывала ошибку
— ошибка в qsp коде не отображалась, если перед ней был использовался оператор взаимодействующий с вводом-выводом (`msg`,`input`, `inclib`)
— если аудио файл уже проигрывался, при вызове `play` он запускался снова
— отсутствовал hover на элементах списка игр и слотах сохранений

Новые фичи:
— поддержка тега `video`
— подключение к игре дополнительных ресурсов — шрифты, css и js

Подключение к игре дополнительных ресурсов
в файле конфигурации добавилась новая секция с описанием дополнительных ресурсов
[game.resources]
styles = [
  "https://fonts.googleapis.com/css?family=Sofia",
  "styles.css"
]
scripts = [
  "script.js"
]
fonts = [
  ["Shelter", "fonts/shelter.woff2"]
]
icon = "icon.png"
В `styles` подключаем дополнительные css файлы — это могут быть как внешние ссылки, так и файлы из папки с игрой.

В `scripts` подключаем JavaScript файлы. Поскольку нет возможности автоматически удалить JS код из памяти (при переключении на другую игру например) — это надо делать вручную. Дальше будет пример файла. Добавлена возможность создавать специальное событие на объекте `window` из кода игры с помощью `exec`.
exec('qspider.event: test_event')
exec('qspider.event: event_with_args[1, "test"]')
Возможности вызвать код игры из JS пока нет — это в планах.
// записываем весь наш код в специальную переменную, чтобы потом можно было удалить
window.custom_game_script = {
  // обработчик игровых событий
  on_event(e) {
    // в e.detail.name будет имя события (test_event или event_with_args из примере выше)
    // в e.detail.args будeт массив дополнительных аргументов (в event_with_args это [1, "test"])
  },
  // обработчик выгрузки игры
  unload() {
    // отписываемся от событий
    window.removeEventListener('game-unload', window.custom_game_script.unload);
    window.removeEventListener("qspider-event", window.custom_game_script.on_event);
    // удаляем переменную
    delete window.custom_game_script;
  },
};
// добавляем слушатель на специальное событие, вызываемое при выгрузке игры
window.addEventListener('game-unload', window.custom_game_script.unload);
// добавляем слушатель на событие, вызываемое из игры через exec
window.addEventListener("qspider-event", window.custom_game_script.on_event);
В `fonts` подключаем дополнительные шрифты. Рекомендуемый формат — woff2, он поддерживается всеми современными браузерами. В сети полно онлайн конверторов из ttf в woff2.
Если у шрифта есть Bold, Italic и BoldItalic варианты в отдельных файлах, то подключение будет выглядеть вот так
fonts = [
  ["Shelter", "fonts/shelter.woff2"],
  ["Shelter", "fonts/shelter-bold.woff2", "bold"],
  ["Shelter", "fonts/shelter-italic.woff2", "normal", "italic"],
  ["Shelter", "fonts/shelter-bold-italic.woff2", "bold", "italic"]
]
`icon` дает возможность заменить иконку в табке браузера, т.н. favicon. По умолчанию там лого QSP.