खेलों के लिए अंतरिक्ष विभाजन में कला की स्थिति क्या है? [बन्द है]


18

मैं बीएसपी के पेड़, ऑक्ट्रीज़ और पोर्टल के बारे में जानता हूं, जहां लंबे समय तक इस्तेमाल किया जाता है। लेकिन आधुनिक खेल अभी भी इस प्रणाली का उपयोग करते हैं या वे नई चीजों का उपयोग कर रहे हैं?

यदि यह पेशेवरों और विपक्षों के साथ संभव है, तो प्रतिपादन और टकराव का पता लगाने पर विचार करना चाहिए।


यह पूर्ण उत्तर का वारंट नहीं करता है, लेकिन स्थानिक हैशिंग या तो एक नया विचार है; या इसके पक्ष में पड़ गया है। यह सब कुछ के लिए नहीं है, लेकिन एक बड़ा पक्ष यह है कि इसे लागू करना आसान है।
जोनाथन डिकिंसन

जवाबों:


15

हां, अवास्तविक इंजन 3 उदाहरण के लिए अभी भी बीएसपी का उपयोग करता है - मुख्यतः क्योंकि यह सीएसजी प्रक्रिया के दौरान उपयोग किया जाता है। Doom3 / id टेक 4 पोर्टल्स का उपयोग करता है, और मुझे लगता है कि मैंने कुछ पढ़ा है कि आईडी 5 बीएसपी पेड़ों पर वापस आ गया है। कुछ खेल हैं जो अष्टक का उपयोग करते हैं। खेल में, मेरी समझ यह है कि UE3 रोड़ा प्रश्नों के साथ अधिक गतिशील दृष्टिकोण में चला गया, लेकिन मुझे आश्चर्य होगा कि यदि वे बीएसपी का उपयोग कम से कम यह निर्धारित करने के लिए नहीं करते हैं कि कौन से स्थिर जाल दृष्टि में हैं। अन्य खेल बस दृश्य-हताशा का उपयोग कर सकते हैं (उदाहरण के लिए सभ्यता।) यह वास्तव में आप किस प्रकार के खेल को देखते हैं पर निर्भर करता है।

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

वास्तव में आधुनिक दृष्टिकोण के लिए, Umbra को देखें , जो दृश्यता प्रश्नों के लिए एक मिडलवेयर है। यदि आप वेब को थोड़ा खोजते हैं, तो आपको कुछ मास्टर थीसिस ढूंढनी चाहिए, जो कि उम्रा की शुरुआती शुरुआत का वर्णन करती हैं।

नीचे पंक्ति: क्या आप बीएसपी / ऑक्ट्री / नो एएस का उपयोग करना चाहते हैं, उस गेम के प्रकार पर निर्भर करेगा जो आप बनाना चाहते हैं। यदि आपके स्तर ज्यादातर स्थिर हैं, तो आपको इसका लाभ उठाना चाहिए और कुछ स्थिर त्वरण संरचना का निर्माण करना चाहिए। यदि सब कुछ गतिशील है, तो आपको निश्चित रूप से एक और दृष्टिकोण की आवश्यकता है।

टक्कर का पता लगाने के लिए, मैं बुलेट और PhysX और उनके टक्कर का पता लगाने वाले एल्गोरिदम पर एक नज़र डालूंगा। लेकिन मेरी भावना यह है कि भौतिकी के समाधान दृश्यता से कम बंधे होते हैं, जैसा कि वे करते थे - एक भौतिकी समाधान एक GPU आधारित बीवीएच का उपयोग करना चाहता हो सकता है, उस स्थिति में, दृश्यता प्रश्नों के लिए उपयोग करने का प्रयास करने के लिए बहुत समझदारी नहीं है।


15

मैं ईमानदारी से नहीं जानता कि अगले-जनरल इंजन इन दिनों क्या उपयोग कर रहे हैं, लेकिन मैं आपको बताऊंगा कि मुझे क्या पता है। एक अनुकूलन और उस अनुकूलन में सहायता करने के लिए उपयोग किए गए डेटा संरचना के बीच भ्रमित होना आसान है। नीचे वर्णित सभी चीजें हालांकि अनुकूलन के लिए हैं, लेकिन मैं इंगित करता हूं कि विशेष रूप से डेटा संरचनाएं कौन सी हैं।

बीएसपी : डेटा संरचना - गतिशील गतिशील वस्तुओं और स्थिर विश्व ज्यामिति के बीच चौराहे का पता लगाने के लिए। एक ज़ब्फ़र के बिना सही ढंग से ज्योमेट्री की टक्कर का पता लगाने और रेंडरिंग दोनों के लिए इस्तेमाल किया जा सकता है, लेकिन अब रेंडरिंग के लिए इसका उपयोग नहीं किया जाता है क्योंकि अब हमारे पास एज़ बफर के लिए पर्याप्त मेमोरी है। वे तकनीकी रूप से थोड़े अलग तरीके से उत्पन्न हुए हैं, लेकिन अभी भी एक ही प्रकार का पेड़ माना जाता है। प्रीप्रोसेसिंग की आवश्यकता है।

