2012-11-18 16 views
5

मैं जावास्क्रिप्ट (http://www.isogenicengine.com/demos/1.1.0/lander/) में एक साधारण चंद्र लैंडर क्लोन लिख रहा हूं और एक मूल परिदृश्य के बजाय जो उच्च और निम्न है, मैं एक एल्गोरिदम यादृच्छिक गुफा जैसी उत्पन्न करना चाहता हूं रिक्त स्थान। [0, 0, 1920, 1200] के साथ काम करने के लिए एक आयताकार क्षेत्र को देखते हुए एल्गोरिदम नीचे दी गई छवि की तरह कुछ उत्पन्न करने में सक्षम होना चाहिए। आदर्श रूप से गुफा क्षेत्र में किसी भी "प्रवेश" की एक चौड़ाई होनी चाहिए ताकि लैंडर इसे "अंदर" प्राप्त कर सके।एक यादृच्छिक 2 डी कंसवे पॉलीगॉन लैंडस्केप जावास्क्रिप्ट

Lander "Cave" Polygon

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

सुपर-कट्टर बोनस अंक के लिए, यह निर्दिष्ट करने की क्षमता है कि कितने गुफा जैसी संरचनाएं और भी भयानक होंगी।

एल्गोरिदम का आउटपुट अंक की एक सरणी होगी, प्रत्येक बिंदु एक एक्स और वाई गुण युक्त एक वस्तु है {x: val, y: val} कि जब आप अनुक्रमिक रूप से वर्तमान बिंदु और अगले के बीच रेखाएं खींचते हैं, बहुभुज बनाता है।

अगर किसी के पास ऐसा कुछ जावास्क्रिप्ट कार्यान्वयन है जो बहुत मदद करेगा!

+1

इन पर एक नज़र डालें, वे मदद कर सकते हैं: http://accidentalnoise.sourceforge.net/minecraftworlds.html http://gamedev.stackexchange.com/questions/20588/how-can-i-generate-worms- शैली-इलाके http://gamedev.stackexchange.com/questions/15912/terrain- जनरेशन-for-tile-based-2d-platformer – mfreitas

उत्तर

3

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

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

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

संक्षेप में: (1) अपनी इच्छित सुविधाओं के साथ एक स्थलीय ग्राफ बनाएं। (2) ग्राफ के लिए ज्यामिति बनाएं, प्रत्येक चरम पर एक स्थान निर्दिष्ट करें और प्रत्येक किनारे के लिए पथ दें। (3) एक दोहरी ग्राफ का निर्माण, और इसकी ज्यामिति असाइन करें। (4) बाधा के बजाए पारित होने के पक्ष में संघर्ष को हल करने, उन्हें बाहर बढ़कर प्रत्येक ग्राफ से जुड़े स्थान को बाहर निकालें।

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

1

मार्चिंग स्क्वायर का उपयोग किया जा सकता है, यदि आप रुचि रखते हैं, तो स्केलर मानों के 2 डी फ़ील्ड (संभवतः पर्लिन या सिंपलक्स शोर से अधिग्रहित) को किनारे की रेखाओं के सेट में बदलना है। बेशक, जो दिखता है वह इस तरह निर्भर करेगा कि आप 2 डी फ़ील्ड स्केलर मान कैसे प्राप्त करते हैं (आप पर्लिन या सिंपलक्स शोर में कैसे छेड़छाड़ करते हैं)।

This सबसे अच्छी साइट है जो मुझे मिल सकती है जो विवरणों पर अच्छी तरह से जाती है।(यह मार्चिंग क्यूब्स, इसके 3 डी ट्विन के रूप में अच्छी तरह से प्रलेखित नहीं है)

दरअसल, Wiki पृष्ठ पर यह बहुत अच्छा है।

संबंधित मुद्दे