हालांकि मैं भावना से सहमत हूं: "जब तक यह एक सिद्ध मुद्दा नहीं है, तब तक इसके बारे में चिंता न करें", मुझे लगता है कि यह जल्दी के बारे में सोचने लायक है: रेट्रो-फिटिंग एक समाधान अधिक दर्दनाक है। और हां, केवल 'पास' की टाइलों को अपडेट करना वे जाने का तरीका है। लेकिन कुशलता से अपने खेल की दुनिया में वस्तुओं की भंडारण और पते की क्षमता प्रदर्शन के कारणों के लिए बहुत महत्वपूर्ण है।
आप वास्तव में यहां जो सोच रहे हैं वह एक विरल डेटा-सेट है: ऐसा कुछ जहां संभावित इंडेक्स बड़े (या असीमित) हैं, लेकिन केवल एक छोटा सा अनुपात वास्तव में उपयोग किया जाता है। मुख्य बिंदु यह है कि आप यह नहीं जानते कि किस अनुपात का उपयोग किया जाएगा।
एक विरल डेटा-सेट समस्या का मानक समाधान वास्तविक डेटा स्टोरेज से इंडेक्स / एड्रेसबिलिटी को अलग करना है। इसलिए यदि टाइल ऑब्जेक्ट महंगा है, तो इसे कॉम्पैक्ट रूप में संग्रहीत करें (उदाहरण के लिए एक फ्लैट सरणी)। लेकिन इसे एक सस्ती वस्तु के माध्यम से अनुक्रमित करने की अनुमति दें। अपने सरलतम रूप में, यह एक 2 डी (या 3 डी) मैट्रिक्स हो सकता है जिसे आप आसानी से समन्वय करके अनुक्रमित कर सकते हैं, लेकिन मैट्रिक्स में प्रत्येक आइटम बस एक सूचकांक है। आप उस इंडेक्स का उपयोग वास्तविक टाइल सामग्री को एक अलग, कॉम्पैक्ट सरणी में देखने के लिए करते हैं। यदि टाइल की सामग्री अभी तक मौजूद नहीं है, तो उन्हें सरणी के अंत में जोड़ें, और 3 डी मैट्रिक्स में सूचकांक को संग्रहीत करें।
यदि आप सामग्री को हटाने का समर्थन करना चाहते हैं तो समाधान अधिक जटिल हो जाता है (क्योंकि यह सामग्री सरणी के विखंडन की ओर जाता है), और यदि आपकी टाइल की सामग्री सस्ती है, तो सूचकांक का अतिरिक्त वजन (32-बिट या 64-बिट सूचकांकों) शायद हर एक संभावित टाइल के भंडारण से बचत को रोक देगा। यह एक अतिरिक्त लुकअप भी है, जो आपके कैशे प्रदर्शन को प्रभावित करेगा।
अप्रत्यक्ष की अतिरिक्त परतों को पेश करके आप और भी अधिक भंडारण दक्षता प्राप्त कर सकते हैं। मान लें कि आप अपनी टाइलों को विखंडू में व्यवस्थित करते हैं, और विखंडू में 64x64x64 की ग्रैन्युलैरिटी है। 125, 1, 132 की टाइल को देखते हुए, आप जानते हैं कि यह चंक (1,0,2) में आता है। तो आपके पास एक दुनिया है, जिसमें एक कॉम्पैक्ट चंक सरणी है, और चंक इंडेक्स का एक मैट्रिक्स (-1 यदि चंक मौजूद नहीं है)। प्रत्येक चंक की सामग्री (यदि मौजूद है) एक 64x64x64 मैट्रिक्स के टाइल सूचक हैं (-1 यदि टाइल अभी तक मौजूद नहीं है), और उपयोग किए गए टाइल का एक कॉम्पैक्ट सरणी। इस तरह, आप विखंडू के लिए टाइल सूचकांकों का एक बड़ा हिस्सा नहीं जलाते हैं जो कभी उपयोग नहीं किए जाते हैं। इस प्रकार के दृष्टिकोण का पालन करके, और ग्रेन्युलैरिटी के लिए समझदार संख्याओं को उठाकर, आप अपने ब्रह्मांड को बड़े पैमाने पर बढ़ा सकते हैं, और अपनी मेमोरी के उपयोग को नियंत्रण में रख सकते हैं। दरअसल, अगर आप अपना हिस्सा 32x32x32 बनाते हैं,
आप कुछ खास मतलब निकालने के लिए अपने चंक या टाइल सूचकांकों के उच्च क्रम बिट का उपयोग करने के साथ-साथ चुपके से भी कर सकते हैं। इसलिए यदि टाइल मैट्रिक्स में एक प्रविष्टि का शीर्ष बिट सेट है, तो निचले 31 बिट्स का मतलब टाइल सूचकांक नहीं है, इसके बजाय उनका मतलब 'ताना सूचकांक' या कुछ इसी तरह का है, और आप इसे अलग से बनाए गए सूची में देख सकते हैं निर्देशांक खोजने के लिए यह की ओर जाता है।