2008-09-20 8 views
5

मैं एक साधारण मल्टीप्लेयर गेम है जिसमें 2-4 खिलाड़ियों को एक भूलभुलैया में अलग entrypoints पर रखा और एक लक्ष्य बिंदु तक पहुँचने की जरूरत है कर रहे हैं पर काम कर रहा हूँ। सामान्य रूप से एक भूलभुलैया उत्पन्न करना बहुत आसान है, लेकिन इस मामले में खेल का लक्ष्य हर किसी के सामने लक्ष्य तक पहुंचना है और मैं नहीं चाहता कि पीढ़ी एल्गोरिदम दूसरों पर एक खिलाड़ी का भारी पक्षपात करे।इष्टतम मल्टीप्लेयर भूलभुलैया पीढ़ी एल्गोरिथ्म

तो मैं एक उलझन पीढ़ी एल्गोरिथ्म जहां लक्ष्य को startpoint से प्रत्येक खिलाड़ी के लिए इष्टतम पथ कोई औसत पथ से 10% से अधिक अधिक कदम है की तलाश में हूँ। इस तरह खिलाड़ी कम या कम बराबर खेल मैदान पर होते हैं। क्या कोई ऐसा एल्गोरिदम सोच सकता है?

(मैं एक विचार मिल गया है के रूप में यह खड़ा है, लेकिन यह सुविचारित नहीं कर रहा है और अब तक इष्टतम से भी कम समय लगता है -। मैं एक जवाब के रूप में यह पोस्ट करेंगे)

उत्तर

7

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

+0

यह बिल्कुल सही है - बिल्कुल आवश्यक चीज़ का प्रकार । बहुत - बहुत धन्यवाद! :) –

0

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

1

क्या पहले एक उलझन परिभाषित पथ का सम्मान खिलाड़ियों और लक्ष्य और एक समान लंबाई पथ की स्थिति का चयन करने और बाद में निर्माण के बारे में? यदि पथ छेड़छाड़ नहीं करते हैं तो यह आसानी से काम करना चाहिए, मुझे लगता है कि

+0

यह एक अच्छा जवाब है, और हाँ, फ्रीस्पेस बहुत समान है :) मुझे लगता है कि यह जाने का सही तरीका हो सकता है। आपके सहयोग के लिए धन्यवाद। –

1

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

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

+0

हे, हम दोनों समान रूप से गूंगा हैं! :-) –

+0

हम्म, मुझे यह पसंद है। सुनिश्चित नहीं है कि यह कैसे काम करेगा, लेकिन मुझे लगता है कि यह एक शॉट के लायक है।धन्यवाद :) –

+0

@ विंको वर्सालोविच ने टाइपिंग शुरू करते समय आपकी प्रतिक्रिया नहीं देखी, क्षमा करें: पी जैसा कि वे कहते हैं, प्रतिभा एक जैसे सोचते हैं, और मूर्ख कभी अलग नहीं होते: पी – freespace

0

बीच

में कहीं अपने निकास बिंदु उठाओ

वहां से अपने एन पथ शुरू, पाश प्रति प्रत्येक पथ, को 1 जोड़ने जब तक वे जब तक आप उन्हें रखना चाहते हैं।

आपके एन प्रारंभ बिंदु हैं, और वे सभी एक ही लंबाई हैं।

भूलभुलैया पूरी होने तक लाइनों से अतिरिक्त शाखाएं जोड़ें।

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