मुझे लगता है कि मैं बेहतर समझता हूं कि आप अब क्या पूछ रहे हैं।
शोर यादृच्छिक नहीं है - यह यादृच्छिक-दिखने वाला है लेकिन पूरी तरह से एक गणितीय सूत्र पर आधारित है और दोहराए जाने योग्य है। सभी जानकारी सूत्र में एन्कोडेड है। इसका मतलब है कि आपके पास एक सूत्र हो सकता है जो संभावित रूप से एक अनंत क्षेत्र को कवर करता है, और बस उस क्षेत्र के निर्देशांक पर सूत्र का उपयोग करें जिसकी आपको आवश्यकता है। जब आपको आसन्न क्षेत्र की आवश्यकता होती है, तो आप नए निर्देशांक पर सूत्र का फिर से उपयोग करते हैं, और चूंकि सूत्र निरंतर मूल्यों की पैदावार करता है, इसलिए क्षेत्र मूल रूप से जुड़ जाएंगे।
यहाँ एक सरल उदाहरण है, ऊँचाई पीढ़ी के लिए पेरिनल शोर के बजाय साइन का उपयोग करना, और दुनिया की कल्पना करना एक्स अक्ष में अनंत है, लेकिन वाई और जेड अक्ष में केवल 1 यूनिट ऊंचा है।
सूत्र है: height(x,y) = sin(x/20)
खेल शुरू होता है, और हम पास के क्षेत्र के लिए हाइट्स उत्पन्न करते हैं, अर्थात। (0,0) से (9,0):
[0.0, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.34, 0.39, 0.43]
हमारे पास एक पहाड़ी है, जो दाईं ओर बढ़ती है। मान लीजिए कि हम इसके अंत तक चलते हैं और अब (10,0 से 19,0) मान उत्पन्न करने की आवश्यकता है:
[0.48, 0.52, 0.56, 0.61, 0.64, 0.68, 0.72, 0.75, 0.78, 0.81]
ध्यान दें कि पहाड़ी कैसे लगातार बढ़ती रहती है, और यह कि (10,0) मान एक (9,0) से अच्छी तरह से चलता है। ऐसा इसलिए है क्योंकि साइन फ़ंक्शन निरंतर है, जिसका मूल अर्थ है कि यदि आप इसे 2 आसन्न संख्याओं में फीड करते हैं, तो आपको आसन्न परिणाम की एक निश्चित परिभाषा के लिए 2 आसन्न परिणाम प्राप्त होंगे। इसलिए यदि आप अपनी दुनिया के निर्देशांक का उपयोग उस फ़ंक्शन के मापदंडों के रूप में करते हैं जो आपकी दुनिया को परिभाषित करता है, तो आपको एक निरंतर परिदृश्य मिलेगा जो एक साथ फिट बैठता है चाहे आप एक बार में कितना या कम उत्पन्न करें। जब आप नए भागों को उत्पन्न करते हैं, तो वे मौजूदा भागों से स्वचालित रूप से प्रवाहित होंगे, क्योंकि ऊंचाइयां पहले से निर्धारित हैं।
यदि दुनिया बदलने वाली नहीं है, तो आपको कुछ भी स्टोर करने की आवश्यकता नहीं है, क्योंकि आप बिल्कुल गणना कर सकते हैं कि फॉर्मूला से किसी भी बिंदु पर ऊंचाई क्या है। जाहिर है Minecraft की तरह कुछ के साथ दुनिया पूरी तरह से विकृत है इसलिए आप इसे बनाने के साथ ही प्रत्येक चंक को बचाते हैं। यह देखते हुए कि आसन्न विखंडू के बीच उच्च स्तर का तालमेल है (अर्थात यदि 1 ब्लॉक घास है, तो यह अधिक संभावना नहीं है कि इसके बगल में ब्लॉक भी घास होगा) आप डेटा को बहुत कुशलता से संपीड़ित कर सकते हैं - रन लंबाई एन्कोडिंग काम करेगा अच्छी तरह से, लेकिन फिर लगभग किसी भी मानक संपीड़न एल्गोरिथ्म होगा।
जबकि मैंने सबसे स्पष्ट मान के रूप में ऊंचाई के बारे में बात की है, आप किसी भी विशेषता को उत्पन्न करने के लिए उसी प्रणाली का उपयोग कर सकते हैं जो आप चाहते हैं। निरंतर गुणों के साथ एक गणितीय फ़ंक्शन का उपयोग करें और जहां इनपुट आपकी दुनिया के निर्देशांक हैं और जो कि लैंडमार्क, खनिज जमा, स्पॉन पॉइंट्स की उपस्थिति का फैसला कर सकते हैं, जो भी आपको पसंद है। (स्पष्ट रूप से एक सूत्र में मान दूसरे को प्रभावित कर सकता है - कोई बिंदु मध्य हवा में कोयले का जमाव नहीं रखता है, इसलिए आप विश्व ऊंचाई का नक्शा बनाते हैं और फिर केवल उन ब्लॉकों के लिए कोयला संभावनाओं की गणना करते हैं जो जमीन से काफी नीचे हैं।)