मेरा सुझाव
बहुत से छोटे पीएनजी बहुत अधिक नेटवर्क ओवरहेड जोड़ देंगे (क्योंकि HTTP अनुरोधों के आकार के कारण, लेकिन पीएनजी हेडर भी, और, शायद इससे भी महत्वपूर्ण बात, प्रभावोत्पादक रूप से संपीड़ित करने की अक्षमता)। दूसरी ओर, एक बहुत बड़े पीएनजी में कमियां हैं जिन्हें लोड होने में कुछ समय लगता है, और मेमोरी के लगातार चंक में स्थायी रूप से मेमोरी (10,000 मेगाबाइट्स के लिए 10,000 टाइल) में रहने की आवश्यकता होती है।
मेरा सुझाव है मध्यम जमीन देता : उदाहरण के लिए 1024 × टाइल आकार 32 × 32 के लिए, कई उचित आकार के पीएनजी । हो सकता है कि थीम द्वारा वर्गीकृत किया गया हो (उदाहरण के लिए, वन टाइल्स के साथ एक पीएनजी, पहाड़ की टाइलों के साथ एक, शहर की टाइलों के साथ एक और - मुझे आपके गेम की थीम नहीं पता है, लेकिन आपको विचार मिलता है)।
कैश दक्षता के बारे में ध्यान दें
मेमोरी एक्सेस दक्षता के कारण, आपको कभी नहीं करना चाहिए अपनी स्प्राइटशीट भी चौड़ा करना । 128 × 8192 छवि से ब्लिंगिंग टाइलें हमेशा 8192 × 128 छवि से ब्लिटिंग की तुलना में तेज़ होंगी।
कल्पना कीजिए कि आप 8192 × 128 की छवि में पहली टाइल को ब्लिट करना चाहते हैं। सरलता के लिए, मान लें कि 1 पिक्सेल 1 बाइट है। पिक्सल की पहली दो पंक्तियों को इस तरह से रखा गया है (कोशिकाओं में मेमोरी में उनकी बाइट संख्या होती है):
┌────┬────┬───┬────┬──────────┬─────┐
│ 0 │ 1 │...│ 31 │ .... │ 8191│ 1st line of pixels: bytes 0 to 8191
├────┼────┼───┼────┼──────────┼─────┤
│8192│8193│...│8223│ .... │16383│ 2nd line of pixels: bytes 8192 to 16383
├────┼────┼───┼────┼──────────┼─────┤
│ .. │ .. │...│ .. │ .... │ ... │
तो पहले शीर्षक की पहली पंक्ति को धुंधला करने के लिए , ब्राउज़र इंजन बाइट्स 0
को31
पुनः प्राप्त करेगा । दूसरी पंक्ति को धुंधला करने के लिए , यह बाइट्स 8192
को8223
पुनः प्राप्त करेगा , और इसी तरह 32 वीं पंक्ति तक जहां बाइट्स 253952
को253983
पुनः प्राप्त किया जाए।
संसाधित बाइट्स की कुल संख्या 32 × 32 होगी। हालाँकि, कुल मेमोरी रेंज 253984 बाइट्स से अधिक है। एक आधुनिक सीपीयू पर, इसका मतलब है 32 या 33 कैश स्टॉल । इसके विपरीत, यदि छवि 128 × 8192 थी, तो मेमोरी रेंज केवल 4000 बाइट्स होगी, जिसका अर्थ है कि दो कैश स्टालों से अधिक नहीं।
क्योंकि आज के सीपीयू बहुत तेज़ हैं, कैश स्टॉल बहुत महंगे हैं और हैंग कंपटीशन हैं। तो 8192 × 128 छवि के बजाय 128 × 8192 छवि का उपयोग करना संभावित रूप से 8 गुना तेज है, कम से कम सिद्धांत में। व्यवहार में यह निर्भर करेगा कि ब्लिटिंग कैसे लागू की जाती है: यह संभव है कि अंतर्निहित इंजन समस्या को कम करने के लिए टाइलों में छवियों को विभाजित करता है।
यह सही तरीके से व्याख्या करना आसान नहीं है और मुझे बहुत विस्तार की उम्मीद नहीं थी। मुझे आशा है कि यह समझ में आता है!