Перейти к основному содержимому

Новая версия qSpider — 0.10.0

Клуб любителей текстовых игр на QSP·1 июн 2021

Вышла новая версия плеера 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.

Автор оригинальной статьи Werewolf.

Статья доступна по ссылке: https://ifhub.club/2021/05/23/qspider-0100.html