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 кода по определенным событиям (клик, двойной клик, клик правой кнопкой, наведения курсора)
— возможность вызова команд плеера по клику
Читать дальше

«Врата Штейна» и что такое цундэрэ

«Врата Штейна» это не совсем обычная визуальная новелла. Основная фишка игры — это нечёткая ветвистость: в любой удобный момент герой может вытащить из кармана мобильник, чтобы кому-то позвонить или написать сообщение. Здесь нет обычных пауз для выбора действий, и даже ключевые развилки можно проворонить, если всё время жать на кнопку «далее».

Сразу скажу, что, по-моему, игра не тянет на четвёртое место всех времён и народов (в рейтинге VNDB, между «Литературный клуб 'Тук-Тук'» (Doki Doki Literature Club) и «Девушки с ограниченными возможностями» (Katawa Shoujo)), но всё-таки это качественная работа, достаточно интересная для игры и разбора.

Первое прохождение «ВШ» от начала до одной из концовок у меня заняло двенадцать часов, сбор всех концовок – двадцать три часа. Аниме по игре я не смотрел, приквелы и сиквелы тоже.

После краткой вставки – история про молодых и шутливых друзей, которые пошли ломать систему и наломали дров. И теперь они спорят, насколько дрова — моэ.

Читать дальше

Открылось голосование на IFComp 2023

Вчера вечером были выложены игры международного конкурса IFComp 2023.

На конкурс было принято 75 игр на английском языке, из них всего 6 на Ink, 22 на Twine и 20 на Inform.

Одну из работ придётся запускать на ПЭВМ Commodore 64 или, если у вас нет под рукой подходящей машины, на её эмуляторе.

Игрокам, которые не пропустили конкурс «ЗОК-2023», возможно, будет уже знакома работа «Kaboom» (Twine, анонимный автор, иллюстрации Веры П.), переведённая и переработанная с игры «Бабах» (FireURQ, без иллюстраций).

В это время конкурс интерактивной литературы на русском языке всё ещё принимает заявки до 19 ноября.

Фестиваль ИЛ на украинском языке откроет подачу игр с этого четверга, джем игр на испанском — 31 октября, конкурс игр на французском закончится в начале следующего года. Авторов книг-игр на болгарском ждёт отдельный конкурс с предварительной записью до 15го числа.

Пакет QSP для Sublime Text

Когда-то я публиковал пост о начале работы над билдером QSP-игр для Sublime Text. С тех пор много печенья съедено, и много сухарей насушено.

Теперь Билдер не является основной частью проекта, а только лишь одной из составляющих полноценного пакета для Sublime Text. Теперь внутрь пакета упакованы и сам билдер и различные вспомогательные скрипты, подсветка синтаксиса и небольшая коллекция полезных сниппетов, и много чего ещё.

Установка пакета сократилась до нескольких простых действий:
  • Качаете последний релиз со страницы релизов.
  • Распаковываете скачанный архив.
  • Копируете файл
    QSP.sublime-package
    в папку Packages рядом с установленным Sublime Text (Например, в
    C:\Program Files\Sublime Text\Packages\
    ).
  • Подсветка синтаксиса, плагины и прочее заработают при следующем запуске Sublime Text.

Более подробная информация о том, как работать с пакетом и встроенным в него билдером, представлена на гитхабе.

Есть и инструкция для быстрого старта: github.com/AleksVersus/JAD_for_QSP/blob/master/siaiz.md

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

Три поросёнка и поход за стройматериалом

Сказки это замечательно. А для интерактивной литературы — настоящий клондайк и находка. Сюжет какой-нибудь «Курочки Рябы» прекрасно ложится на механику классической парсерной головоломки. Ведь чтобы разбить яйцо Деду придётся разыскать и собрать вместе Бабку, Внучку и Жучку у которых, похоже, какие-то тёрки друг с другом. По ходу действия, пенсионер узнает, что не всё так просто как говорят по телевизору; яйцо на самом деле заколдованное, а чтобы хакнуть чары нужно незаметно проникнуть в логово Бабы Яги. И никто кроме Мышки этого сделать почему-то не может…

Ладно, я тут немного увлёкся, но в общем, вы уловили мысль. К сожалению, немногие авторы берутся «интерактивить» этот жанр. Автор игры «Три поросёнка: Наф-Наф и Серый волк» [1] — из тех немногих, кто взялся и у кого это даже неплохо получилось.
Читать дальше

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 сервере

Bitsy. Пиксельный минимализм

Недавно на Хабре вышла статья, посвящённая Bitsy — редактору и движку игр с пиксельной графикой. Даже не просто статья, а целое пошаговое руководство по созданию игры.
Учитывая малое количество информации по данной платформе на русском языке, думаю будет полезно продублировать ее и на данном ресурсе.

Во что поиграть на русском:

Альтернатива классической модели мира в парсерах

Прочитал тут статью cheshire «Искры. Полвека парсера». Если не читали — рекомендую. Напишу свои мысли на этот счёт.

Первое, что мне пришло в голову после почтения статьи — мысль о «семантическом вебе» (который, кстати, в наше время далеко не все используют). В текстовых играх это мог бы быть какой-то «язык разметки игрового мира». Не обязательно в виде готовых библиотек, а как некая спецификация, описывающая классы объектов, их атрибуты, отношения. Реализация бы уже зависела от конкретного инструмента.

В любом случае, моделирование мира — это дополнительная работа, которая ложится на автора, и, если он по какой-то причине раньше не уделял этому достаточно времени, то почему он должен начать делать это сейчас? Инструменты помогают в разработке, но не делают за автора всю работу.

Технически, ничто не мешает написать текстовый (не ASCII) вариант условного Cataclysm, но сколько это займёт времени? Рогалики полируют и совершенствуют годами, если не десятилетиями, зачастую силами сообщества. ИЛ — про авторов-одиночек. Каждая игра, по-сути, начинается с чистого листа, как новый движок со своими правилами. И еще: рогалики — это больше песочница. ИЛ, даже, если она паззловая, в большинстве случаев сюжетноориентирована. Если ты хочешь дать игроку полную свободу может просто посоветовать ему какой-нибудь Dungeon AI? Кстати, можно пофантазировать, что в будущем появится гибрид традиционной ИЛ и нейросети, которая возьмёт на себя функции «дорисовки» игрового мира. Если же еще продолжить развивать эту мысль, то в перспективе можно вообще отказаться от объектной модели мира, просто описывая сюжет будущей игры. Автор возьмет на себя роль режиссёра, а движок — кинооператора.

Так или иначе, пока что остается писать свои «велосипеды» или пользоваться существующими библиотеками, моделирующими какие-то классы предметов, например, одежду. Однако авторы почему-то не стремятся массово использовать такие библиотеки. Вообще интересно, что существуют достаточно продвинутые системы написания игр на естественном языке типа Inform 7, но даже в них «из коробки» отсутствует пресловутая «реалистичная модель мира». Авторы, как и прежде, предпочитают использовать абстрактные классы типа «контейнера» или «сцены». А может большего и не нужно?