एक सामान्य अंतरिक्ष विभाजन एल्गोरिदम का उपयोग करें, जैसे कि क्वाडट्री, ऑक्ट्री, बीएसपी ट्री, या यहां तक कि एक साधारण ग्रिड सिस्टम। प्रत्येक के पास प्रत्येक विशिष्ट परिदृश्य के लिए अपने स्वयं के पेशेवरों और विपक्ष हैं। आप इन पुस्तकों में उनके बारे में अधिक पढ़ सकते हैं ।
आम तौर पर (या तो मैंने सुना है, मैं इसके पीछे के तर्क से बहुत परिचित नहीं हूं) एक क्वाडट्री या ऑक्ट्री बाहरी वातावरण के लिए बेहतर फिट है, जबकि बीएसपी का पेड़ इनडोर दृश्यों को बेहतर ढंग से फिट करता है। और क्वाडट्री या ऑक्ट्री का उपयोग करने के बीच का चुनाव इस बात पर निर्भर करता है कि आपकी दुनिया कितनी सपाट है। यदि एक ऑक्ट्री का उपयोग करके वाई अक्ष में थोड़ा बदलाव होता है तो यह बेकार हो जाएगा। एक ऑक्ट्री मूल रूप से एक अतिरिक्त आयाम के साथ एक क्वाडट्री है।
अंत में, ग्रिड समाधान की सादगी की अवहेलना न करें। बहुत से लोग इस बात को नज़रअंदाज़ करते हैं कि एक साधारण ग्रिड कभी-कभी उनकी समस्याओं के लिए पर्याप्त (और अधिक कुशल) भी हो सकता है, और इसके बजाय एक अधिक जटिल समाधान पर सीधे कूद सकता है।
ग्रिड के उपयोग से दुनिया को समान रूप से विभाजित क्षेत्रों में विभाजित किया जा सकता है और दुनिया के उपयुक्त क्षेत्र में संस्थाओं को संग्रहीत किया जा सकता है। फिर, एक स्थिति दी गई है, पड़ोसी संस्थाओं को ढूंढना उन क्षेत्रों पर पुनरावृत्ति करने का विषय होगा जो आपकी खोज की त्रिज्या को बाधित करते हैं।
मान लीजिए कि आपकी दुनिया XZ विमान में (-1000, -1000) से (1000, 1000) तक है। उदाहरण के लिए आप इसे 10x10 ग्रिड में विभाजित कर सकते हैं, जैसे:
var grid = new List<Entity>[10, 10];
फिर आप संस्थाओं को ग्रिड में उनकी उपयुक्त कोशिकाओं में जगह देंगे। उदाहरण के लिए XZ (-1000, -1000) के साथ एक इकाई सेल (0,0) पर गिरेगी जबकि XZ (1000, 1000) के साथ एक इकाई सेल (9, 9) पर गिरेगी। फिर दुनिया में एक स्थिति और एक त्रिज्या को देखते हुए, आप यह निर्धारित कर सकते हैं कि कौन से सेल इस "सर्कल" द्वारा प्रतिच्छेद किए जाते हैं और केवल उन पर पुनरावृति करते हैं, जिनके लिए एक सरल डबल है।
वैसे भी, सभी विकल्पों पर शोध करें और जो आपके खेल को बेहतर लगे, उसे चुनें। मैं मानता हूं कि मैं अभी भी इस विषय पर पर्याप्त जानकार नहीं हूं कि यह निर्णय लेना है कि कौन सा एल्गोरिदम आपके लिए सबसे अच्छा होगा।
संपादित करें पर यह मिला एक और मंच है और यह निर्णय के साथ आप मदद कर सकता है:
ग्रिड सबसे अच्छा काम करते हैं जब विशाल बहुमत ऑब्जेक्ट ग्रिड स्क्वायर के भीतर फिट होते हैं, और वितरण काफी समरूप होता है। इसके विपरीत, क्वाडट्रैस तब काम करते हैं जब ऑब्जेक्ट्स का वेरिएबल साइज होता है या छोटे क्षेत्रों में क्लस्टर किए जाते हैं।
समस्या के आपके अस्पष्ट विवरण को देखते हुए, मैं ग्रिड समाधान के खिलाफ भी झुक रहा हूं (जो है, यह मानते हुए कि इकाइयां छोटी हैं और काफी सजातीय रूप से वितरित हैं)।