दुष्ट-जैसे 2D कालकोठरी पीढ़ी के लिए कुछ आदर्श एल्गोरिदम क्या हैं? [बन्द है]


47

कालकोठरी पीढ़ी के संदर्भ में प्रक्रियात्मक सामग्री पीढ़ी के बारे में कुछ अच्छे संसाधन क्या हैं?

निकटतम लेख जो मुझे मिल सकता है वह था 2d भूलभुलैया के निर्माण के लिए एल्गोरिथ्म , जो कि वह नहीं है जिसकी मुझे तलाश है। कमरे और जुड़े हॉलवे जैसी सुविधाएँ आदर्श हैं।

धन्यवाद!


1
इसके अलावा, भूलभुलैया पीढ़ी पर एक नज़र डालें ।
एंथनी

1
इस विषय पर RogueBasin
PATRY Guillaume

जवाबों:


27

यह पहले कमोबेश उत्तर दिया गया है। आपका पहला पड़ाव स्थान http://pcg.wikidot.com/ होना चाहिए,

क्योंकि मुझ पर यह आरोप लगाया गया था कि यह एक उपयोगी उत्तर नहीं है (वास्तव में? कोई व्यक्ति संसाधन की मांग करता है और मैं विषय से निपटने वाले विकि के लिए एक लिंक पोस्ट करता हूँ? ), विकि पर यह पृष्ठ विशेष रूप से कालकोठरी जनरेटर के साथ संबंधित है और इस विषय पर विभिन्न लेखों से जुड़ा हुआ है।
http://pcg.wikidot.com/pcg-algorithm:dungeon-generation

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


"सभी विचार मान्य हैं" के लिए +1, लेकिन मैं उस पर स्पष्ट करना चाहूंगा: सभी विचार मान्य हैं, लेकिन कुछ दूसरों की तुलना में बेहतर काम करेंगे। आपका <अस्पष्ट कंप्यूटर शब्दजाल यहाँ> विचार कार्य करेगा , और संभवत: वही होगा जो आप चाहते हैं, लेकिन इसे करने के अन्य तरीके भी हैं जो अधिक कुशल, अधिक यादृच्छिक, अधिक सुसंगत, अधिक अनुकूलन योग्य या इसके किसी भी संयोजन के साथ होंगे, जब तक कि आप या तो नहीं हों। वास्तव में अच्छा या वास्तव में भाग्यशाली।
निक हार्टले

20

एक वर्ग ग्रिड के आधार पर, मैं निम्नलिखित एल्गोरिथ्म का उपयोग करके अच्छे दिखने वाले स्तर प्राप्त करने में कामयाब रहा:

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

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

यह आपको बहुत कम दिखने वाले स्तरों को बनाने की अनुमति देता है, बहुत अलग दिखने वाले स्तरों को, छोटे गलियारों के बड़े पैमाने पर बड़े हॉल से, जो उन्हें निकट से जुड़े कक्षों के छत्ते की तरह देख रहे हैं।

यहाँ एक उत्पन्न स्तर का एक उदाहरण है।

यहाँ छवि विवरण दर्ज करें

इस एल्गोरिथ्म के आधार पर, आप दीवार की सजावट को जोड़ सकते हैं जो ज़ोन पर निर्भर करता है, गलियारों को छोटा या बड़ा बनाता है, विशेष कमरे बनाता है, और इसी तरह।


10

यदि आप कोड पढ़ना पसंद करते हैं और C # को पार्स कर सकते हैं, तो क्या मैं मेरे रूग्निकाइक अमारैंथ के उपयोग करने वाले कालकोठरी जनरेटर का सुझाव दे सकता हूं? यह यहाँ है । यह जुड़े हुए कमरे, एक्स्टेंसिबल फीचर्स और कुछ अन्य अच्छे सामान को संभालता है।

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


1
मैं अमरनाथ के पार चला गया, जो महीनों पहले की तरह लगता है, लेकिन जब तक मैं खुद कालकोठरी में नहीं आया तब तक मैं नाम भूल गया। लिंक के लिए धन्यवाद!
गेब्रियल इसेनबर्ग

2
पर आपका लेख journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes भी वास्तव में अच्छा है, मैं अलग गलियारे जनरल इंजन आदि जैसे कुछ अतिरिक्त सुविधाओं के साथ कि का एक संशोधित संस्करण का उपयोग
Tobsta

3

ये सभी महान विचार हैं। मैंने RogueBasin और pcg.wikidot.com से थोड़ा सा लिया है , और C # में अपना कार्यान्वयन लिखा है।

मुझे वास्तव में गुफा के समान स्तरों का 'प्राकृतिक' रूप पसंद था जो सेलुलर ऑटोमेटा पद्धति का उपयोग करके उत्पन्न किया जा सकता है। सेलुलर ऑटोमेटा विधि से मेरा क्या मतलब है, यह समझने के लिए, कॉनवे के गेम ऑफ लाइफ की कल्पना करें। मेरा कोड 4-5 विधि नामक व्हाट्स का उपयोग करता है, जिसका अर्थ है कि एक दीवार एक दीवार बन जाएगी यदि यह एक दीवार है और इसके नौ पड़ोसी में से 4 दीवारें हैं, या यदि यह दीवार नहीं है और 5 या अधिक पड़ोसी दीवारें हैं। मैं दीवारों या स्थान के साथ बेतरतीब ढंग से नक्शे को भरने के द्वारा शुरू करता हूं, फिर प्रत्येक x / y स्थिति पर चलने के लिए और 4-5 नियम लागू करता हूं। नक्शे को यादृच्छिक रूप से भरने के बाद, अलग-अलग गुफाओं के गठन की समस्या को कम करने में मदद करने के लिए, मैंने प्रत्येक टाइल के लिए 4-5 नियम लागू करने से पहले, प्रत्येक टाइल को दीवार के बजाय एक जगह पर एक टाइल की स्थापना करके एक क्षैतिज रेखा को खाली कर दिया।

आप मेरे नक्शे हैंडलर वर्ग के लिए कोड देख सकते हैं, और मैं यहां कोई भी सुधार कर सकता हूं

या यहाँ एक संग्रहीत संस्करण ।


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

1
लिंक वास्तव में मर गया।
htmlcoderexe

2

मुझे लगता है कि इसे खोजने के लिए सबसे प्रत्यक्ष स्थान वास्तव में स्रोत कोड को देखना है। क्षेत्र के दो प्रमुख खिलाड़ी, एंगबैंड और नेटहॉक, दोनों खुले स्रोत हैं।


3
हालांकि ओपन-सोर्स, जो भी मैं याद करता हूं, वह बहुत अच्छी तरह से प्रलेखित-स्रोत या पारदर्शी-स्रोत या लिखित-सीखने-से-स्रोत से नहीं है। वे ट्वीक्स को हैक करना आसान है, लेकिन कुल मिलाकर बहुत मुश्किल है।
टॉम हडसन

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

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