मुझे लापता संसाधनों को कैसे संभालना चाहिए?


13

आपका खेल एक निश्चित संपत्ति लोड होने की उम्मीद करता है, लेकिन यह नहीं मिला है। स्थिति को कैसे संभाला जाना चाहिए? उदाहरण के लिए:

Texture* grassTexture = LoadTexture("Grass.png"); // returns NULL; texture not found
Mesh* car             = LoadMesh("Car.obj");      // returns NULL; 3D mesh not found

हो सकता है कि यह गलती से उपयोगकर्ता द्वारा हटा दिया गया हो, विकास के दौरान दूषित या गलत वर्तनी वाला हो।

कुछ संभावित प्रतिक्रियाएँ:

  • दावे (आदर्श रूप से केवल विकास के दौरान)
  • खेल शान से बाहर निकलें
  • एक अपवाद फेंको और इसे संभालने की कोशिश करो।

कौन सा तरीका सबसे अच्छा है?


यदि खेल डेटा अभी भी बरकरार है, तो इसे करने का एक तरीका सत्यापित है। यदि स्वचालित रूप से लापता डेटा को फिर से डाउनलोड नहीं किया गया है। त्रुटि> उपयोगकर्ता को डेटा सत्यापित करने के लिए कहें> डाउनलोड करें। आपको स्पष्ट रूप से इसके लिए एक छोटा उपकरण बनाने की आवश्यकता है।
सिदार

@Sidar मुझे पसंद है कि आपने सबसे ज्यादा मत वाले उत्तर से अधिक क्या कहा शायद आप बेहतर बता सकते हैं कि आप क्या कहना चाह रहे हैं
अवधारणा 3d

त्रुटियों की उग्रता यह है कि कभी-कभी यह खेल को तोड़ देता है और लोग इसे खेल नहीं सकते / इसे शुरू नहीं कर सकते। उदाहरण के लिए स्टीम में यदि आपका गेम ठीक से काम नहीं कर रहा है तो आप गेम डेटा को सत्यापित कर सकते हैं। जब कुछ भ्रष्ट लगता है / गायब / परिवर्तित स्टीम स्वचालित रूप से उन फ़ाइलों को फिर से डाउनलोड करेगा। मुझे नहीं पता कि वे इसे कैसे करते हैं। लेकिन वे स्पष्ट रूप से कुछ आंकड़ों के खिलाफ इसकी जांच करते हैं। शायद हैश कोड? मैं वास्तव में नहीं जानता। लेकिन आपके पास हमेशा एक मानक प्रतिस्थापन संपत्ति होनी चाहिए (बस बनावट जो उस पर या कुछ और पर "त्रुटि" कहती है)
सिदवर

@Sidar क्यों यह एक जवाब में अच्छी तरह से प्रारूपित नहीं है?
कांसेप्ट

क्योंकि मुझे नहीं पता कि यह कैसे काम करता है और इसके बारे में गलत जानकारी नहीं देना चाहता। इसलिए मैं आपको उचित जवाब नहीं दे सकता था।
सिदार

जवाबों:


19

खेल के बहुत सारे एक सामान्य "त्रुटि सामग्री" और "त्रुटि जाल" है जो वास्तव में देखने के लिए स्पष्ट है। इस लॉग में चेतावनी के साथ जोड़ी, बिल्कुल।


इस पोस्ट से पूरी तरह से सहमत हैं। हालाँकि आप रिलीज़ / वितरित बिल्ड में अलग-अलग चीज़ें करना चाहते हैं।
जोंकेल

रिलीज के लिए बनाता है एक गुम या अमान्य फ़ाइलों को डाउनलोड करने के लिए हैशिंग का उपयोग करके उपलब्ध फ़ाइलों को मान्य करने के लिए एक दृष्टिकोण के बारे में सोच सकता है। हालांकि विकास के दौरान यह निश्चित रूप से आपका ध्यान आकर्षित करने के लिए एक काले और मैजेंटा बिसात की बनावट प्रदर्शित करने के लिए सबसे अच्छा दृष्टिकोण है। मॉडल के लिए एक विशाल ERROR मॉडल का उपयोग किया जा सकता है जो स्पष्ट होना चाहिए।
क्रिश्चियन इविसेविच

यह बनावट के लिए समझ में आता है। 3 डी मॉडल्स के लिए इतना नहीं। क्या होगा अगर अधिकांश 3 डी मॉडल गायब थे? खेल अजीब लगेगा, जबकि इसे पहली जगह में खेलना चाहिए। यदि आप 3D मॉडल के ज्यामितीय गुणों के आधार पर अपने स्थानिक डेटा संरचना आधार की गणना करते हैं तो क्या होना चाहिए। लापता बनावट जैसी साधारण परिस्थितियों में ही मैं इसके साथ हूं। लेकिन मुझे लगता है कि व्यावसायिक खेलों के लिए डेटा पूर्णता की जाँच करना बेहतर दृष्टिकोण है।
concept3d 5

1
@ concept3d - मुझे पता है कि कम से कम स्रोत इंजन में एक बड़ा, स्पष्ट त्रुटि जाल है (मैंने इसे कभी-कभी डोटा 2 परीक्षण क्लाइंट में देखा है, जब वे नायक जोड़ रहे थे)। मैं सहमत हूं कि यदि बड़े स्तर के डेटा गायब हैं, तो शायद यह केवल सबसे अच्छा है, विशेष रूप से एक रिलीज बिल्ड में त्रुटि करना, लेकिन डिबगिंग उद्देश्यों के लिए एक बड़ा प्रश्न चिह्न नृत्य के आसपास होना बहुत बुरा नहीं है।
रॉबर्ट फ्रेजर

6

यदि आपके पास एक ही बनावट की विभिन्न रिज़ॉल्यूशन संपत्तियाँ हैं , तो आप एक अलग रिज़ॉल्यूशन का उपयोग करके स्थिति को उबारने का प्रयास कर सकते हैं।

Texture* grassTexture;
try {
    grassTexture = LoadTexture("Grass.png");
} catch (WhateverExcaption e) {
    grassTexture = LoadTexture("Grass_512.png");
}

यहां तक कि अगर वह विफल रहता है, तो जमानत का समय हो सकता है।


2
आप कैच में टॉगल जोड़ सकते हैं ताकि देव में आपको हमेशा गायब जाली / टेक्स दिखाई दे लेकिन प्रकाशित होने पर यह पहले ठीक होने की कोशिश करेगा और शायद कम स्पष्ट लापता बनावट हो।
DampeS8N
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.