गतिशील रूप से अनुभव बिंदुओं के आधार पर एक स्तर की गणना के लिए एल्गोरिदम? [बन्द है]


41

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

Experience   Level
0            1
100          2
175          3
280          4
800          5

... वहाँ एक कविता या कारण नहीं है कि क्यों 280 अंक स्तर 4 के बराबर है, यह सिर्फ है।

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

Experience   Level
0            1
100          2
200          3
400          4
800          5
1600         6
3200         7
6400         8

... लेकिन ऐसा लगता है कि यह नियंत्रण से बाहर बढ़ेगा, बल्कि ऊपरी स्तरों की तरह, खेल में दुश्मनों को स्तर तक अनुभव की एक विस्तृत मात्रा प्रदान करना होगा - और इसे नियंत्रित करना मुश्किल होगा। समतल करना एक असंभव कार्य बन जाएगा।

क्या किसी के पास कोई संकेत या विधि है जो वे यह तय करने के लिए उपयोग करते हैं कि अनुभव के आधार पर किसी चरित्र को कैसे समतल किया जाए ? मैं लेवलिंग में निष्पक्ष रहना चाहता हूं और मैं खिलाड़ियों से आगे रहना चाहता हूं क्योंकि नए अनुभव / स्तर के लुकअप को लगातार जोड़ने के बारे में चिंता न करें।


4
नहीं, यह सिर्फ एक धीमा घातांक है (प्रत्येक स्तर के बजाय 10 ~ ~ 3.3 स्तरों या 100 हर ~ 6.6 के स्तर से गुणा)। ज्यामितीय 1 की तरह होगा [00], 4, 9, 25, 36, आदि। यहां तक ​​कि 1100 1210 1331 1464 एक घातीय श्रृंखला है, जो कि 1.1 से गुणा है।
रैंडम 832

1
en.wikipedia.org/wiki/Exponential_growth चीजों को साफ करना चाहिए।
आआआआआआआआआ आआआआआ

