प्रक्रियागत रूप से उत्पन्न इलाके में वर्षा + नदी निर्माण के लिए एल्गोरिदम


52

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

इसलिए पहला कदम रखा गया है। हीरे-वर्ग एल्गोरिथ्म का उपयोग करके मैंने कुछ अच्छे हाईथैप्स बनाए हैं। अगला कदम यह है कि मैं कुछ पानी की विशेषताओं को जोड़ना चाहूंगा और उन्हें कुछ हद तक वास्तविक रूप से वर्षा के साथ उत्पन्न करूंगा। मैंने कुछ अलग-अलग तरीकों के बारे में पढ़ा है जैसे कि नक्शे के उच्च बिंदुओं पर शुरू करना, और सबसे कम पड़ोसी बिंदु पर "कदम रखना", पूलिंग / इरोडिंग के रूप में यह समुद्र के स्तर तक नीचे जाने का काम करता है।

क्या इसके साथ कोई दस्तावेज एल्गोरिदम हैं या वे कफ से अधिक हैं?

किसी भी सलाह / विचार पसंद करेंगे।


मैंने इस पेपर में वर्णित एल्गोरिदम से बिट्स और टुकड़ों को लागू किया है ।
अराजकतावादी

जवाबों:


39

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

इसके अलावा इस साइट पर प्रक्रियात्मक पीढ़ी के बारे में कुछ महान प्रश्न / उत्तर हैं।

2d ग्रिड मानचित्र पर सड़क / नदी निर्माण

प्रक्रियात्मक दुनिया पीढ़ी गेमप्ले सुविधाओं पर उन्मुख है

मैं अपने खेल में यादृच्छिक झीलों और नदियों को कैसे उत्पन्न कर सकता हूं?

रैंडम मैप जनरेशन


35

जब मैंने इस प्रकार की चीज़ के साथ प्रयोग किया (1990 के दशक के अंत में), मैंने पानी के प्रवाह के बारे में जानने के लिए कुछ कागजात और किताबें पढ़ीं, लेकिन मैंने उन लोगों का रिकॉर्ड नहीं रखा, जिन्हें मैंने देखा था। मैंने अपना काम खुद करना समाप्त कर दिया क्योंकि मैं क्षरण को संभालना चाहता था। मैं चाहता था कि नदियाँ घाटी और बाढ़ का उत्पादन करें। मैं बांध जलाशयों को तलछट से भरना चाहता था। मैं चाहता था कि नदियाँ मेन्ड्रिंग और ऑक्सीबो झीलों जैसे प्रभाव पैदा करें। मैं सिंचाई और पानी के बहाव के लिए नहरें चाहता था। मैं बाढ़ के मैदानों में खेतों और घरों को नुकसान पहुंचाना चाहता था।

मैंने इस पृष्ठ के भूगोल अनुभाग में कुछ नोट्स (लिंक) रखे । एक जोस स्टैम पेपर है जो एक अवश्य पढ़ा जाना चाहिए। दुर्भाग्य से मैंने कभी नोट्स का आयोजन नहीं किया। दुर्भाग्य से, खेल ओएस / 2 के लिए था, इसलिए मैं आसानी से आपको खेलने के लिए एक रन करने योग्य निष्पादन योग्य नहीं दे सकता। और दुर्भाग्य से, मेरा कोड भयानक है, लेकिन यदि आप एक नज़र रखना चाहते हैं, तो स्रोत कोड (ज़िप) में water.cpp देखें ।

चीजें जो मैंने अपने सिमुलेशन में निभाईं (सभी यथार्थवादी नहीं):

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

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


12
बस उसका नाम बोलो और वह आ जाएगा।
MichaelHouse

3
@ बाइटे 56 वह स्टैकटेक्छा के कैंडलजैक की तरह है ....
DampeS8N

2
आपने मुझे अपने षट्भुज ग्रिड लेख के आधार पर एक अनुकरण लिखने के लिए प्रेरित किया और अब आप मुझे फिर से प्रेरित करते हैं!
एडम एरॉल्ड

1

मैंने जिन कार्यान्वयनों को देखा है उनमें से अधिकांश या तो एक "नदी का नक्शा" (पेरलिन शोर या कुछ इसी तरह के दृष्टिकोण से एक संकीर्ण बैंड का उपयोग करके) या "रेनड्रॉप" विधि का उल्लेख कर रहे हैं।

यहाँ कुछ कूदने के बिंदु हैं:

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