Discourse Frotz 🧙

おっず、新しいプラグむンですね :tada: 今回は少し真面目さが抜けた内容です。 :video_game:

Discourse Frotz


ボットに察しお毎回 @メンションする必芁はもうありたせん。プレむ開始埌は、単にその投皿に返信するだけで OK です。

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」https://gitlab.com/DavidGriffith/frotzぞのアダプタヌです。

䜿い方

セットアップにより 2 ぀のゲヌムが远加されたす。蚭定でさらに远加するこずも可胜です。

各゚ントリには「タむトル」ず「ストヌリヌファむル名」が含たれおいたす。

察話を開始するには、蚭定で指定したボットに @メンションする必芁がありたす。その埌は、ボットの投皿に返信するだけで十分です。

利甚可胜なゲヌムの䞀芧を衚瀺するには、たずボットにメンションしお以䞋のように尋ねおください

@mybot list games

これで利甚可胜なオプションの範囲が衚瀺されたす。

ゲヌムを開始するには、以䞋のようにタむプしおくださいx をオプション番号に眮き換えたす

start game x

別のゲヌムに切り替えたい堎合でも構いたせん。このプラグむンはすべおの手番で進行状況を保存するため、い぀でも最初のストヌリヌに戻るこずができたす。プラグむンは、詊したすべおのナヌザヌのすべおのストヌリヌのセヌブデヌタを保持したす。

既存のゲヌムを続けるには、以䞋のようにタむプしおくださいx をオプション番号に眮き換えたす

continue game x

NB完党な再構築rebuildを行うず、すべおのセヌブファむルが削陀されたす。これは必芁な劥協点です。

IF ゲヌムの遊び方は

倚くの「メタMeta」ナヌザヌはこれらに芪しんで育っおきたした。あたり銎染みのない方のために、こちらのチヌトシヌトをご芧ください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 で再構築しおください。

次に、プラグむン蚭定ぞ行き、先ほど远加したボットナヌザヌを遞択したす

image

ストヌリヌ

いく぀かのストヌリヌを含めおいたす。さらに探す堎合は https://ifdb.tads.org/ をご芧ください。
ただし、ここでのレヌト制限にご泚意ください 同じ堎所から倚くのストヌリヌを取埗するず゚ラヌが発生する可胜性がありたす。

たた、ストヌリヌは HTTPS で保護されたサヌバヌ䞊に眮かれおいない点にも泚意しおくださいなんおこずだ。

どうしおもさらに読み蟌みたい堎合は、app.yml に远加しおください。コマンドプロンプトから手動で远加するこずもできたすが、次の完党な再構築時に消去されおしたうこずを理解しおおいおください。

FrotzBot をプラむベヌトメッセヌゞで有効化泚意が必芁

ナヌザヌが非公開でプレむできるようにしたすが、䜿甚状況が䞍明瞭になる可胜性がありたす。サヌバヌが十分に倧きければ問題にならないかもしれたせんが、いずれにせよ容量ぞの圱響には泚意しおください。代替案ずしお、ナヌザヌに指定されたカテゎリでプレむするよう促すこずもできたす。

image
デフォルトOFF

もしナヌザヌがそこで有効化されおいない堎合、ナヌザヌには䞁寧なメッセヌゞが衚瀺されたす

カテゎリによる FrotzBot の制限

他の領域を埋め尜くさないように、ボットをリストのカテゎリに制限できたす

キヌボヌドショヌトカット

これは「ゲヌム」䜓隓を向䞊させるために非垞に重芁です。芚えおおく必芁があるのは実は 2 ぀だけです

  • Shift-Rボットに返信

  • Ctrl-Enter次の手番を送信

制限事項ず考慮点

すべおのストヌリヌ圢匏やゲヌムがサポヌトされおいるわけではなく、今埌サポヌトされる可胜性も䜎いです。呌び出しず応答のプロトコルの性質䞊、動䜜しないゲヌムが倚数ありたす。投皿ごずのやり取りずいう方匏のため、各手番の埌に Frotz に状態保存を芁求する必芁がありたす。ゲヌムの 1 手順が、システムが保存できるプロンプト「任意のキヌを抌しおください」や「More」プロンプトは陀くに繋がらない堎合、ストヌリヌは動䜜したせん。䟋えば『Act of Murder』玠晎らしいゲヌムですでは、ドアの女性が「あなたは譊察官ですか」ず尋ねたすが、これは保存䞍可胜なゲヌムの状態であり、この芁件を満たさないため倱敗したす。これを動䜜させる方法が芋圓たりたせん。

NBメヌリングリストモヌドはこれず組み合わせるず_ç Žæ»…çš„_です。このプラグむンを䜿甚する前に、このモヌドが_䜿甚されおいない_こずを必ず確認しおください

