كيف تحافظ على قابلية اختبار قصص الألعاب المتشعبة
عندما تتسع القصة المتشعبة، اختبر القرارات وتغيرات الحالة التي تجعل المسارات تسلك سلوكاً مختلفاً—وليس كل مسار محتمل كسيناريو منفصل من البداية إلى النهاية. قم بنمذجة السرد كرسم بياني، وحدد الشروط والنتائج عند كل قرار، وأنشئ مجموعة اختبار صغيرة تغطي الانتقالات الحرجة، ونقاط إعادة الالتقاء، وحالات الفشل. ثم استخدم أخذ عينات المسارات بناءً على المخاطر واختبارات اللعب البشرية لاكتشاف المشكلات التي لا تستطيع الفحوصات الهيكلية الحكم عليها. يمنح هذا مصممي السرد وفرق ضمان الجودة وسيلة قابلة للتكرار لاكتشاف العيوب دون ادعاء تغطية شاملة لجميع المسارات.
ابدأ برسم بياني يسجل السلوك
مثل كل مقطع أو مشهد قابل للعب كعقدة وكل خيار كحافة موجهة. أضف ملاحظات توضيحية على الحواف تتضمن شروطها وتأثيراتها: على سبيل المثال، `has_key = true` يُمكّن خيار "فتح البوابة"، والذي يحدد بدوره `gate_open = true`. حدد النهايات، والتكرارات، ونقاط إعادة الالتقاء بوضوح. نقطة إعادة الالتقاء هي المكان الذي تلتقي فيه المسارات المختلفة مرة أخرى؛ وهي موضع مفيد للتحقق من أن القصة يمكن أن تستمر من سياقات سابقة متعددة دون نقل حالة غير مقصودة.
يجب أن يعكس الرسم البياني ما تقيمه اللعبة بالفعل، وليس فقط البنية النثرية. سجّل المتغيرات التي يقرأها الخيار، وتلك التي يكتبها، وأي عقد لاحقة تعتمد عليها. ضمّن القيم الافتراضية، وقواعد إعادة الضبط، وأي تأثيرات تحدث لمرة واحدة. إذا تم تعيين علامة في فرع معين ولم يتم مسحها مطلقاً، فقد يكون ذلك مقصوداً؛ وتوثيق ذلك يجعل العواقب مرئية للمراجعة والاختبار.
يساعد هذا الهيكل أيضاً في تحديد نقاط القرار التي يسهل إغفالها في سيناريو طويل. تبحث ورقة بحثية نُشرت عام 2024 لأليكسي تيخونوف في اكتشاف نقاط قرار الشخصيات في السرديات المتشعبة وتقترح مجموعة بيانات مستندة إلى الرسوم البيانية لألعاب Choose Your Own Adventure. تتعلق مهمتها بتحديد نقاط القرار السردية، وليس التحقق من صحة طريقة لضمان الجودة؛ ويمكن أن تفيد الفرق في كيفية حصر الخيارات، لكنها لا تثبت أن نهج الاختبار المعروض هنا فعال. [Tikhonov, “Branching Narratives: Character Decision Points Detection”](https://aclanthology.org/2024.games-1.8/)
اختبر انتقالات الحالة، وليس مجرد زيارات المشاهد
الاختبار الذي يؤكد ظهور عقدة ما قد يغفل خياراً معطلاً. لكل خيار مهم، تحقق من ثلاثة أمور: ما إذا كان الخيار متاحاً في ظل الشرط المقصود، وما إذا كان اختياره يطبق تغير الحالة المتوقع، وما إذا كانت العقدة التالية والنتيجة المرئية تتطابقان مع تلك الحالة. تعامل هذه الفحوصات القصة كنظام انتقال للحالة: انطلاقاً من حالة بداية وإجراء محدد، يتم التحقق من الحالة الناتجة والوجهة.
على سبيل المثال، اختبار لاختيار "إظهار الخريطة" قد يؤكد ظهور الخريطة، وبقاء `trust` دون تغيير، ووصول المسار إلى مشهد المرصد المشترك. ويبدأ اختبار مقترن بـ `has_map = false` ويؤكد أن هذا الخيار غير متاح أو أنه يتبع البديل المحدد. يعتمد السلوك المتوقع الدقيق على مواصفات السرد؛ والنقطة المهمة هي تأكيد ذلك بوضوح بدلاً من استنتاج الصحة من عنوان المقطع.
عند نقاط إعادة الالتقاء، اختبر ما هو أكثر من مجرد الوصول. قارن بين الحالة التي يُفترض بكل مسار الحفاظ عليها، أو تغييرها، أو التخلص منها. الحارس الذي تم إقناعه في أحد الفروع قد يظل حليفاً بعد لم الشمل، بينما يجب أن ينتهي التنكر المؤقت. اجعل هذه القواعد جزءاً من الحالة المتوقعة بعد إعادة الالتقاء. إذا كان من المفترض أن تتقارب المسارات تماماً، فأكّد الحالة المشتركة؛ وإذا كان ينبغي لها الاحتفاظ باختلافات ذات مغزى، فأكّد تلك الاختلافات أيضاً.
استخدم مثالاً خيالياً لجعل التغطية مرئية
افترض أن لغزاً قصيراً يحتوي على قرار في الأرشيف. يمكن للاعب طلب المساعدة، أو التسلل، أو استخدام مفتاح مستعار؛ يصل كل مسار إلى الممر نفسه، ثم يحدد خيار لاحق ما إذا كان اللاعب سيأخذ رسالة مختومة. تتبع المصفوفة الخيالية التالية مجموعة مدمجة من التزامات الاختبار. تعني عبارة "مغطى" أنه تم التخطيط لاختبار للالتزام المحدد، وليس أنه تم اختبار المسار بأكمله أو كل تركيبة ممكنة.
**A:** `trust = high`؛ اطلب المساعدة من أمين الأرشيف. يظهر خيار المساعدة؛ يظل `trust` مرتفعاً؛ يصل المسار إلى الممر. توفر الخيار والانتقال
**B:** `trust = low`؛ اطلب المساعدة. يتم إخفاء خيار المساعدة أو الرفض، كما هو محدد. شرط سلبي
**C:** `has_key = true`؛ افتح الباب الجانبي. يُفتح الباب؛ يصل المسار إلى الممر؛ يُستهلك المفتاح فقط إذا تم تحديد ذلك. تأثير الحالة وإعادة الالتقاء
**D:** `has_key = false`؛ حاول فتح الباب الجانبي. لا يمكن فتح الباب؛ لا يتم تعيين علامة نجاح. تأكيد سلبي
**E:** من الممر، خذ الرسالة المختومة. `has_letter = true`؛ يقدم مشهد الأدلة اللاحق السطر الخاص بالرسالة. نتيجة لاحقة
**F:** من الممر، اترك الرسالة. `has_letter = false`؛ يغيب السطر الخاص بالرسالة. تباين النتيجة وتأكيد سلبي
هذه وسيلة مساعدة في اتخاذ القرار، وليست نسبة مئوية للتغطية أو مجموعة دنيا شاملة لجميع الحالات. إنها تجعل حالات الإغفال واضحة: هنا، يستحق حاجز الثقة المنخفضة ونتيجة "غياب الرسالة" فحوصات خاصة بهما لأن المرور عبر المسار السعيد وحده لن يتحقق منهما. يجب أن يشير كل صف إلى العقدة أو الانتقال ذي الصلة في الرسم البياني حتى يمكن تتبع الشرط المتغير وصولاً إلى الاختبارات المتأثرة.
حدد أولويات تغطية الفروع مع تزايد الاحتمالات
إذا كانت القصة تحتوي على العديد من العلامات المستقلة، فإن عدد الاحتمالات الممكنة يمكن أن يتزايد بسرعة. لا تتعامل مع ذلك بإدراج كل مسار نظري كجلسة لعب كاملة وإلزامية. حدد أولاً الحواف عالية الخطورة: الخيارات التي تحكم النهايات، أو تستهلك العناصر، أو تحدد حقائق العلاقات المستمرة، أو تدمج سياقات سابقة. اختبر تلك الانتقالات ونتائجها اللاحقة المهمة مباشرة.
ثم قم بأخذ عينات من الاحتمالات بعناية. ضمّن الشروط الحدية (الحد الأدنى للقيمة التي تغير خياراً ما)، وكلا الجانبين لكل شرط حرج، والتوليفات التمثيلية للعلامات التي يمكن أن تتفاعل، والمسارات التي تصل إلى نقطة إعادة الالتقاء عبر سياقات سابقة مختلفة. أعطِ الأولوية للتغييرات الأخيرة والمسارات ذات المتطلبات المسبقة المعقدة. عندما يحتمل تفاعل متغيرين، أضف اختباراً لهذا الزوج بدلاً من افتراض أن الفحوصات الفردية المنفصلة لكل متغير تثبت نجاح التوليفة.
سجّل وحدة التغطية وحدودها. قد يتتبع الفريق ما إذا كان قد تم استخدام كل حافة خيار حرجة، وما إذا كان قد تم فحص كل شرط على أنه صحيح وخاطئ حيثما كان ذلك مناسباً، وما إذا كان قد تم الوصول إلى كل محفز للنهاية من خلال اختبار مصمم واحد على الأقل. تلك تقارير مفيدة لما تم أخذ عينات منه؛ لكن لا يثبت أي منها أنه تم استكشاف كل سياق سابق محتمل، أو تركيبة حالة، أو مشكلة في الصياغة.
يمكن أن تقدم الأبحاث المتعلقة باختبار اللعب فكرة ذات صلة ولكنها محددة النطاق. تصف ورقة غورديلو وزملاؤه لعام 2021 على arXiv وكلاء التعلم المعزز الذين تتم مكافأتهم على الإجراءات الجديدة لاستكشاف تغطية الحالة في سيناريو معقد ثلاثي الأبعاد. يتعلق هذا العمل بالاستكشاف في بيئة لعبة ثلاثية الأبعاد، وليس خيارات السرد المتشعب أو طريقة اختبار الانتقال المحددة الموضحة هنا. وهو يدعم التعامل مع الاستكشاف الآلي كمكمل محتمل، لكن لا تلك الدراسة ولا ورقة تيخونوف تثبت صحة طريقة اختبار السرد هذه بعينها. [Gordillo et al., “Improving Playtesting Coverage via Curiosity Driven Reinforcement Learning Agents”](https://arxiv.org/abs/2103.13798)
أضف تأكيدات سلبية واختبارات لعب بشرية
تؤكد التأكيدات الإيجابية وجود الخيار أو النتيجة المتوقعة. تؤكد التأكيدات السلبية عدم حدوث شيء محظور: عدم ظهور خيار مغلق، أو عدم منح دليل مستهلك مرتين، أو عدم تحفيز رسالة غائبة للسطر الخاص بها، أو عدم تعيين محاولة فاشلة لعلامة نجاح. الفحوصات السلبية مفيدة بشكل خاص حول العقد المشتركة، حيث يمكن لحالة قديمة من مسار آخر أن تتسرب إلى المشهد الحالي.
يمكن للفحوصات الآلية التحقق من منطق المسار وتغيرات الحالة الدقيقة، لكنها لا تحكم بشكل موثوق على ما إذا كان الانتقال يبدو متماسكاً، أو ما إذا كان هناك سطر يتعارض مع ما يتذكره اللاعب، أو ما إذا كان الخيار مفهوماً في سياقه. لذلك، يجب أن تستخدم اختبارات اللعب البشرية مسارات مختارة لغرض محدد: اطلب من المختبرين اتباع فرع أقل شيوعاً، أو الوصول إلى نقطة إعادة الالتقاء بسياق سابق معين، أو محاولة الوصول إلى نهاية مع فقدان مفتاح ما. راقب كلاً من الحالة الناتجة وتفسير اللاعب لها.
احتفظ بملاحظات اختبار اللعب مرتبطة بمعرفات العقد والخيارات، بالإضافة إلى الحالة الأولية والخطوات المتخذة. هذا يجعل المشكلة المبلغ عنها قابلة لإعادة الإنتاج ويساعد على التمييز بين المخاوف المتعلقة بالكتابة وعيوب المنطق. بعد الإصلاح، أعد تشغيل اختبارات الانتقال المتأثرة ومساراً تمثيلياً واحداً على الأقل عبر نقطة إعادة الالتقاء أو النتيجة التي تم تغييرها.
دورة اختبار عملية لقصة متغيرة
لكل تحديث في القصة، قم بتصدير الرسم البياني أو مراجعته، وتحديد العقد والشروط والتأثيرات ونقاط إعادة الالتقاء المتغيرة، ثم قم بتحديث مصفوفة التغطية. قم بتشغيل اختبارات انتقال الحالة المركزة أولاً؛ ثم اتبعها بعينات مسار مختارة واختبارات لعب بشرية للأقسام ذات التأثير العالي أو التي تم تغييرها حديثاً. عندما يظهر فشل، التقط حالة البداية وتسلسل الخيارات حتى يتمكن الفريق من إعادة إنتاجه، وإصلاح القاعدة أو المقطع ذي الصلة، والحفاظ على الحالة كفحص انحدار.
الهدف هو تقديم تقرير قابل للاختبار عما تم فحصه وسبب ذلك. الرسم البياني يجعل الهيكل قابلاً للفحص، واختبارات الانتقال تجعل المنطق صريحاً، وأخذ عينات الفروع يوجه الجهد نحو التباين ذي المعنى، والتأكيدات السلبية تلتقط الحالة المتسربة، واختبارات اللعب البشرية تقيم التفسير. معاً، يوفر هؤلاء تغطية مفيدة مع تضاعف المسارات، مع ترك حدود واضحة حول ما يتبقى دون اختبار.
