哇,一个新插件!
不过这个稍微没那么严肃。![]()
Discourse Frotz
不再需要在每一步都@提及机器人。一旦开始游戏,只需回复它即可。
它是什么
这是一个“机器人”,用于在您的 Discourse 论坛上玩互动小说(即经典文字冒险游戏),本质上是一个适配器,连接到标准且出色的 Z-machine 解释器“frotz”,其地址为 David Griffith / frotz · GitLab
如何使用
设置会添加两个游戏,您可以在设置中添加更多游戏。
每个条目包含一个标题和故事文件的名称。
要启动交互,您需要在设置中@提及机器人。之后,只需回复他们的帖子即可。
要列出可用的游戏,您首先需要提及机器人并询问:
@mybot list games
这将为您提供一系列选项。
要开始游戏,请输入:
start game x,将 x 替换为选项编号。
如果您想切换到另一个游戏,可以这样做;插件会在每一步保存您的进度,因此您可以随时返回到第一个故事。插件为每个尝试过的用户为每个故事保存一个存档。
要继续现有游戏,请输入:
continue game x,将 x 替换为选项编号。
注意:完全重建将销毁所有存档文件。这是一个必要的妥协。
如何玩互动小说(IF)游戏?
许多“元用户”(Meta’s)可能已经习惯了这些游戏。对于不太熟悉的人,请查看此速查表: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
您的新机器人随后将在 UI 中可用,可以进行设置。通过管理按钮进入用户的设置,并关闭_所有_邮件发送。根据需要更新头像。
安装 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 保存状态。如果游戏的某一步骤没有导致系统可以保存的提示(忽略“按任意键”或“更多”提示,这些应已处理),则该故事无法运行。例如,在《谋杀行动》(一款很棒的游戏!)中,门口的女士问您是否是警察。不幸的是,这是游戏中无法保存的状态,因此无法满足此要求,我看不出有什么方法可以让它运行。
注意:邮件列表模式与此插件完全不兼容,因此在尝试使用此插件之前,请确保_不要_启用此模式!
可以说,它有点浪费论坛资源,因为每一步至少需要两篇帖子。显然,使用聊天界面而不是论坛来玩这类游戏通常更合适,但您可能会争辩说,这可以用来创建攻略?![]()
对于侵入性较小的解决方案,请考虑:Turning a topic into interactive fiction ;)
反馈
欢迎所有反馈!
致谢
本插件利用了 David Griffith / frotz · GitLab 的 Frotz Z-解释器,该解释器由设置脚本克隆并“编译”。
感谢 @P16 允许我使用我们共同开发的一个闭源聊天机器人的代码片段。






