Интерпретаторы Z-машины — на чём играть в Информ

Всем привет! Сегодня речь пойдёт про текущее состояние дел интерпретаторов (плееров), то есть про то, на чём можно играть в игры на Информе.

Строго говоря, интерпретаторы — они не для Информа, а для Z-машины, которую в 80-х придумала компания Infocom. Z-код — это набор байт-кодов для абстрактного компьютера и он (Z-код) был изначально задуман под текстовые игры: кроме работы с регистрами, памятью, простой арифметикой там есть команды для вывода и ввода текста, смены цвета и прочего. Всё это нужно было для гарантированной кроссплатформенности, необходимой для более широких продаж. Формату (файлу) игры не нужно меняться, достаточно было один раз написать программу-интерпретатор на каждую из существующих операционных систем. Это позволяло играть на популярных в то время Commodore 64, Амиге, Apple II и PC.

У Infocom был собственный язык ZIL (Zork Implementation Language) и компилятор для него, на выходе дающий файл Z-машины (например, .z5). Как ZIL, так и коды Z-машины были проприетарными, а в 1989 году, с закрытием Infocom, уж тем более стали никому не доступны (позднее документы всё-таки всплыли, и сейчас в открытом доступе есть компиляторы ZIL). Однако, интерес к текстовым играм не пропал, и группа энтузиастов самостоятельно начала разбираться с форматами. Результатом этого стал новый язык Inform, выпущенный Грэмом Нельсоном (Graham Nelson) в 1993 году. Тогда же вышла и первая игра на нём, Curses. Так как формат игры такой же, как раньше, то в неё можно играть на всё тех же интерпретаторах (или на новых).

Интерпретаторов для разных компьютеров и операционных систем существует немало, но нас больше всего интересует поддержка русского языка (а есть она не везде) и актуальность программы в целом.

Parchment

Как показывает статистика, нынче 95%+ игроков выбирает вариант «играть онлайн». Оно и понятно: скачивать ничего не нужно, игра открывается за пару секунд и работает в любом браузере. И на смартфонах тоже (и на кнопочных телефонах (и на телевизорах)). Parchment это на самом деле очень хороший вариант: он очень лёгкий по ресурсам и поддерживает все нужные фичи (в том числе цвета и юникод). Игры на нём работают практически все, за редкими исключениями. К сожалению, настроек (той же типографики) нет вообще (если не хостить игру у себя, о чём ниже).

Чтобы запустить произвольную игру в Parchment, нужно указать параметром для сайта iplayif.com путь к файлу игры, уже залитому на какой-нибудь сервер. Например, https://iplayif.com/?story=http://rinform.stormway.ru/games/photopia/PhotopiaR.z8

Очень просто и разместить игру на своём сайте, даже статическом, т.к. Parchment работает полностью на клиентском JavaScript. Достаточно скачать и разместить у себя на сервере вот эти файлы: index.html, lib/parchment.min.js, lib/parchment.min.css, lib/jquery.min.js и отредактировать index.html. В .css файле можно поменять шрифты, цвета и прочее, на что хватит вашей фантазии. Посмотрите примеры: Винтер, Delightful Wallpaper, Dreamhold. Есть также и способы сохранять логи игроков на стороне сервера: один из вариантов лежит на GitHub, но я его не тестировал.

Есть свои особенности, связанные с онлайном:

  • При сохранении игры (> сохранить), в адресной строке появится уникальный длинный URL, используя который, игру можно позже «загрузить». Для длинных игр это важно, так как если перезагрузится вкладка в браузере, то весь ваш прогресс потеряется.
  • Лог игры (весь текст вашего прохождения, > транскрипт вкл) не работает, и лучшее, что можно сделать — это выделить весь текст и скопировать (Ctrl+A, Ctrl+C).

Игра «Винтер» на Parchment

Lectrote

https://github.com/erkyrath/lectrote

Новый плеер от Эндрю Плоткина (Andrew Plotkin), понимающий игры и в некоторых других форматах. Я ставлю его в этом списке выше, чем Windows Frotz из-за кроссплатформенности: он работает на Windows, Linux и OS X. В основе Lectrote — браузер Chromium (Electron) и JS-реализации разных форматов (для Z-кода используется тот же самый Parchment). Безусловно, Electron — это тяжёлая обвязка, и есть много неудачных примеров приложений на нём (Slack и MS Teams на десктопе — одни из худших примеров того, насколько плохим может быть современный софт) однако в Lectrote на самом деле всё нормально, никаких тормозов вы не заметите. Потребление памяти высокое, но только если сравнивать, например, с Windows Frotz (100 против 10 Мбайт) — в 2018 году это мизерные значения.

Есть важный недостаток: не поддерживаются цвета, поэтому в «Фотопию» и «Синие cтулья» нужно играть на чём-то другом. На Windows XP плеер не работает (для кого-то это до сих пор важно). Но, например, есть автосохранения. Если открыть игру повторно, то она сразу продолжится с того же места. Также в Lectrote можно упаковать игру как в дистрибутив, с авторскими описаниями и настройками внешнего вида. Например, именно в таком виде Плоткин опубликовал свою игру Hadean Lands в Стиме.

Windows Frotz

http://www.davidkinder.co.uk/frotz.html

Классический выбор тех, кто пользуется Windows. Плеер поддерживает все известные фичи и имеет стандартные настройки типографики. На скриншоте — «Синие стулья».

Игра «Синие стулья» на Windows Frotz

fizmo

https://fizmo.spellbreaker.org/

Неплохой выбор для тех, кто сидит на Linux или OS X. Это современный плеер с несколькими фронтендами, среди них есть один для ncursesw (консольный вывод), другой для SDL. У меня также получилось запустить ncurses-версию на WSL (Windows Subsystem for Linux на Windows 10). В SDL версии можно настроить цвета, шрифт и его размер.

Прочие

  • Gargoyle безусловно обладает лучшей типографикой (парный кёрнинг! лигатуры!), так как использует FreeType для рендеринга и содержит много настроек. Несмотря на постоянную разработку, последний «стабильный» релиз был в 2011. Кроме этого, шрифт по умолчанию не содержит кириллицы, поэтому требуется дополнительная настройка. До тех пор, пока issue #230 не закроют, к рекомендуемым плеерам Gargoyle я относить, увы, не буду.
  • Thunderword — единственное приложение на Android, которое понимает кириллицу на ввод и вывод. Впрочем, интерфейс настолько нетрадиционный, что порекомендовать этот плеер сложно. Также, похоже, что полужирное и курсивное начертания Thunderword выводить не умеет. Здесь я бы рекомендовал Parchment.
  • В данный момент на iOS нет совместимых плееров, поэтому единственный выбор — это Parchment.

На этом всё, увидимся в следующих выпусках блога!

2 thoughts on “Интерпретаторы Z-машины — на чём играть в Информ

  1. Если использовать thunderword, то со специальной адаптированной версией Text Fiction (полужирное начертание и озвучка имеется), поскольку приложение ещё сырое, но возможности уже чувствуются.

  2. гребанная хипстота. чтоб ваш электрон сожрал всю вашу оперативку!

Добавить комментарий для johnbrown Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *