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