ऑक्ट्री या केडी-ट्री : डेटा संरचना - यह निर्धारित करने के लिए उपयोग किया जाता है कि सभी गतिशील वस्तुओं पर n ^ 2 चेक करने से बचने के लिए ऑब्जेक्ट एक ही "सेल" या क्षेत्र में क्या हैं।

ये अकेले नहीं हैं, लेकिन शायद सबसे आम हैं। बहुत सारे अनुकूलन भी हैं जो इंजन को सामान्य रूप से ज्यामिति प्रदान करने से बचने की अनुमति देते हैं। लेकिन निम्नलिखित सिर्फ ज्यामिति को खत्म कर देता है, और आमतौर पर इसका उपयोग इसके लिए किया जाता है:

पोर्टल्स : तकनीकी रूप से डेटा संरचना नहीं है, लेकिन विशेष रूप से पुलिंग करना आवश्यक है। दृश्य से विश्व ज्यामिति और गतिशील वस्तु ज्यामिति के दृश्यता के लिए उपयोग किया जाता है। मुझे लगता है कि दुनिया को उन क्षेत्रों में विभाजित करने के लिए आवश्यक है। लेकिन मैंने वास्तव में इसे लागू नहीं किया है, इसलिए मुझे नहीं पता।

ऑक्यूलेशन कॉल्डिंग : ऑप्टिमाइज़ेशन - जो भी आप चाहते हैं, शायद गतिशील वस्तुओं के लिए दृश्यता के लिए उपयोग किया जाता है।

रेग्युलर व्यूपोर्ट कुलिंग : ऑप्टिमाइज़ेशन - उन वस्तुओं को खींचता है जो कैमरे के दृश्य में नहीं हैं।

अधिक व्यूपोर्ट पुलिंग : अनुकूलन - नियमित व्यूपोर्ट पुलिंग को ऑक्ट्री का उपयोग करके और भी अधिक अनुकूलित किया जा सकता है। आप ऑक्ट्री की पूरी कोशिकाओं को बाहर निकाल सकते हैं जो कैमरे के पीछे हैं या नहीं। इसमें इलाके के पैच शामिल हैं (यदि आप बाहर हैं)। ऑक्ट्री द्वारा जो कुछ भी नहीं लिया गया है आप "नियमित व्यूपोर्ट पुलिंग" करेंगे। फिर, जो कुछ बचा है, आप प्रस्तुत करेंगे।

बैकफेस कुलिंग : ऑप्टिमाइज़ेशन - रेखापुंज को रोकने के लिए कैमरे से दूर ज्यामिति का सामना करता है। आमतौर पर हार्डवेयर में किया जाता है अगर रेंडर स्टेट ठीक से सेट हो।

विशेष मामला डेटा संरचनाएं:

एएबीबी के पेड़ या स्फियर के पेड़ : ये विशेष प्रकार की डेटा संरचनाएं हैं। वे एक अवतल आकृति को उत्तल एक में बदल देते हैं। उदाहरण के लिए हड्डियों के साथ एक चरित्र तकनीकी रूप से अवतल है। यह इसे छोटे उत्तल टुकड़ों में तोड़ता है। टकराव का पता लगाने के लिए एक अनुकूलन के रूप में इस्तेमाल किया जा सकता है, गतिशील वस्तुओं (आमतौर पर) की दृश्यता कलिंग, और उत्तल परीक्षणों को करना आसान बनाता है क्योंकि यह उत्तल है। ये आम तौर पर गतिशील वस्तुएं होने के कारण, एक ऑक्ट्री के अंदर जाते हैं। ये भी रोड़ा अनुकूलन के साथ सहायता के लिए इस्तेमाल किया जा सकता है।

ऐसा कोई कारण नहीं है कि आपको सब कुछ का प्रतिनिधित्व करने के लिए एकल संरचना का उपयोग करना पड़े (जैसे कि दृश्य ग्राफ)। मेरी राय में, आप किसी प्रकार के एक सामान्य प्रयोजन वृक्ष का उपयोग करने के प्रयास के बजाय विभिन्न कार्यों के लिए विभिन्न डेटा संरचनाओं का उपयोग करना बेहतर होगा। उदाहरण के लिए, मैं वर्तमान में जिस इंजन पर काम कर रहा हूं, मैं निम्नलिखित अनुकूलन के साथ बीएसपी / ऑक्ट्री / एएबीबी ट्री संयोजन को लागू करने की योजना बना रहा हूं: क्रॉलिंग, व्यूपोर्ट, और निश्चित रूप से, बैकफेस कुलिंग। इसका मतलब है कि मेरे पास एक बीपीएस ट्री, एक ऑक्ट्री और संभवत: उस ऑक्ट्री के भीतर कई एनाब के पेड़ होंगे।

सबसे अच्छा डेटा संरचनाओं और एल्गोरिदम / अनुकूलन का चयन शायद सबसे बड़ा और सबसे फायदेमंद चीज है जो आप अपने इंजन के लिए कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.