एक सरल नक्शा, चार बायोम और उन्हें कैसे वितरित किया जाए


16

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

कहा जाता है कि स्क्रीन के 2 डी मानचित्र के रूप में माने जाने वाले ओवरवर्ल्ड को शायद चार अलग-अलग थीम या बायोम - घास के मैदान, रेगिस्तान, बर्फ और दलदल, जैसे कि स्क्रीन की कुल राशि के साथ वितरण करना चाहिए। मान लीजिए कि नक्शा 8x8 है, जो 64 अद्वितीय स्क्रीन देता है। उनमें से आधे घास के मैदान हो सकते हैं, एक चौथाई रेगिस्तान, और दलदल और बर्फ एक चौथाई हो सकते हैं:

कस्बों और शुरू करने के स्थान के साथ एक संभावित दुनिया के नक्शे का मजाक, लेकिन कोई कालकोठरी प्रवेश नहीं करता है

ऐसा लगता है कि पैलेट की कमी ने बर्फ को दलदल के समान रंग बना दिया है। मूल रूप से, निचले कोने में आठ बर्फ की स्क्रीन थीं, और बीच में थोड़ा चौंका हुआ आठ स्क्रीन वाला दलदल क्षेत्र था। क्षमा करें 'डटकर, और कृपया स्थान मार्करों को अनदेखा करें।

सबसे अच्छा मुझे कुछ स्नैकिंग आकार मिल सकता था, और अक्सर बर्फ के माध्यम से रेगिस्तान स्नैकिंग (या इसके विपरीत) जैसे निरर्थक संयोजनों के साथ पर्याप्त था। मैं अपने जीवन के लिए यह पता नहीं लगा सकता कि यह कैसे अच्छा और जर्जर हो सकता है, अकेले ही इसे जलवायु (?) का अर्थ दें। तो मैं मॉकअप की तरह एक बायोम मैप कैसे जेनरेट करता हूं?

ठीक है, अनुरोध से: दुनिया वास्तव में उस उदाहरण से बहुत बड़ी नहीं है, और मुझे जो कुछ भी चाहिए वह सिर्फ कुछ बूँदें फैलाने का एक तरीका है जो विषयगत उपस्थिति का निर्धारण करता है, अतिरिक्त सीमा के साथ कि बर्फ रेगिस्तान को छू नहीं सकती है। स्क्रीन स्क्रॉल नहीं करते हैं, और यदि कोई स्क्रीन "रेगिस्तान" पर सेट है, तो उस पर कहीं भी घास नहीं होगी।


क्या आप तीसरे पक्ष के पुस्तकालयों का उपयोग करने के इच्छुक हैं, या क्या आप अपना स्वयं का समाधान कोड करना चाहते हैं?
विलियम मैरिजेन 20

मैं अपनी खुद की कोडिंग करना पसंद करूंगा
काव

बायोम के आकार तय होते हैं?
kaoD

क्या आप उस सटीक नियमों की सूची के साथ पोस्ट को संपादित कर सकते हैं जिसे आप चाहते हैं कि मानचित्र पीढ़ी का अनुसरण करें? हमारे लिए यह जानना आसान होगा कि हम जिस समस्या के लिए जा रहे हैं, उस समस्या से कैसे निपटें।
विलियम मैरीजर

संपादित, और बायोम आकार, ठीक है, मैं उदाहरण के लिए उन लोगों के साथ गया था। एक 16x16 दुनिया के लिए, डेजर्ट सकता है अभी भी क्षेत्र के एक चौथाई और इतने पर हो सकता है, लेकिन यह है कि ज्यादातर गारंटी करने के लिए कुछ क्षेत्रों वहाँ होगा।
कावा

जवाबों:


8

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

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

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

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

वह ऊंचाई नक्शा पेर्लिन शोर, या हीरे के वर्ग, या यहां तक ​​कि पूरे अन्य सीए मॉडल का परिणाम हो सकता है। वास्तव में, आप उस नक्शे को संशोधित कर सकते हैं जैसे ही समय प्लेट टेक्टोनिक्स द्वारा मॉडलिंग करता है, पहाड़ों को ऊपर धकेलता है, खाइयों में डूबता है, और यहां तक ​​कि नदियों को घाटी बनाने वाले परिदृश्य को कम करने देता है।

यह खरगोश छेद हमेशा के लिए फैलता है।


सीए के सुझाव के लिए Upvoting। यह वालमंड की टिप्पणी के साथ अच्छी तरह से मेल खाता है।
काव

