واو، إضافة جديدة!
هذه الإضافة أقل جدية قليلاً. ![]()
Discourse Frotz
\u003csup\u003eلم يعد من الضروري ذكر البوت (@mention) في كل خطوة. بمجرد بدء اللعب، ما عليك سوى الرد عليه.
ما هي هذه الإضافة؟
إنها ‘بوت’ يتيح لك لعب القصص التفاعلية (أي ألعاب المغامرات النصية الكلاسيكية) على منتدى Discourse الخاص بك، وهي في الأساس أداة ربط لمفسر Z-machine القياسي والمذهل المسمى ‘frotz’ الموجود في David Griffith / frotz · GitLab
كيفية الاستخدام
تضيف الإعدادات لعبتين، ويمكنك إضافة المزيد من خلال الإعدادات.
تحتوي كل إدخال على عنوان واسم ملف القصة.
لبدء التفاعل، تحتاج إلى ذكر البوت المحدد في الإعدادات (@mention). بعد ذلك، يكفي الرد على منشور من منشورات البوت.
للعرض قائمة بالألعاب المتاحة، يجب عليك أولاً ذكر البوت وطرح السؤال التالي:
@mybot list games
سيظهر لك هذا مجموعة الخيارات المتاحة.
لبدء لعبة، اكتب:
start game x مع استبدال x برقم الخيار.
إذا أردت التبديل إلى لعبة أخرى، يمكنك ذلك؛ حيث تحفظ الإضافة تقدمك في كل حركة، مما يسمح لك بالعودة إلى القصة الأولى في أي وقت. تحتفظ الإضافة بحفظ لكل قصة لكل مستخدم يجربها.
لمتابعة لعبة قائمة، اكتب:
continue game x مع استبدال x برقم الخيار.
ملاحظة: إعادة البناء الكاملة ستدمر جميع ملفات الحفظ. هذا حل وسط ضروري.
كيف ألعب لعبة قصص تفاعلية (IF)؟
كثير من “الميتات” (Meta’s) نشأوا مع هذه الألعاب. لأولئك الأقل دراية بها، تحقق من هذه ورقة الغش: Play Some Interactive Fiction
الإعداد
إنشاء مستخدم البوت
(عذراً، أتمتة هذا الإجراء مدرجة في قائمتي!)
في جلسة SSH، أدخل الحاوية الخاصة بك وافتح وحدة تحكم Rails:
\n./launcher enter app\nrails c\n\n
ثم قم بما يلي:
\nu = User.create!(username: "Frotz", name: "FrotzBot", id:-5, email: "not@really.valid")\nu.activate\n\n
سيصبح البوت الجديد متاحاً للإعداد من خلال واجهة المستخدم. انتقل إلى إعدادات المستخدم في الواجهة عبر زر المسؤول وقم بإيقاف جميع عمليات الإرسال عبر البريد الإلكتروني. قم بتحديث الصورة الرمزية حسب رغبتك.
تثبيت Discourse Frotz
تحديث ملف app.yml الخاص بك
هذا الإجراء أكثر تدخلاً من الإضافات المعتادة.
أضف التالي إلى ملف app.yml:
\nhooks:\n after_code:\n - exec:\n cd: $home\n cmd:\n - git clone https://gitlab.com/DavidGriffith/frotz\n - exec:\n cd: $home/frotz\n cmd:\n - make dfrotz\n - exec:\n cd: $home/frotz\n cmd:\n - mkdir savegames\n - exec:\n cd: $home/frotz\n cmd:\n - mkdir stories\n - exec:\n cd: $home/frotz/stories\n cmd:\n - wget -O zork1.z3 https://eblong.com/infocom/gamefiles/zork1-r119-s880429.z3\n - exec:\n cd: $home/frotz/stories\n cmd:\n - wget --no-check-certificate http://www.douglasadams.com/creations/hhgg.z3\n - exec:\n cd: $home/plugins\n cmd:\n - git clone https://github.com/merefield/discourse-frotz\n\n
قبل إدخالات الإضافات الأخرى الخاصة بك.
ستحتاج أيضاً إلى إضافة إضافة Discourse BBCode!!
أعد البناء باستخدام الأمر المعتاد ./launcher rebuild app
الآن انتقل إلى إعدادات الإضافة واختر مستخدم البوت الذي أضفته سابقاً:

