आकार और अनुमत श्रेणियों को मान्य करें
id, width, height, tiles, spawn, exits और entities जैसे आवश्यक फ़ील्ड के साथ स्तर की संरचना तय करें। जाँचें कि आयाम खेल की समर्थित सीमा में धनात्मक पूर्णांक हों, tiles array में ठीक width × height प्रविष्टियाँ हों, और हर tile ज्ञात प्रकार का हो। ग्रिड के अनुसार entities के निर्देशांक सत्यापित करें और दरवाज़ों, चाबियों, स्विचों तथा उद्देश्यों के लिए अद्वितीय ID अनिवार्य करें। केवल यह जाँचना पर्याप्त नहीं कि मान संख्या है; NaN जैसे या सीमा से बाहर मानों को स्पष्ट रूप से अस्वीकार करें।
वैकल्पिक और आवश्यक फ़ील्ड अलग रखें। छोड़ी गई सजावटी पैलेट के लिए डिफ़ॉल्ट मान दें, लेकिन अगर इससे पहेली बदल सकती है तो लापता spawn बिंदु या निकास चुपचाप न गढ़ें। levels[2].entities[4].x जैसे पथ के साथ त्रुटि लौटाएँ ताकि सामग्री लेखक खराब फ़ील्ड जल्दी ढूँढ़ सके।
रिश्तों और खेलने योग्य अपरिवर्तनीयों की जाँच करें
संरचनात्मक सत्यापन के बाद, क्रॉस-फ़ील्ड नियमों की जाँच करें। प्रत्येक बंद दरवाजे में मौजूदा चाबी का संदर्भ होना चाहिए; प्रत्येक अनिवार्य कुंजी उसके दरवाजे से पहले पहुंच योग्य होनी चाहिए; निकास को ठोस टाइल के अंदर नहीं बैठना चाहिए। स्पॉन से पथ खोज चलाएँ और पुष्टि करें कि गेम के मूवमेंट नियमों के तहत आवश्यक लक्ष्यों तक पहुँचा जा सकता है। यदि दुश्मन या गतिशील प्लेटफ़ॉर्म पहुंच को प्रभावित करते हैं, तो एक सरल ग्रिड पथ का दावा करने के बजाय एक अधिक विशिष्ट सत्यापनकर्ता या प्लेथ्रू परीक्षण का उपयोग करें जो साबित करता है कि पूरा स्तर हल करने योग्य है।
सुरक्षित रूप से विफल रहें और सत्यापनकर्ता का स्वयं परीक्षण करें
MDN के अनुसार, JSON अमान्य होने पर JSON.parse एक SyntaxError देता है। इसलिए पार्सिंग की त्रुटियों को स्कीमा की त्रुटियों से अलग संभालें। विकास के दौरान सटीक फ़ाइल और टूटे हुए नियम की जानकारी दें। खिलाड़ियों वाले बिल्ड में आंशिक डेटा से शुरू करने के बजाय कोई ज्ञात वैकल्पिक स्तर लोड करें या स्पष्ट रूप से बताएं कि स्तर उपलब्ध नहीं है। अनुपस्थित फ़ील्ड, गलत संदर्भ, अवरुद्ध रास्तों और एक छोटे वैध स्तर के परीक्षण मामले रखें; वैध मामला उस वैलिडेटर से बचाता है जो हर स्तर को अस्वीकार कर देता है।
खेल स्तर डेटा सत्यापन से जुड़े सवाल
क्या सफल JSON.parse एक स्तरीय फ़ाइल पर भरोसा करने के लिए पर्याप्त है?
नहीं, पार्सिंग सिंटैक्स की पुष्टि करता है, न कि आपके गेम-विशिष्ट आकार, श्रेणियों, संदर्भों या सॉल्वैबिलिटी नियमों की। गेमप्ले कोड के स्तर को पार करने से पहले उनमें से प्रत्येक को सत्यापित करें।
क्या गेम को अमान्य स्तरों को स्वचालित रूप से सुधारना चाहिए?
केवल सुरक्षित, स्पष्ट चूक के लिए। यदि किसी लापता उद्देश्य या मार्ग की मरम्मत करने से डिज़ाइन बदल जाता है, तो स्तर को अस्वीकार कर दें और दोष को छिपाने के बजाय ज्ञात फ़ॉलबैक का उपयोग करें।
आगे पढ़ें
कोई पुरानी जानकारी दिखी? सुधार की जानकारी दें