Закончить парсерную игру спустя сорок лет: история Ferret

фото экрана машины со списком файлов

Игра «Ferret» (англ. «хорёк», также «рыскать, искать спрятанное») была впервые опубликована в 1982 году. Первая версия была написана командой анонимных авторов и вышла на 16-битных мини-компьютерах Data General AOS. После продолжительного перерыва было решено портировать игру с AOS на более распространённую операционную систему DOS; первая версия порта вышла в 2009 году. После портирования авторы решили дописать концовку, и вот в этом году игра была полностью завершена.

(На иллюстрации: AOS MV3200 третьего поколения с 24Мб памяти, модель ок. 1985 года, фото foxdata.com)
Читать дальше

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, но даже в них «из коробки» отсутствует пресловутая «реалистичная модель мира». Авторы, как и прежде, предпочитают использовать абстрактные классы типа «контейнера» или «сцены». А может большего и не нужно?

Дрейфующий. Весенняя штучка


«мне крышка…»

— такой оптимистичной фразой на русском языке начинается игра Adrift <Lost in the (Ros)Cosmos>, написанная Pinkunz на Spring Thing 2022*. Игра про советского (российского?) космонавта, как следует из названия, дрейфующего себе в космосе. И только от игрока будет зависеть сколько ему еще предстоит в нем дрейфовать, ибо запас кислорода не бесконечен. Как тебе такое, Илон Маск?

Игра весьма напоминает Судный день или даже Луну-9 Петра Косых (quantumcat ). Олдовая графика смотрится органично, а крохотный силуэт Бурана на фоне звезд выглядит трогательно. Есть некоторые неточности в употреблении русских слов и фамилий, но возможно это klukva. По заявлению автора — это только первая часть, и, возможно, в продолжении мы узнаем о роли Роскосмоса в этой истории.


* Ежегодный фестиваль игр в жанре интерактивной литературы. Проводится весной.

Мысли по итогам ЗОК 2022

Продолжаю прошлогоднюю традицию публикации мыслей и заметок по итогам проведённого конкурса. Рекомендую сначала ознакомиться с предыдущей статьёй.
Формат остаётся такой же: лонгрид из относительно разрозненных заметок и размышлений, для удобства разбитый по темам.
Версия 2.0 (версия 1.0 была случайно удалена из-за закрытой вкладки браузера. Надо попинать Ореолека, чтобы сделал автосохранения для создаваемых топиков, либо окошко с подтверждением закрытия вкладки, как на ifwiki)
Читать дальше

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.