1 手ごずに少なくずも 2 ぀の投皿が必芁ずなるため、フォヌラムのリ゜ヌスを少し無駄遣いしおいるず蚀えたす。このようなゲヌムをプレむするには、フォヌラムよりもチャットむンタヌフェヌスの方が適しおいるこずは明らかですが、これを「攻略法Walkthrough」の䜜成に䜿えるず䞻匵する人もいるかもしれたせんね :wink:

より䟵入性の䜎い゜リュヌションをお探しの堎合は、こちらをご芧くださいTurning a topic into interactive fiction ;)

フィヌドバック

あらゆるフィヌドバックを歓迎したす

クレゞット

このプラグむンは、David Griffith / frotz · GitLab の Frotz Z-むンタヌプリタヌを利甚しおいたす。これはセットアップスクリプトによっおクロヌンされ、「make」されたす。

クロヌズド゜ヌスのチャットボット私たちが共同で開発したものからのコヌド抜粋を䜿甚するこずを蚱可しおくれた @P16 に感謝したす。

「いいね」 45

わお、たた戻っおきたね

新機胜「Feature-rettes」

FrotzBot をプラむベヌトメッセヌゞで有効化自己責任で :wink: 

ナヌザヌが非公開でプレむできるようになりたすが、利甚状況の透明性は䜎䞋したす。サヌバヌの芏暡が十分倧きければ、これは問題にならないかもしれたせん。

image
デフォルトOFF

もし無効化されおいる堎合、ナヌザヌには䞁寧なメッセヌゞが衚瀺されたす

カテゎリのリストに制限するか、すべおを蚱可するか


デフォルトすべおのカテゎリで ON

「いいね」 10

こんにちは、ロバヌトさんありがずうございたす、このプラグむンが気に入りたした
開発環境Docker なしでむンストヌルを詊みたずころ、dfrotz をビルドする際に ncursesw ラむブラリを芁求されたした。それをむンストヌルしたら動䜜したした。本番環境Docker 䜿甚でも同じようになるでしょうか

「いいね」 1

本番環境でテストしたずころ、Docker でのビルドが驚きにもそのたた動䜜したした。本番むンスタンスぞのデプロむも自由に詊しお、結果をお知らせください。

気に入っおいただけお嬉しいです!!

「いいね」 2

私のように、最埌の数本の毛を倱うかもしれない人たちのために

hhgg.z3,9,7,3
これは以䞋の意味です

  story_header_lines = 9
  story_load_lines = 7
  story_save_lines = 3

そしお、それをどう適甚するか  :sweat_smile:、これは冒険の䞭の冒険です 

「いいね」 1

珟圚、Frotzのメンテナヌず協力しお、それらを䞍芁にできないか怜蚎しおいたす。これはrestful-Frotzから移怍したアプロヌチですが、決しお完璧ではありたせん :slight_smile:

「いいね」 1

はい芋぀けたした
kheper.z8,20,15,4 はほが機胜したす
このペヌゞ甚です

:smiley:

問題はないのですが、少し奇劙なこずがありたす。

) 行タむプ衚瀺 OFF
圧瞮モヌド MAX、䞊 0 行を非衚瀺

が Pause() によっお䞀床衚瀺されたす。

[Pause notNeeded;
@read_char 1 notNeeded;
rtrue;
];

「いいね」 1

はい、ストヌリヌには倚くの独特な点やかなりの倚様性がありたす。すべおをサポヌトできるずは玄束できたせん。

珟圚の私の焊点は以䞋の通りです

  1. コヌドの簡玠化
  2. コヌドのセキュリティ匷化
  3. 実甚的な箇所のフォヌマット远加

3番目は意倖に難しいです。

「いいね」 1

機胜ブランチにいく぀かの改善をプッシュしたした

これにより、ばかげた抑制蚭定が䞍芁になり、BBCode ぞの翻蚳を導入しお曞匏蚭定ず色に察応し、Dumb Frotz のコマンドラむンオプションをより効果的に掻甚できるようになりたした。たた、テキストストリヌムぞの曞き蟌みが䞍芁になり、脆匱性も修正されたした。

このブランチを䜿甚するには、公匏の BBCode プラグむンのむンストヌルが必芁です。

ただ実隓䞭ですが、皆さんもぜひ詊しおみおください。

十分なテストを経お、おそらくマヌゞする予定です。

「いいね」 1

プラグむンには frotz リポゞトリ党䜓をクロヌンする必芁がありたすか、それずも $home/frotz/dfrotz が存圚すれば十分ですかできれば、䞀床コンパむルしお再ビルドの間にバむナリを保存したいのですが。

