बीज से यादृच्छिक स्तर कैसे उत्पन्न करें? [बन्द है]


46

मैं एक गेम स्तर बनाने के लिए एक यादृच्छिक बीज का उपयोग करने के बारे में कैसे जाऊंगा? एक ही बीज को हमेशा एक समान स्तर उत्पन्न करना चाहिए।

इस उदाहरण के लिए यह वर्म्स स्टाइल स्तर होगा। इसलिए प्रत्येक स्तर पर एक थीम (घास के मैदान, बर्फ आदि), बेस इलाके, विभिन्न वस्तुएं जैसे पेड़ होंगे।

तो मैं इस प्रकार के स्तर का जनरेटर कहाँ से शुरू करूँगा? क्या शामिल होगा? किन अवधारणाओं का उपयोग करता है?

किसी भी अच्छे लिंक के लिए बोनस अंक ( कीड़े या समान में कैसे किया गया था, इससे संबंधित किसी भी चीज के लिए बोनस बोनस अंक)।

धन्यवाद।


रैंडम स्तर की पीढ़ी को प्रक्रियात्मक सामग्री पीढ़ी (पीसीजी) के रूप में भी जाना जाता है। और यहाँ एक विकी है जो बस के साथ काम कर रहा है। pcg.wikidot.com आपको कुछ विचार देना चाहिए ! : ओ)
काज

1
क्रिस क्रॉफोर्ड का एक लेख है जो आपको दिलचस्प लग सकता है। यह 90 के दशक की शुरुआत में लिखा गया था लेकिन अभी भी प्रासंगिक है। कैसे एक दुनिया बनाने के लिए
एंथनी

यदि आप किसी ऐसे फॉर्म या एल्गोरिथ्म का उपयोग करते हैं जो समान यादृच्छिक संख्या जनरेटर का उपयोग करता है (एक को छोड़कर जो किसी तरह सिस्टम समय की तरह एक अपरिवर्तनीय रूप से स्नैक्स करता है), वही बीज समान स्तर उत्पन्न करेगा , इसके आसपास वास्तव में कोई रास्ता नहीं है।
काज

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

10
क्या आप वाकई "बीज" का मतलब जानते हैं? यह, "प्रारंभिक वेक्टर" के माध्यम से, जैसे में पारित कर दिया है srand(int)। बाद में आने वाले कॉल rand()क्रमिक मूल्यों को लौटाएंगे जो इस बीज के आधार पर हमेशा एक ही क्रम में गणना किए जाते हैं। आप अपने कार्यक्रम में एक बार बीज सेट करें। उसके बाद, यदि एल्गोरिथ्म केवल परिणामों से निर्भर करता है rand, तो आपको हर बार एक ही परिणाम मिलेगा।
हीथ हुननिकट

जवाबों:


7

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

तो जब तक आप हर बार अपनी दुनिया बनाने के लिए एक ही प्रक्रिया का पालन करते हैं, तब तक प्रत्येक मूल्य एक अद्वितीय प्रजनन योग्य दुनिया का प्रतिनिधित्व करेगा।


4

यहां एक्शनस्क्रिप्ट (एएस 2 या एएस 3 में उपलब्ध) में एक PRNG (छद्म यादृच्छिक संख्या जनरेटर) लागू किया गया है। यह हल्का और तेज है, खेलों के लिए आदर्श है: http://lab.polygonal.de/2007/04/21/a-good-pseudo-random-number-generator-prng/

उपर्युक्त कार्यान्वयन पार्क-मिलर-कार्टा PRNG पर आधारित है । यह साइट आपको इस सब के पीछे के गणित के बारे में कुछ और जानकारी देगी।

कीड़े- मकोड़े के स्तर का निर्माण करने के लिए, मैं शायद एक पेरलिन-शोर समारोह का उपयोग करूंगा । यदि आप 1px की ऊंचाई और अपने खेल-दुनिया की चौड़ाई के साथ एक पेरेलिन शोर छवि उत्पन्न करते हैं, तो आपको मूल रूप से एक ऊंचाई का नक्शा मिलता है, जो उपयोग करने के लिए तैयार है। पेर्लिन शोर फ़ंक्शंस भी हमेशा एक ही बीज के साथ एक ही मानचित्र उत्पन्न करते हैं।

फिर आप मानचित्र में यादृच्छिक वस्तुओं को रखने के लिए या जमीन में एक छेद बनाने के लिए निर्धारित करने के लिए ऊपर उल्लिखित PRNG का उपयोग कर सकते हैं। छेद के लिए आप फिर से पर्लिन शोर का फायदा उठा सकते हैं। बस अपने नक्शे (x, y) के आकार के साथ एक पेर्लिन-शोर छवि बनाएं, और फिर अपने नक्शे में एक छेद बनाएं जहां पिक्सेल-मूल्य किसी दिए गए सीमा से नीचे है (उदाहरण। 0.2)।


मैं पर्लिन शोर का उपयोग करूंगा, लेकिन थोड़ा अलग तरीके से, इसे 3 डी ऊंचाई का नक्शा बनाने के लिए उपयोग करें, मानचित्र को ढलान पर रखें और अपनी सीमा से कम सभी पिक्सेल हटा दें। (अगर पिक्सेल.हाईट - (पिक्सेल.डिस्टेंसटॉटबॉटम * स्लोपफैक्टर) <ट्रेशल्ड) पिक्सेल = पारदर्शी)
नील्स

2

सैद्धांतिक रूप से यदि आप छद्म यादृच्छिक संख्या जनरेटर (जैसे कि पेरलिन-शोर या मार्सेंस्टर ट्विस्टर) का उपयोग कर सकते हैं, तो मानचित्रों को साझा करने के लिए

बीज संख्या तब आप कस्टम मानचित्र भी बना सकते हैं और उन्हें बीज तक कम कर सकते हैं, जिससे समस्या पैदा नहीं हो सकती

PRNGs का उपयोग करते समय कस्टम मानचित्र। यह हालांकि कुछ अनुमानों पर बनाया गया है। अर्थात् छद्म यादृच्छिक संख्या जनरेटर हैं

एक प्रतिवर्ती प्रक्रिया और एक PRNG में पीछे की ओर खिलाया गया कोई भी डेटा एक वैध बीज का उत्पादन करेगा, अकेले एक बीज को बिल्कुल छोड़ दें!

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