التحقق من صحة الشكل والنطاقات المسموح بها
حدّد بنية المستوى وحقوله المطلوبة، مثل id وwidth وheight وtiles وspawn وexits وentities. تحقّق من أن الأبعاد أعداد صحيحة موجبة ضمن الحدود التي تدعمها اللعبة، وأن مصفوفة tiles تحتوي بالضبط على width × height عنصرًا، وأن كل tile يستخدم نوعًا معروفًا. تحقّق من إحداثيات الكيانات بالنسبة إلى الشبكة، واشترط معرّفات فريدة للأبواب والمفاتيح والمفاتيح الكهربائية والأهداف. لا يكفي التحقق من أن القيمة رقم؛ ارفض صراحةً القيم الشبيهة بـ NaN والقيم الخارجة عن النطاق.
افصل الحقول الاختيارية عن المطلوبة. عيّن قيمة افتراضية للوحة ألوان زخرفية محذوفة، لكن لا تخترع بصمت نقطة ظهور أو مخرجًا مفقودًا إذا كان ذلك سيغيّر اللغز. أعد الأخطاء مع مسار مثل levels[2].entities[4].x كي يتمكن محرر المحتوى من العثور سريعًا على الحقل المعيب.
التحقق من العلاقات والثوابت القابلة للعب
بعد التحقق من الصحة الهيكلية، تحقق من القواعد المشتركة بين الحقول. يجب أن يشير كل باب مغلق إلى مفتاح موجود؛ يجب أن يكون كل مفتاح إلزامي يمكن الوصول إليه قبل بابه؛ يجب ألا يجلس المخرج داخل بلاطة صلبة. قم بإجراء بحث عن المسار من مكان النشر وتأكد من إمكانية الوصول إلى الأهداف المطلوبة بموجب قواعد حركة اللعبة. إذا كان الأعداء أو المنصات المتحركة تؤثر على الوصول، فاستخدم أداة تحقق أكثر تحديدًا أو اختبار تشغيل بدلاً من المطالبة بمسار شبكة بسيط يثبت أن المستوى بأكمله قابل للحل.
افشل بأمان واختبر المدقق نفسه
توضح MDN أن JSON.parse يطلق SyntaxError عندما يكون JSON غير صالح، لذا عالج أخطاء التحليل بمعزل عن أخطاء المخطط. أثناء التطوير، اذكر الملف المحدد والقاعدة التي لم تتحقق. وفي نسخة اللاعبين، حمّل بديلًا معروفًا أو اعرض بوضوح أن المستوى غير متاح بدلًا من بدء اللعب ببيانات ناقصة. احتفظ بحالات اختبار للحقول المفقودة والمراجع غير الصحيحة والمسارات المسدودة ومستوى صغير صالح؛ فالحالة الصالحة تمنع أداة التحقق من رفض كل المستويات.
أسئلة عن التحقق من صحة البيانات على مستوى اللعبة
هل نجاح JSON.parse كافٍ للثقة في ملف المستوى؟
لا. يؤكد التحليل بناء الجملة، وليس الشكل أو النطاقات أو المراجع أو قواعد قابلية الحل الخاصة باللعبة. تحقق من صحة كل منها قبل تمرير المستوى إلى رمز اللعب.
هل يجب على اللعبة إصلاح المستويات غير الصالحة تلقائيًا؟
فقط من أجل الإعدادات الافتراضية الآمنة التي لا لبس فيها. إذا أدى إصلاح هدف أو مسار مفقود إلى تغيير التصميم، فارفض المستوى واستخدم خيارًا احتياطيًا معروفًا بدلاً من إخفاء الخلل.
للمزيد من القراءة
هل لاحظت معلومة قديمة؟ الإبلاغ عن تصحيح