1
@Stephen: @ Random832 सही है, दोनों "घातीय" और "ज्यामितीय" विकास क्रमिक / समकालिक शब्दों के बीच एक निरंतर अनुपात होने का संदर्भ देते हैं (जिसका अर्थ है कि विकास की दर वर्तमान मूल्य के आनुपातिक है - गणना में यह कहा गया है घातीय कार्य है f'(x) = c*f(x)) । "ज्यामितीय" शब्द का उपयोग तब किया जाता है जब डोमेन (इनपुट) असतत होता है (जैसे। पूर्णांक)। @ जॉर्ज के उदाहरण के लिए, स्तर 1 से ऊपर का फॉर्मूला है Experience = 100 * 2^(Level-2), जो घातीय है। स्तर 1 से ऊपर, आपकी प्रगति का सूत्र Experience = 100^(Level-1)भी घातांक है।
ब्लूराजा - डैनी Pflughoeft

जवाबों:


36

एक वर्ग संबंध का उपयोग करना काफी सामान्य है।

level = constant * sqrt(XP)

या एक रैखिक रूप से बढ़ते स्तर के अंतर के लगभग बराबर।

Level   XP      Difference
1       0       -
2       100     100
3       300     200
4       600     300
5       1000    400

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


3
एचीवर-प्रकार के खिलाड़ियों के लिए, मुझे संदेह है कि उनके चरित्र की प्रगति के रूप में अधिक से अधिक एक्सपी लाभ की मजबूत उम्मीद है। मुझे आपका समाधान दिलचस्प लग रहा है, और मैं शायद इसे केवल 107-214-321-428 जैसे मतभेद पैदा करने के लिए थोड़ा मोड़ दूंगा, इस प्रकार खिलाड़ी को केवल गोल संख्या को देखने से रोका जा सकता है और इस उम्मीद में भी कि यह खेल को महसूस करने में जोड़ सकता है बस थोड़ा सा अधिक "कार्बनिक" (मैं इस से बेहतर शब्द के साथ आने की कोशिश कर रहा हूं, लेकिन "जैविक" वह सब है जो मुझे इस समय मिल गया है)।
Randolf रिचर्डसन

1
+1 यह वही है जो मैंने अतीत में किया है, महान काम करता है
BlueRaja - Danny Pflughoeft

3
रैखिक रूप से बढ़ते स्तर के अंतराल के लिए समीकरण। स्तर = (sqrt (100 (2experience + 25)) + 50) / 100 और अनुभव = (स्तर ^ 2 + स्तर) / 2 * 100- (स्तर * 100)
C9HDN

3
शानदार जवाब और मुझे यह पसंद है कि यह उत्पादन करता है। मैंने 0.04 की निरंतरता का उपयोग करके समाप्त किया। सोच रहे लोगों के लिए, XP के लिए गणना करने के लिए इस सूत्र का उल्टा है: XP = स्तर ^ 2 / निरंतर।
ब्रैड

3
@ ब्रैड दरअसल, यह XP = (स्तर / स्थिर) ^ 2 लगता है। Php में, इसे XP = pow (स्तर / स्थिर, 2) या बाद के संस्करणों में देखा जा सकता है, (स्तर / स्थिर) ** 2
टेलर डोंडीच

17

संभवतः आपको लॉगरिदमिक फ़ंक्शंस मददगार मिलेंगे क्योंकि उन्हें वृद्धि को धीमा करने के लिए इस्तेमाल किया जा सकता है क्योंकि अधिक अनुभव अंक प्राप्त होते हैं। यहाँ दो वेब पेज हैं जो बताते हैं कि ये कैसे काम करते हैं:

  लॉगरिदमिक फ़ंक्शंस के ग्राफ़
  http://www.analyzemath.com/Graphing/GraphLogarithmicFunction.html

  रेखांकन लॉगरिदमिक फ़ंक्शंस का परिचय
  http://www.purplemath.com/modules/graphlog.htm

यहाँ एक ग्राफ पर ऐसा दिखता है, जो आपकी आवश्यकताओं को पूरा करेगा:

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


1
@George सह-प्रभावकारिता के साथ खेलकर आप आसानी से अपने खिलाड़ी के स्तर को बढ़ाने के लिए एक लघुगणक समारोह का उपयोग कर सकते हैं। गणित का उपयोग करने के लिए +1
स्टीफन

2
ध्यान दें कि यह घातीय एक्सपी आवश्यकता का कार्यान्वयन है। level = log(XP) <=> XP = e^level। आवश्यकता अंतिम स्तरों के लिए थोड़ी खड़ी हो सकती है, लेकिन यह XP के संचय में उपयुक्त वृद्धि के साथ ठीक काम करेगा।
आआआआआआआ आआआआआ

@ व्यापार: अच्छी बात है, लेकिन यह एक समस्या नहीं हो सकती है क्योंकि उच्च स्तर के चरित्र अधिक आसानी से और कम समय में अधिक अंक अर्जित करते हैं (उदाहरण के लिए, तेज गति से अधिक शक्तिशाली राक्षसों पर हमला / हत्या करके)। यह एक कारण है कि मुझे लगता है कि यह गणित वीडियो गेम (विशेष रूप से एक MMORPG संदर्भ में) के लिए अच्छी तरह से अनुकूल हो सकता है।
रंडोल्फ रिचर्डसन

2
मुझे यह थोड़ा अजीब लगता है कि ओपी विशेष रूप से घातीय वृद्धि के बारे में चिंता करता है और फिर एक जवाब स्वीकार करता है कि बस एक ही चीज़ का दूसरे तरीके से वर्णन करें। लेकिन मुझे लगता है कि यह उसकी समस्या है।
आआआआआआआआआआआ आआआआआ

1
@ व्यापार: शायद मेरे उत्तर ने घातीय वृद्धि के बारे में कुछ स्पष्ट किया जो पहले स्पष्ट नहीं था? गणित को लागू करने के कई अलग-अलग तरीके हैं, और मुझे यकीन नहीं है कि सबसे अच्छा गणित शिक्षक उन सभी को भी जान सकता है (वैसे, शायद दूसरा सबसे अच्छा गणित शिक्षक है)।
Randolf रिचर्डसन

9

ये कुछ तरीके हैं जिनका मैंने अब तक उपयोग किया है। वे विकास दर से क्रमबद्ध होते हैं (बस एक स्थिर मान से हर समीकरण को गुणा करते हैं):

  1. ऍक्स्प = स्तर (यह किसी को अजीब लग सकता है, लेकिन कुछ खेलों के लिए, जो एक्सपीडिएशन खिलाड़ी के स्तर के अनुसार बदलते हैं, जैसे सीमाएँ इस पर फिट हो सकती हैं)

  2. ऍक्स्प = स्तर * लॉग १० (स्तर)

    1   0
    2   0.6
    3   1.4
    4   2.4
    5   3.5
    6   4.6
    
  3. exp = level ^ const_value: मेरे उदाहरण के लिए मैंने const मान 3/2 पर सेट किया है

    1   1
    2   2.8
    3   5.1
    4   8
    5   11.2
    6   14.7
    

4

मुझे लगता है कि यह निर्भर करता है कि खिलाड़ी को कितना आसान अनुभव मिल सकता है। यदि खिलाड़ी 20 मिनट में lvl 1 पर 200 xp प्राप्त कर सकता है और फिर lvl 2 पर 2 मिनट में 200 xp प्राप्त कर सकता है, तो आपको तेजी से अपने xp को स्केल करने की आवश्यकता है।

हालाँकि, यदि स्तर प्राप्त करना केवल xp हासिल करने के लिए थोड़ा आसान बनाता है, तो आपको अधिक स्तर xp फ़ंक्शन करना चाहिए। (शायद कुछ गुणांक> 1 के साथ रैखिक)


4

अक्सर एक स्तर हासिल करने के लिए आवश्यक बिंदु एक वक्र पर आधारित होता है। बहुत सारे आरपीजी में आपके चरित्र की कई अन्य विशेषताएं और विशेषताएं भी हैं जो आपके स्तर के साथ बढ़ती हैं, वे भी अपने स्वयं के घटता पर होंगे।

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

मूल रूप से आपके पास एक वक्र हो सकता है कि XP ​​को लेवलअप करने के लिए कितना आवश्यक है, फिर प्रत्येक स्तर पर HP, MP, सहनशक्ति, शक्ति आदि के लिए अलग-अलग वक्र प्राप्त किए जाते हैं।

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


2

समय पर विचार करें

आपको पहले यह पता लगाने की आवश्यकता है कि अनुभव की दर कैसे स्तर के साथ मिलती है। फिर आप समय-समय पर अपनी लेवलिंग दर्जी कर सकते हैं । यदि प्रत्येक अतिरिक्त स्तर आपको दो बार तेजी से अनुभव प्राप्त करने की अनुमति देता है, और आपको दो बार स्तर तक अनुभव की आवश्यकता होती है, तो प्रत्येक स्तर को उसी समय की आवश्यकता होगी ।

मेरा सुझाव यह सोचना है कि खिलाड़ी को कितना समय देना चाहिए, फिर उस स्तर को समतल करना चाहिए।


-3

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


3
उत्तर केवल एक सरल सुझाव की तुलना में थोड़ा अधिक दूर होना चाहिए। डायनामिक सिस्टम की तरह इस रणनीति के कुछ लाभों को संबंधित करने का प्रयास करें, जैसे कि उसने पूछा।
माइकलहाउस

यह भी ध्यान दें कि मूल लेखक द्वारा अतिरिक्त जानकारी पोस्ट की जानी चाहिए ; यदि अन्य उपयोगकर्ताओं को अधिक जोड़ना है, तो उन्हें एक अलग उत्तर पोस्ट करने पर विचार करना चाहिए।
गनीमॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.