अनंत स्तर की प्रक्रियात्मक पीढ़ी


16

प्रक्रियात्मक रूप से अनंत 2 डी स्तर उत्पन्न करने के लिए कुछ अच्छे दृष्टिकोण क्या हैं? स्तर को किसी भी आयाम में विवश किया जा सकता है लेकिन जरूरी नहीं।

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

चर्चा की खातिर, आप पूरे स्तर पर बिखरे हुए बिजली अप आदि के साथ एक शीर्ष नीचे क्षुद्रग्रह क्षेत्र के रूप में सोच सकते हैं।


2
यह संबंधित प्रतीत होता है: gamedev.stackexchange.com/questions/2230/…
jacmoe

^ और इस प्रकार यह दाईं ओर "संबंधित" कॉलम में है। लिंक करने की आवश्यकता नहीं है।
Ricket

7
और फिर यह "जुड़ा हुआ" और साथ ही "संबंधित" बन गया - नीट, हुह? :)
२०:५० पर जैकोमो

जवाबों:


6

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

एक तरफ के रूप में, आप ग्रिड के रूप में निर्देशांक को एक वर्गाकार दुनिया में अपनी बेतरतीब दुनिया बनाने के लिए सही ढंग से उपयोग करके, अपनी दुनिया के लेआउट को ठीक से बनाये रखने में सक्षम हो सकते हैं। इसलिए, जब खिलाड़ी क्षेत्र छोड़ता है, तो आप इसे छोड़ सकते हैं, और जब खिलाड़ी वापस आता है, तो आप इसे बीज से वापस प्राप्त कर सकते हैं।


4
दुनिया को कभी-कभार केंद्रित करके इस समस्या को दरकिनार किया जा सकता है।
जोनाथन फिशऑफ

फ्लोटिंग पॉइंट संख्या अधिक होने पर न केवल पूर्णांक रैप-अराउंड बल्कि छोटे फ्लोटिंग पॉइंट परिवर्तन की अशुद्धियों के बारे में भी जागरूक रहें। इसे आज़माएँ: float pos = 1000000000.0f; float nextPos = pos + 0.001f; float diff = nextPos - pos; मेरी मशीन पर, ०.
ten

ये सभी अच्छे बिंदु हैं। मुझे लगता है कि जब भी वर्गों का एक नया सेट उत्पन्न होता है, तब तक निर्देशांक पुनरावृत्ति करना उचित होगा, जब तक कि यह पर्याप्त रूप से कुशल हो।
कॉलिन गिस्लासन

संयोग से यह वही समाधान है जैसा कि Minecraft के पीसी संस्करण में :) :) निश्चित पूर्णांक + फ्लोट विच के लिए मेरी राय में सबसे अच्छा समाधान है
GameDeveloper
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.