القصص
ستلاحظ أنني أضفت بضع قصص. يمكنك العثور على المزيد في https://ifdb.tads.org/.
ومع ذلك، انتبه لحدود المعدل هنا! قد يؤدي الحصول على عدد كبير جداً من القصص من نفس الموقع إلى حدوث خطأ.
لاحظ أيضاً أن القصص ليست مستضافة على خوادم محمية بـ HTTPS (توت توت).
إذا أصررت على تحميل المزيد، أضفها إلى ملف app.yml. يمكنك أيضاً إضافتها يدوياً من موجه الأوامر، لكن اعلم أن هذه ستُحذف عند إعادة البناء الكاملة التالية.
تمكين FrotzBot للرسائل الخاصة (يُنصح بالحذر)
يسمح للمستخدمين باللعب بشكل خاص، لكن الاستخدام سيكون أقل شفافية. إذا كان لديك خادم كبير بما يكفي، فقد لا يكون هذا مشكلة بالنسبة لك. في أي حال، كن على دراية بتأثير ذلك على السعة. كبديل، شجع المستخدمين على اللعب في فئة مخصصة.

الافتراضي: OFF
إذا لم يكن البوت مفعلًا هناك، فسيحصل المستخدم على رسالة مهذبة:
تقييد FrotzBot حسب الفئة
يمكنك تقييد البوت على (قائمة) فئة لتجنب ملء المناطق الأخرى:
اختصارات لوحة المفاتيح!
هذا أمر بالغ الأهمية لتحسين تجربة “اللعب”. وفي الواقع، ما عليك سوى تذكر اختصارين:
-
\u003ckbd\u003eShift\u003c/kbd\u003e-\u003ckbd\u003eR\u003c/kbd\u003e للرد على البوت
-
\u003ckbd\u003eCtrl\u003c/kbd\u003e-\u003ckbd\u003eEnter\u003c/kbd\u003e لتقديم حركتك التالية
القيود والاعتبارات
لا يتم دعم جميع صيغ القصص والألعاب بعد، ومن غير المرجح أن يتم دعمها. هناك العديد من الألعاب التي لا تعمل بسبب طبيعة بروتوكولات الاستدعاء والاستجابة الخاصة بها. وبسبب الطريقة التي نتفاعل بها عبر المنشورات، يجب أن نطلب من Frotz حفظ الحالة بعد كل حركة. إذا لم تؤدي إحدى خطوات اللعبة إلى موجه يمكن للنظام عندها الحفظ (مع تجاهل موجهات “اضغط أي مفتاح” أو “المزيد” التي يجب معالجتها)، فلن تعمل القصة. على سبيل المثال، في لعبة “Act of Murder” (لعبة رائعة!)، تسأل السيدة عند الباب عما إذا كنت شرطيًا. للأسف، هذه حالة في اللعبة لا يمكن حفظها، وبالتالي تفشل في هذا الشرط، ولا أرى طريقة لجعل ذلك يعمل.
ملاحظة: وضع قائمة البريد الإلكتروني هو كارثة مع هذا، لذا تأكد من عدم استخدامه قبل محاولة استخدام هذه الإضافة!
يمكن القول إنها تهدر موارد المنتدى قليلاً لأنها تتطلب منشورين على الأقل لكل “حركة”. من الواضح أنه غالباً ما يكون أكثر ملاءمة للعب هذه الأنواع من الألعاب باستخدام واجهة دردشة بدلاً من منتدى، لكن يمكنك القول إن هذا يمكن استخدامه لإنشاء أدلة الحل (Walkthroughs)؟ ![]()
لحل أقل تدخلاً، ضع في اعتبارك: Turning a topic into interactive fiction ;)
التعليقات
كل التعليقات موضع ترحيب!
الاعتمادات
تستغل هذه الإضافة David Griffith / frotz · GitLab وهو مفسر Z الخاص بـ Frotz والذي يتم نسخه وإنشاؤه بواسطة برنامج الإعداد.
شكراً لـ @P16 على السماح لي باستخدام مقتطفات من كود لبوت دردشة مغلق المصدر عملنا عليه معاً.












