Интерпретаторы 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. гребанная хипстота. чтоб ваш электрон сожрал всю вашу оперативку!

Leave a Comment

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