Вуаля, новый плагин!
Хотя этот немного менее серьёзный. ![]()
Discourse Frotz
Больше нет необходимости отмечать бота @ в каждом шаге. Как только игра начнётся, просто отвечайте ему.
Репозиторий Git: GitHub - merefield/discourse-frotz: A plugin that uses Frotz to give you an interactive fiction experience on your Discourse forum · GitHub
Что это такое
Это «бот», с помощью которого можно играть в интерактивную прозу, иначе говоря, классические текстовые квесты, на вашем форуме Discourse. По сути, это адаптер к стандартному и удивительному интерпретатору Z-машины под названием «frotz» по адресу David Griffith / frotz · GitLab
Как использовать
Настройка добавляет две игры; вы можете добавить больше в настройках.
Каждая запись содержит заголовок и имя файла истории.
Чтобы начать взаимодействие, нужно отметить бота, указанного в настройках, с помощью @. После этого достаточно ответить на его пост.
Чтобы перечислить доступные игры, сначала нужно упомянуть бота и спросить:
@mybot list games
Это покажет вам все доступные варианты.
Чтобы начать игру, введите:
start game x, заменив x на номер варианта.
Если вы захотите переключиться на другую игру, вы сможете это сделать; плагин сохраняет ваш прогресс после каждого хода, так что вы можете вернуться к первой истории в любое время. Плагин хранит сохранение для каждой истории для каждого пользователя, который в неё играет.
Чтобы продолжить существующую игру, введите:
continue game x, заменив x на номер варианта.
NB Полная пересборка уничтожит все файлы сохранений. Это необходимый компромисс.
Как играть в IF-игру?
Многие «Меты» выросли с такими играми. Для тех, кто менее знаком, ознакомьтесь с этой шпаргалкой: Play Some Interactive Fiction
Настройка
Создание пользователя-бота
(извините, автоматизация этого процесса есть в моём списке задач!)
В сессии SSH войдите в ваш контейнер и консоль Rails:
./launcher enter app
rails c
Затем выполните следующее:
u = User.create!(username: "Frotz", name: "FrotzBot", id:-5, email: "not@really.valid")
u.activate
Ваш новый бот станет доступен для настройки в интерфейсе. Перейдите к настройкам пользователя в интерфейсе через кнопку администратора и отключите всю электронную почту. Обновите аватар по своему вкусу.
Установка Discourse Frotz
Обновите ваш app.yml
Это немного более инвазивно, чем обычно для плагина.
Добавьте это в app.yml:
hooks:
after_code:
- exec:
cd: $home
cmd:
- git clone https://gitlab.com/DavidGriffith/frotz
- exec:
cd: $home/frotz
cmd:
- make dfrotz
- exec:
cd: $home/frotz
cmd:
- mkdir savegames
- exec:
cd: $home/frotz
cmd:
- mkdir stories
- exec:
cd: $home/frotz/stories
cmd:
- wget -O zork1.z3 https://eblong.com/infocom/gamefiles/zork1-r119-s880429.z3
- exec:
cd: $home/frotz/stories
cmd:
- wget --no-check-certificate http://www.douglasadams.com/creations/hhgg.z3
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/merefield/discourse-frotz
перед другими записями плагинов.
Теперь вам также нужно добавить плагин Discourse BBCode!!
Пересоберите с помощью обычной команды ./launcher rebuild app
Теперь перейдите к настройкам плагина и выберите пользователя-бота, которого вы добавили ранее:

Истории
Вы заметите, что я включил несколько историй. Больше можно найти на https://ifdb.tads.org/.
Однако следите за лимитами запросов здесь! Получение слишком большого количества историй из одного источника может вызвать ошибку.
Также обратите внимание, что истории размещены на серверах, не защищённых HTTPS (увы-увы).
Если вы настаиваете на загрузке большего количества, добавьте их в app.yml. Вы также можете добавить их вручную из командной строки, но имейте в виду, что они будут удалены при следующей полной пересборке.
Включение FrotzBot для личных сообщений (требуется осторожность)
Позволяет пользователям играть в приватном режиме, но использование будет менее прозрачным. Если у вас достаточно мощный сервер, это может не стать проблемой. В любом случае учитывайте последствия для производительности. В качестве альтернативы поощряйте пользователей играть в специально отведённой категории.

по умолчанию: ВЫКЛ
Если он не включён, пользователь получит вежливое сообщение:
Ограничение FrotzBot по категориям
Вы можете ограничить бота одной (или списком) категорий, чтобы не заполнять другие разделы:
Горячие клавиши!
Это очень важно для улучшения игрового опыта. Вам нужно запомнить всего две комбинации:
-
Shift-R — ответить боту
-
Ctrl-Enter — отправить следующий ход
Ограничения и соображения
Пока поддерживаются не все форматы историй и игры, и маловероятно, что они будут поддержаны в будущем. Многие игры не работают из-за особенностей их протоколов запросов и ответов. Поскольку мы взаимодействуем пост за постом, нам нужно просить Frotz сохранять состояние после каждого хода. Если один шаг игры не приводит к подсказке, на которой система может сохранить состояние (игнорируя подсказки «нажмите любую клавишу» или «ещё», которые должны обрабатываться), то история не будет работать. Например, в игре «Act of Murder» (отличная игра!) женщина у двери спрашивает, полицейский ли вы. К сожалению, это состояние игры, которое нельзя сохранить, поэтому оно не соответствует требованию, и я не вижу способа заставить это работать.
NB Режим списка рассылки с этим плагин — катастрофа, поэтому убедитесь, что вы не используете его, прежде чем пытаться применить этот плагин!
Можно сказать, что это немного расточительно для ресурсов форума, так как требуется как минимум два поста для каждого «хода». Очевидно, что для таких игр чаще уместнее использовать чат-интерфейс, а не форум, но вы можете возразить, что это можно использовать для создания гайдов по прохождению? ![]()
Для менее инвазивного решения рассмотрите: Turning a topic into interactive fiction ;)
Отзывы
Все отзывы приветствуются!
Благодарности
Этот плагин использует David Griffith / frotz · GitLab — интерпретатор Z-машины Frotz, который клонируется и собирается скриптом настройки.
Спасибо @P16 за возможность использовать фрагменты кода из закрытого чат-бота, над которым мы работали вместе.






