Frotz

Материал из IFВики
Перейти к навигации Перейти к поиску
Frotz
Тип Интерпретаторы Z-машины
Разработчик(и) Изначально Стефан Джокиш, портирование на Unix Гален Хазелвуд, текущий ментейнер основной ветки Дэвид Гриффит
Языки интерфейса
Операционные системы Unix и ряд других за счёт портированных версий
Написано на C
Язык разработки
Читаемые форматы файлов Игры для Z-машины (*.z?;*.zblorb;*.zlb;*.zip;*.dat)
Создаваемые форматы файлов
Дата первого выпуска 1995
Последняя версия 2.53 (относится к основной ветки Unix Frotz)
Дата последней версии 28 февраля 2021
Состояние
Лицензия GNU GPL v2
Сайт frotz.sourceforge.net


Frotz - это семейство интерпретаторов игр, написанных под Z-машину, соответствующих стандарту 1.0 спецификации Грэхема Нельсона. Frotz поддерживает в том числе и малораспространённый формат 6 версии Z-машины. Его название происходит от заклинания освещения из серии игр Enchanter от Infocom. Слово "frotz" на специфическом сленге Массачусетского технологического института, чьими выпускниками были основатели Infocom, также означало "играть с" (англ. game with) (то есть по-русски это звучало бы примерно как "фродзить"), что, вероятно, и послужило прародителем для соответствующего заклинания.

В конце 1980-х - начале 1990-х годов многие энтузиасты работали над тем, чтобы расшифровать формат Infocom, разработав в этот период несколько интерпретаторов Z-машины (Z-code). Frotz не был первым из них, а скорей наоборот одним из последних, опираясь во многом на наработки кодовой базы Марка Хауэлла. В итоге, он стал наиболее распространённым интерпретатором Z-машины, приобретя статус эталонного.

Изначально Frotz был написан и разрабатывался в 1995-1999 годах Стефаном Джокишом под операционную систему MS-DOS, но в 2000 году его код был портирован Галеном Хазелвудом на Unix. С 2002 года поддержкой Unix Frotz занимается Дэвид Гриффит. В частности, именно им была проделана работа по разделению слоя виртуальной машины и пользовательского интерфейса, что обеспечило возможность более лёгкого портирования Frotz на другие операционные системы и разработки на его основе производных продуктов.

Особенности работы с русским языком

Технические особенности реализации Z-машины и языка Inform долгое время не позволяли обеспечить корректный ввод и вывод не ASCII символов. Для всех кириллических букв и сопутствующих символов не хватало ячеек памяти, а алгоритмы обработки вводимой строки имели ряд ошибок, проявлявшихся при попытке обойти это ограничение встроенными инструментами Inform через таблицу символов, внесение в которую позволяет сократить объём памяти, необходимый для хранения текстового символа.

Благодаря инициативе Андрея Гранкина в 2002-2003 годах и переработке некоторых алгоритмов обработки ввода, выполненной Дэвидом Киндером в Windows Frotz, были обеспечены условия для корректной работы с кириллическим текстом (впрочем, как и всем Unicode). Однако проблема работы с кириллицей осталась актуальна для всех предшествующих версий Frotz, а также некоторых параллельных версий для других систем, где соответствующие доработки выполнены не были.

Таким образом, далеко не все интерпретаторы семейства Frotz в принципе способны корректно работать с русским текстом. Проблемы проявляются в виде вывода текста русскоязычной игры знаками вопроса. Следует помнить, что на сегодняшний день данная проблема находится в области ответственности именно интерпретатора. То есть принципиально русскоязычные игры для Z-машины воспроизводимы, просто для этого могут потребоваться существенные усилия: от экспериментального подбора работоспособного интерпретатора до запуска игры в интерпретаторе на другой системе, где эти проблемы решены.

К сожалению, обозначенные проблемы работы движка Frotz с кириллическим текстом проявляются не только на старых версиях до 2003 года, но и на вполне актуальных интерпретаторах на его основе, например, на версии Frotz для iOS, так как на них соответствующие доработки для поддержки не ASCII символов и различных национальных однобайтовых кодировок выполнены не были.

Портированные версии и производные продукты

На сегодняшний день основная разработка интерпретатора как такового идёт в рамках Unix-версии Frotz, которая называется Unix Frotz или просто Frotz, но существует целый ряд производных продуктов, базирующихся на его движке.

Самый известный порт Frotz - это Windows Frotz, разрабатываемый Дэвидом Киндером под системы Windows. Он также примечателен тем, что в нём решена проблема ввода и вывода не ASCII символов, а значит интерпретатор пригоден для воспроизведения русскоязычных игр для Z-машины.

Кроме того, существует большое количество других интерпретаторов, базирующихся на движке Frotz, для различных операционных систем и устройств. наиболее полный их перечень можно посмотреть в соответствующем разделе IF Archive.

Некоторые из производных продуктов являются мультиформатными интерпретаторами, просто используя ядро Frotz для реализации поддержки Z-машины. В том числе Frotz для iOS, несмотря на своё название, в действительности также поддерживает воспроизведение игр на Glulx и TADS.

Ссылки

См. также