Нововведения в QSP 5.8.0

Что нового?

Пока готовится выход нового плеера версии 5.8.0 (или выше), мы решили рассказать о грядущих нововведениях. Всё (или почти всё), что будет представлено в этой статье, вы уже можете пощупать в плеере “qSpider” от Werewolf`а.
Читать дальше

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.

QSP-Builder для Sublime Text

Всем привет.

В общем, тут как-то звёзды сошлись.

Вопросы Викара и попытка редизайнить свой сайт заставили ознакомиться с git и github; перелопачивание старого QSP-кода заставило пожалеть об отсутствии системы контроля версий в Qgen; а Pseudopod показал, что оказывается можно разрабатывать игры на QSP и не в QGen. Ещё до кучи я возобновил своё знакомство с Python, ну а поскольку моим любимым текстовым редактором уже многие годы остаётся Sublime Text, всё это вылилось в попытку написать скрипт вроде того, что предлагал evp когда-то (http://qsp.su/index.php?option=com_agora&task=topic&id=941&Itemid=57).
И к моему удивлению заработал сначала скрипт, а потом мне даже удалось превратить это в почти самостоятельную Build System (ну, конечно, многое придётся прописать руками).
Получился QSP-Builder for Sublime Text и умеет он: собирать из разрозненных файлов в формате TXT2GAM файлы ".qsp" и запускать их в плеере. Таким образом осуществляется как бы прямой запуск игры (на основе только что написанных файлов) из Sublime Text. Для конвертирования правда требуется заранее установить утилиту TXT2GAM, ну и само собой плеер так же должен быть установлен заранее. В общем, кому интересно, прошу ознакомиться. Надеюсь в будущем это снимет неудобства совместной разработки игр на QSP.

https://github.com/AleksVersus/JAD_for_QSP
Читать дальше

qSpider 0.9.1

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

В этой версии добавлена возможность загружать игры из zip архива — как через конфиг, так и кнопка для загрузки игры с жесткого диска.

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

В планах на следующую версию — добавить поддержку AeroQSP игр.

qSpider 0.9.0

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

В этой версии появилась возможнось определить список игр в конфиге плеера. Если было определено несколько игр — на старте плеера будет предложена возможность выбрать игру из списка. И в плеере добавится дополнительная кнопка, чтобы диалог выбора игры можно было вызвать позже. Если игра была определена всего одна — она автоматически запуститься.
Также добавлена возможность загружать игры по внешней ссылке (раньше плеер работал только с одной папкой). Здесь необходимо помнить о ряде ограничений связанных с ограничениями браузера:
  • с https страницы нельзя загрузить http ссылку
  • у сервера, где находится игра, должны быть настроены CORS заголовки
В связи с этим поменялся немного формат конфиг файла

[[game]]
id = "7466df3b-4236-4668-b0df-2a70477da67b"
title = "Сказочка на ночь"
description = """Ночью в полнолуние закрывай засов.
Не ходи к колодцу, коль услышал зов.
Чей бы голос ни был - дева ли, старик
Не ходи к колодцу, коль услышал крик ... (с)"""
file = "skazka/skazka.qsp"
  • перед описанием новой игры необходимо добавлять заголовок [[game]]
  • добавлено необязательное поле description — оно используется в списке игр
  • поле folder удалено, а в поле file путь нужно прописывать путь относительно папки конфига, или же он должен содержать внешнюю ссылку (например file = «qspfoundation.github.io/qspider/game/skazka/skazka.qsp»)
  • для определения горяцих клавиш игры необходимо использовать заголовок [game.hotkeys] (раньше он был [hotkeys])

qSpider HotKeys

Вчера вышла новая версия плеера qSpider — 0.8.1.
В ней, помимо небольшого баг фикса и добавления горячих клавиш в сам плеер, появилась возможность автору игры добавлять собственные сочетания горячих клавиш.

Архив с примером

Для добавления сочетания клавиш в игру необходимо прописать дополнительную секцию [hotkeys] в конфиге, где ключем будет сочетание клавиш, а значением — название локации в игре, которая будет вызвана при нажатии.

Поддерживаемые клавиши:


Модификаторы

  • shift
  • ctrl
  • alt
  • meta — для поддержки на macOs лучше использовать этот модификатор вместо ctrl

Специальные клавиши

  • backspace
  • tab
  • enter
  • capslock
  • esc
  • space
  • pageup
  • pagedown
  • end
  • home
  • left
  • up
  • right
  • down
  • ins
  • del
  • plus
  • f1-f19

Остальные клавиши можно определять просто по имени a, $, *, или =

Определять можно:

  • нажатие единичной клавиши — например i
  • одновременное нажатие — перечисляем клавиши через +, например alt+s
  • последовательное нажатие — перечисляем через пробел, например "g o enter"

qSpider - плеер для запуска QSP игр в браузере



Этот проект начался просто как проверка возможности запуска C кода в броузере с помощью WebAssembly.
Потом было понимание, что в связи со «смертью» Flash, скоро перестанет работать AeroQSP плеер, и было бы неплохо сделать возможность запуска игр сделаных под AeroQSP.
И вот пришло время его альфа-релиза.

Страница с релизами

https://github.com/qspfoundation/qspider/releases
Новые релизы будут появлятся на ней по мере выхода.

Демо игра

Сказочка на ночь

Поддерживаются только новые версии браузеров (поддержки Internet Explorer нет и не будет).

В плеере используется самая последня версия qsplib библиотеки, которую сейчас активно разрабатывает Байт.

Ее основные отличия от 5.7.0
  • операторы работы с модулями переименваны -ADDQST в INCLIB и KILLQST в FREELIB
  • в ряде функций (напрмер ARRPOS и ARRCOMP) необязательный параметр перенесен с первого места на третье
  • добавлены локальные переменные
  • добавлены циклы
  • изменена логика работы массивов — если раньше в одном элементе массива могли одновременно находиться и числовое, и строковое значение, то сейчас будет храниться всего лишь одно с признаком типа.

Отличия qSpider от Классического плеера:

  • пути к ресурсам (картинкам/аудио файлам) регистрозависимы — то есть если файл называется 'image.jpg' а в файле игры записано 'Image.jpg' или 'image.JPG' то плеер не сможет показать такую картинку
  • для проигрования аудио используются встроенные средства браузера, поэтому рекомендованый формат для плеера — mp3 как самый поддерживаемый (хорошая альтернатива — webm, у него меньше размер при том же качестве, но чуть хуже с поддержкой браузеров)
  • есть возможность пропуска wait (кликом по странице)
  • сохранения хранятся в браузере

Внешний вид пока не финализирован — критика и предложения по улучшению очень приветствуются.


Планы на ближайшее будущее:

  • загрузка игры из архива и по внешней ссылке
  • экспорт/импорт сохранений — для переносов между браузерами
  • возможность запуска Aero игр

Запуск плеера на компьютере
Из-за ограничений безопасности плеер нельзя запустить просто открыв index.html файл в браузере.
Поэтому для запуска необходим локально запущенный сервер — можно использовать один из списка или же расширение хрома Web Server for Chrome.

В дальнейших инструкциях я буду использовать расширение:

  • устанавливаем Web Server for Chrome
  • скачиваем и распаковываем qspider-player.zip с страницы релизов
  • открываем в хроме chrome://apps/ и выбираем в списке Web Server
  • в открывшемся попапе выбираем папку, в которую распаковали плеер и запускаем сревер
  • там же в попапе будет ссылка
По умолчанию вместе с плеером упакована игра «Сказочка на ночь».

Для запуска другой игры:
  • копируем игру в подпапку `game`
  • редактируем в той же папке файл `game.cfg`
    • id — уникальный идентификатор игры (используется для сохранений)
    • title — название игры (будет показано в заголовке плеера)
    • folder — путь к папке с игрой относительно папки game
    • file — название файла с игрой