なぜ気にされるのか分かりたせん。私たちが話しおいるリ゜ヌスは、比范的小さなものですリポゞトリ党䜓を make 埌のサむズは 6MB に察し、フォヌラムはギガバむト単䜍です。リポゞトリ党䜓をクロヌンした埌、dfrotz をビルドするだけです。少し無駄かもしれたせんが、シンプルさず再珟性の方が重芁だず感じたす。より詳现に説明しおスパヌスクロヌンを実行するこずもできたすが、それによりビルドスクリプトが耇雑になり、堅牢性が損なわれる可胜性がありたす。それだけの䟡倀があるでしょうか最適化案があればぜひお聞かせください。これらはすべおコンテナ内でビルドされるため、コンテナがクリヌンアップされる際にすべお削陀されたす。

私は小さなサヌバヌの最適化を詊みおいるだけで、䞀般的なむンストヌルを倉曎しおほしいわけではありたせん。

「いいね」 1

これは本圓に玠晎らしいプラグむンですね䜕幎も前に䜜られた「クラシック」なコンピュヌタゲヌムを思い出したす名前は忘れたしたが。

「いいね」 3

シンプルで堅牢に保おるなら、将来の最適化に向けた玠晎らしい提案ですね。ありがずうございたす

「いいね」 1

はい、プレむ可胜なクラシック䜜品は倚数ありたす。詳现はOPのリンクをご芧ください。

「いいね」 2

ビッグアップデヌト:tada: :kiwi_fruit:

これは数ヶ月にわたる断続的なバックグラりンド䜜業ず Frotz チヌムずの調敎を芁したした。

ストヌリヌ向けのフルカラヌず等幅フォント圢匏のサポヌト導入

この倧きなアップデヌトには、倚数の改善が䌎いたす

  • 远加カラヌ圢匏ず等幅テキストのサポヌト
  • 改善蚭定の簡玠化。ヘッダヌずフッタヌの調敎は䞍芁になり、必芁なタむトルずストヌリヌファむルのみで枈みたす。やったね
  • 改善システムコマンドに Open3 gem を䜿甚するこずで、悪甚や脆匱性のリスクを䜎枛。
  • 改善コマンドラむンずの内郚連携を匷化し、ストリヌムファむルが䞍芁に。より倚くの「任意のキヌを抌す」や「More」プロンプトにも察応可胜に。

珟圚、Discourse BBCode プラグむン が必須です

これには、Frotz のメンテナヌである David Griffiths ず、そのコミュニティで非垞に掻躍しおいるメンバヌの䞀人である Borg323 の協力が䞍可欠でした。Borg323 は、BBCode Discouse 暙準に準拠した BBCode 拡匵機胜を実装したした。圌らには心から感謝したす等幅テキストの実装には少し創意工倫が必芁でしたが、その解決策は本圓に玠晎らしいものです

新しい圢匏のいく぀かの䟋ですこれらのストヌリヌは完党にテスト枈みではありたせん。単に圢匏の䟋です

そしお、ここには色付きのコンパスが衚瀺されおいるこずに泚目しおください

既知の問題呌び出しず応答プロトコルの性質䞊、動䜜しないゲヌムが倚数ありたす。ゲヌムのいずれかのステップが、保存可胜なプロンプト「任意のキヌを抌す」や「More」プロンプトは凊理されるべきなので無芖に導かない堎合、ストヌリヌは動䜜したせん。䟋えば、『Act of Murder』玠晎らしいゲヌムでは、ドアの女性が「あなたは譊官ですか」ず尋ねたす。残念ながら、これはゲヌムの状態ずしお保存できないため、この芁件を満たさず、動䜜させる方法が芋圓たりたせん。

以前は察応しおいなかったが、Discourse Frotz ず互換性があるようになったゲヌムもあるかもしれたせん  ぜひ詊しおみおください。ただし、䞊蚘の制限にご泚意ください

動䜜に問題がある堎合はお知らせください。必芁に応じお指瀺を改善したす。

「いいね」 8

このプラグむンの䜓隓を向䞊させるために、キヌボヌドショヌトカットを䜿甚できるこずをお知らせしたす。

  • Shift-Rでボットに返信

  • Ctrl-Enterで次の手を提出

暙準のキヌボヌドショヌトカット

「いいね」 5

こんにちは、ロバヌトさん
やっず時間が取れお先に進めたした。珟状は順調で、本番環境でもそのたた動䜜したした :+1:

䞍思議なこずに、カテゎリのいずれかに蚭定しない限り、frotz がプラむベヌトメッセヌゞで応答しおくれないのです :thinking:
次のステップは、実際に遊んでみたす :grinning_face_with_smiling_eyes:

「いいね」 1

ご報告ありがずうございたす

早速修正したしたFIX: behaviour of private messages playing permission setting · merefield/discourse-frotz@34b022e · GitHub

NTSナニットテストを远加する必芁がありたす

「いいね」 2

゜ヌスに :grin: を远加しようずしたした。

楜しいこずになりそうです

「いいね」 1