आपको आश्चर्य होगा कि इस समस्या का एक CA समाधान कितना सरल हो सकता है। सरल नियम और एक यादृच्छिक शुरुआती नक्शा उल्लेखनीय रूप से विस्तृत और 'यथार्थवादी' दिखने वाले परिदृश्य का उत्पादन कर सकते हैं।
DampeS8N

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

1
बर्फ / रेगिस्तान समस्या का एक वैकल्पिक समाधान एक अलग प्रकार के बायोम बनाने के लिए एक नियम है जहां बर्फ रेगिस्तान से मिलती है। कहते हैं, दलदल। फिर दलदल सामान्य रूप से बढ़ सकता है। आपके पास अभी भी बर्फ / रेगिस्तान की सीमाएं हो सकती हैं, लेकिन वास्तव में यह कुछ हद तक स्वाभाविक है। वास्तव में, पृथ्वी पर अधिकांश रेगिस्तान बर्फ में ढके हुए हैं। - संक्षेप में, बर्फ का नियम ऐसा हो सकता है कि यदि कोई पड़ोसी रेगिस्तान है, तो वह दलदल में बदल जाता है।
DampeS8N

11

संक्षिप्त उत्तर लेकिन आपको वास्तव में इस लेख को देखना चाहिए- www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/ यह सूखी भूमि और बायोम की यादृच्छिक पीढ़ी की पीढ़ी पर एक एल्गोरिथ्म की व्याख्या करता है नामित आर्द्रता क्षेत्रों और ऊंचाई क्षेत्रों के आधार पर। लेकिन आपके मामले में, वितरण के लिए अपने स्वयं के मान निर्धारित करें जो आप चाहते हैं।

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

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

प्रत्येक स्क्रीन को इन बिंदुओं में से एक के साथ संबद्ध करें, जो XY निर्देशांक (4.5, 8.5) में स्क्रीन के केंद्र को ले जाकर किया जाता है और बिंदु को स्क्रीन के केंद्र के सबसे करीब लौटाता है।

यहाँ स्क्रीन के ग्रिड पर आकार आरेख का एक मोटा चित्र है। हम वास्तव में आकृतियों के आसपास की रेखाओं से चिंतित नहीं हैं, लेकिन वे यह बताने के लिए हैं कि स्क्रीन कैसे आकार क्षेत्रों को अनुमानित करना शुरू करते हैं।

Voronoi ग्रिड

प्रत्येक स्क्रीन के लिए दोहराएं, प्रत्येक को अपना बायोम दें।


मैंने देखा है कि पहले एक, और यह मेरे स्वाद के लिए थोड़ा बहुत bazooka-on-a-mosquito है।
काव

अच्छा ठीक है, यह हल्का है। यह बहुत bazooka-on-a-mosquito है। 8x8 उदाहरण सिर्फ एक उदाहरण नहीं था - दुनिया वास्तव में उस समाधान को सही ठहराने के लिए पर्याप्त नहीं है।
काव

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

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

@ कावा: लगता है जैसे आप खुदाई करने और अपना समाधान लिखने के लिए तैयार हैं! मैं जो बता सकता हूं, वह सब आपके दिमाग में आया है, बस यह मत करो! :) याद रखें कि यह दुनिया में अंतिम मानचित्र जनरेटर होने की जरूरत नहीं है, जब तक यह पसंद है यह पसंद है। ;)
ज़ोलोमन

1

उत्तर 1:

बर्फ और रेगिस्तान उगाएं, जब ऐसा किया जाता है, तो (निषिद्ध) चौराहों की तलाश करें और वहां (अधिक या कम बड़े) दलदल में उगें।

फिर से करना और दोहराना

उत्तर 2:

'बूँद' भाग के लिए, मैंने अपनी टिप्पणी (अनुरोध के अनुसार) पोस्ट में स्थानांतरित कर दी:

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

आप एक नियम भी जोड़ सकते हैं ताकि आप एक रेगिस्तानी टाइल न बना सकें यदि इसके आस-पास किसी टाइल पर बर्फ है।


यह समस्या के खूनी पहलू के साथ बिल्कुल मदद नहीं करता है।
काव

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

आप एक नियम भी जोड़ सकते हैं ताकि आप एक रेगिस्तानी टाइल न बना सकें यदि इसके आस-पास किसी टाइल पर बर्फ है।
वलमंड

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