मैं कुल XP से वर्तमान स्तर की गणना कैसे कर सकता हूं, जब प्रत्येक स्तर को आनुपातिक रूप से अधिक XP की आवश्यकता होती है?


33

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


उदाहरण के लिए:

Level Threshold = 50
Current Level = 1

स्तर 1 पर शुरू, मुझे 2 स्तर पर लाने के लिए (1 × 50) = 50 XP की आवश्यकता होगी , और इसी तरह।

Level 1: 50 XP needed to reach level 2
Level 2: 100 more XP needed to reach level 3
Level 3: 150 more XP needed to reach level 4

दूसरे शब्दों में, प्रगति तालिका निम्नानुसार है:

Level 1: 0 XP to 49 XP
Level 2: 50 XP to 149 XP 
Level 3: 150 XP to 299 XP
Level 4: 300 XP to 499 XP

अगर मेरे पास 300 XP हैं, तो मैं सिर्फ स्तर 4 पर पहुंच जाऊंगा। आमतौर पर मैं कैसे गणना कर सकता हूं?


स्टैक ओवरफ्लो पर संबंधित:
स्क्वैर के

अगले स्तर के लिए आवश्यक XP की मात्रा वर्तमान स्तर के उच्च स्तर को नहीं बढ़ाती है?
मस्त

खैर, पहला सवाल जिसका आपको जवाब देने की जरूरत है: प्रत्येक स्तर के लिए "दहलीज" मूल्य क्या है? आपके उदाहरण के आधार पर, यदि हम मानते हैं कि 300 XP, लेवल 4 तक पहुंचने के लिए न्यूनतम है, तो आपका थ्रेशोल्ड लेवल 3 के बाद बढ़कर 75 हो जाता है। एक बार जब आप उस आवृत्ति को निर्धारित कर लेते हैं जो थ्रेशोल्ड बढ़ जाता है, तो आप इसे गणना करने के लिए एक एल्गोरिथ्म के साथ आ सकते हैं। , जैसे अन्य लोग अपने उत्तर में करने की कोशिश कर रहे हैं
तायगेस्ट

3
माजटे इसकी गणना कैसे करें के लिए एक अच्छा जवाब देता है, लेकिन "सबसे अच्छा" उत्तर केवल इसकी गणना करने के लिए नहीं है .... समग्र विस्तार को स्टोर करें, बल्कि वर्तमान स्तर और एक्सपी डेल्टा को भी स्टोर करें। डेल्टा को हर बार अपने स्तर तक रीसेट करें और आपके पास आवश्यक सभी जानकारी है (स्तर, स्तर + 1, कुल xp, डेल्टा xp) आसानी से किसी भी चीज़ की गणना करने के लिए जिसे आपको उपयोग करने की आवश्यकता है / प्रदर्शित करें
जॉन स्टोरी

@JonStory वास्तव में। मैंने अपने उत्तर में इस पर थोड़ा विस्तार किया क्योंकि, वास्तव में , जो वास्तव में हर समय गतिशील रूप से स्तर की गणना करता है? यह सवाल, संक्षेप में, सिर्फ एक गणित का सवाल है, क्योंकि यह एक गेम सिस्टम के भीतर स्तरों की भूमिका पर बिल्कुल भी विचार नहीं करता है।
zxq9

जवाबों:


33

Levelअनुभव पर सशर्त के लिए गणित और हल करते समय XP, हम प्राप्त करते हैं:

Level=1+1+8×XP÷502

उदाहरण के लिए, लिए खिलाड़ी का स्तर क्या है ?XP=300

1+1+8×300÷502=4

के रूप में अनुरोध किया।

या, किस स्तर के लिए है XP = 100000?

1+1+8×100000÷502=63

अधिक आम तौर पर व्यक्त किया जाता है, स्तर 1 पर एक मनमानी शुरुआती सीमा के लिए :

Level=1+1+8×threshold÷502

आप XPएक्सपी के लिए उपरोक्त सूत्र को हल करके किसी भी स्तर के लिए आवश्यक उल्टा भी कर सकते हैं और गणना कर सकते हैं ।

XP=(Level2Level)×threshold2

ध्यान दें कि उपरोक्त सूत्र अंशों के साथ काम करता है, लेकिन आपको अगले पूर्णांक मान के लिए नीचे चक्कर लगाना होगा। उदाहरण के लिए C ++ / C # में आप (int) स्तर का उपयोग कर सकते हैं।

उपरोक्त बंद फार्मूला प्राप्त करने के लिए, मैंने अंतर समीकरणों, गॉस समन और एक द्विघात सूत्र का उपयोग किया।

यदि आप इस सूत्र को चरण दर चरण हल करने में रुचि रखते हैं ...

हम अंततः अपने विचारों को शुरू करके एक पुनरावर्ती एल्गोरिथ्म करते हैं Experience(next_level) = Experience(current_level) + current_level*50

उदाहरण के लिए, हमारे पास प्राप्त करने के लिए :XPLevel3

XPLevel3=XPLevel2+2×50

कहां, 2*50ओपी के अनुरोध से आता है कि अगले स्तर तक पहुंचने के लिए आवश्यक अनुभव वर्तमान स्तर * 50 है।

अब, हम सूत्र में एक ही तर्क के साथ को प्रतिस्थापित करते हैं। अर्थात्:XpLevel2

स्थानापन्न उपरोक्त सूत्र में:XPLevel2=XPLevel1+2×50

XpLevel3=XpLevel1+1×50+2×50

और सिर्फ 50 है, जो कि हमारा शुरुआती बिंदु है। इसलियेXpLevel1

XpLevel3=50+2×50=150

हम उच्च स्तर की पुनरावर्ती गणना के लिए एक पैटर्न को पहचान सकते हैं और सारांश की एक श्रृंखला को सीमित कर सकते हैं।

XpLevelN=50+2×50+3×50+...+(N1)×50=i=0n1i×50

एन को प्राप्त करने का स्तर कहां है। स्तर एन के लिए एक्सपी प्राप्त करने के लिए, हमें एन के लिए हल करने की आवश्यकता है।

XpLevelN÷50=i=0n1i

अब दाहिने हाथ की ओर बस N-1 को 1 से योग है, जो प्रसिद्ध गाऊसी योग से व्यक्त किया जा सकता है । इसलियेN×(N+1)÷2N

XpLevelN÷50=N(N+1)÷2N

या केवल

2(XpLevelN50)÷50=N(N+1)2N

अंत में, सब कुछ एक तरफ रखकर:

0=N2N2×XpLevelN÷50

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

N=1+1+4×2×XpLevelN502

XP और रैखिक सीमा पर वर्तमान स्तर सशर्त इसलिए है:

Level=1+1+8×XP÷threshold2

Level=XP5.0XPLevel 100

संपादित करें : यह सूत्र पूरी तरह से काम कर रहा है जैसा कि इसे करना चाहिए और यह ओपी द्वारा अनुरोध किए गए रैखिक थ्रेशोल्ड प्रगति के साथ वर्तमान levelसशर्त को सही ढंग से आउटपुट करता है । (पिछले सूत्र ने लेवल 0 से शुरू किए गए खिलाड़ी को मानकर "लेवल + 1" को आउटपुट किया था, जो मेरी गलती थी - मैंने इसे अपने लंच ब्रेक पर एक छोटे टिशू पर लिखकर हल किया था! :)XP


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
जोश

@JoshPetrie हमारे लिए यह समस्या जिसने अभी-अभी यह प्रश्न देखा है, वह यह है कि चैट लिंक टूट गया है। इसे ठीक करने का कोई तरीका?
एमएएन

@ और मैंने इसे हटा दिया, लेकिन यह एक और आठ दिनों में अपने आप दूर चला जाएगा।
जोश

25

सरल और सामान्य समाधान, अगर आप (और यदि आप करते हैं, आप कर रहे हैं प्रति सेकंड समय की इस गणना लाखों लोगों को दोहराने की जरूरत नहीं है शायद कुछ गलत कर), एक पाश का उपयोग करने के लिए बस है:

expLeft = playerExp
level = 1
while level < levelCap and expLeft >= 0:
    expLeft = expLeft - expToAdvanceFrom(level)
    level = level + 1

if expLeft < 0: level = level - 1     # correct overshoot

इस पद्धति का बड़ा लाभ, बिना किसी जटिल गणित की आवश्यकता के, यह है कि यह किसी भी मनमाने ढंग से विस्तार-प्रति-स्तर फ़ंक्शन के लिए काम करता है। यदि आप चाहें, तो आप भी प्रति स्तर मनमाने ढंग से विस्तार मूल्य बना सकते हैं, और उन्हें एक तालिका में संग्रहीत कर सकते हैं।

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


4
सबसे लचीला समाधान। और चूंकि गति एक बार की गणना के लिए मायने नहीं रखती है, इसलिए सबसे अच्छा मुझे लगता है।
गेमअल्केमिस्ट

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

2
ओह, मैं अब देख रहा हूं, क्षमा करें। मैं आपसे पूरी तरह सहमत हूं और आप प्रति स्तर उपयोगकर्ता परिभाषित उन्नति चरणों के लिए एक बढ़िया विकल्प प्रदान करते हैं। लेकिन फिर, शायद सभी के बाद प्रीप्रोसेस टेबल का उपयोग करें।
मेजे

2
इस समाधान की सादगी इसे एक स्पष्ट विजेता बनाती है। पठनीयता और बनाए रखने के मूल्य में छूट न दें।
मौसर

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

11

प्रश्न का उत्तर कोड के साथ दिया गया है, लेकिन मुझे लगता है कि इसका गणित के साथ उत्तर दिया जाना चाहिए। कोई व्यक्ति केवल कॉपी और पेस्ट के बजाय समझना चाह सकता है ।

XPLevel+1=XPLevel+LevelThreshold

XP

XPLevel=(Level1)LevelThreshold2

Level

Level=Threshold2+8XPThreshold2Threshold+12

(पूर्णांक में विभाजित करें, क्योंकि खिलाड़ी को किसी भी स्तर के बोनस की आवश्यकता के लिए सभी आवश्यक XP की आवश्यकता होती है )


2
मुझे यह उत्तर पसंद है। स्पष्ट और संक्षिप्त।
अल्मो

हे मिक; रिश्तों को पुनरावृत्ति करने के बाद से यह कुछ समय रहा है। क्या हम आधार मामले को भी निर्दिष्ट नहीं कर XP_Level(0) = 50सकते हैं और फिर हम केवल हल करने से बच सकते हैं? कोई लाभ, पेशेवरों, विपक्ष? मुझे लगता है कि इस उत्तर को छूना अच्छा होगा। +1
वॉनन हिल्ट्स

@VaughanHilts मुझे यकीन नहीं है कि आपका अंकन कैसे काम करता है या आप क्या पूछ रहे हैं, बेझिझक मुझे gamedev चैट में पिंग करें?
मिकेलएच

मैंने कोड उत्तर को इससे बहुत आसान समझा।
फाप्र्स

इस पर काम करो @Pharap। जब मैं एक किशोर था तो मुझे गणित की तुलना में कोड भी आसानी से समझ में आ गया था, लेकिन अनुभव और ज्ञान के साथ गणित जीवन में हर जगह स्पष्ट हो जाएगा।
मिकलह

10

यहां मूल बीजगणित का उपयोग करके समस्या को हल करने का एक तरीका है। यदि आप चरणों की परवाह नहीं करते हैं, तो नीचे की ओर जाएं।

एक आसान बात यह है कि एक स्तर दिया जाता है n, eउस स्तर को प्राप्त करने के लिए आवश्यक कुल अनुभव :

e = sum from k=1 to n of (t(k-1))

tउदाहरण में 50, - अवधि के लिए XP में वृद्धि के स्तर के अनुसार की जरूरत है।

हम अंकगणितीय अनुक्रमों ( योग पहचान ) के लिए सूत्र का उपयोग करके ऊपर हल कर सकते हैं :

e = t/2 * n(n-1)

हालांकि, हम विपरीत फार्मूला चाहते हैं - खिलाड़ी के स्तर ने उनका कुल अनुभव दिया। हम वास्तव में जो करना चाहते हैं वह स्तर के लिए हल है n। सबसे पहले, शब्दों को समूह बनाते हैं:

n^2 - n - 2e/t = 0

अब हम द्विघात सूत्र का उपयोग कर सकते हैं:

n = (1 + sqrt(1+8e/t))/2

अंतिम समीकरण:

level = 0.5 + sqrt(1 + 8*(total experience)/(threshold)) / 2

1
जवाब के लिए धन्यवाद। लेकिन क्या होगा अगर मैं थ्रेशोल्ड को अन्य चर में बदलना चाहता हूं? 50 के बजाय मैं 50000 या 1000 0 का उपयोग करना चाहूंगा। मुझे समीकरण को कैसे संशोधित करना चाहिए?
JayVDiyk

2
हां, समाधान समान होना चाहिए। मैं किसी को भी दिलचस्पी होने की स्थिति में समाधान के लिए कदम उठाना चाहता था। @JayVDiyk - पोस्ट को संपादित करेगा।
चैत्य0

जैसा कि मैंने टिप्पणी की थी कि मैं काम के बाद पूर्ण समाधान पोस्ट करूंगा;) यह ठीक है, मुझे बुरा नहीं लगा। सामान्य बात यह है कि सही उत्तर के संदर्भ में उत्तर देना है और विस्तार पर ध्यान देना है। Nerver मन, इसे हल करने के लिए प्यार करता था। काश और भी सवाल ऐसे होते जो यहां पोस्ट किए गए थे।
माज़ी

क्षमा करें, उस टिप्पणी को याद किया जाना चाहिए। इसका मतलब यह नहीं है कि आप के नीचे से चोरी करें या ऐसा कुछ भी - मैं अगली बार इसे ध्यान में रखूंगा। आपका उत्तर निश्चित रूप से संपादित होने के बाद मेरी तुलना में अधिक गहन है!
Chaosed0

1
+1; @Majte के लिए कोई अपराध नहीं है, मैं व्यक्तिगत रूप से आपके स्पष्टीकरण को अधिक पठनीय पाता हूं।
इल्मरी करोनें

3

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

परंतु

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

खिलाड़ी अच्छा, गोल नंबर पसंद करते हैं जो याद रखने और कल्पना करने में आसान होते हैं, और कहीं भी यह स्तर-आधारित गेम सिस्टम की तुलना में अधिक महत्वपूर्ण नहीं है, जहां खिलाड़ी को Y को आगे बढ़ाने के लिए xp की X मात्रा की आवश्यकता होती है।

राउंड नंबर लेने के दो अच्छे कारण हैं:

  • स्तर का अनुभव ही एक अच्छा, गोल संख्या है "100; 200; 1,000,000; आदि"
  • स्तरों के बीच का डेल्टा एक और अच्छा हो जाता है, गोल संख्या जिसे खिलाड़ी अपने सिर में देख सकता है और गणना कर सकता है।

गोल नंबर सुखद हैं। खेलों का उद्देश्य सुखद होना है। ख़ासियत महत्वपूर्ण है, खासकर जब से खेल दुविधाओं अक्सर डिजाइन द्वारा सुखद लेकिन कुछ भी होगा।

यह ध्यान में रखना क्यों महत्वपूर्ण है?

अधिकांश मिश्रित श्रृंखला एल्गोरिदम अच्छे, गोल संख्या का उत्पादन नहीं करते हैं

अधिकांश श्रृंखला एक सुंदर बिंदु पर नहीं रुकती हैं (प्रत्येक उत्तर जो मैंने अब तक यहाँ देखा है बस हमेशा के लिए चला जाता है)। तो हम क्या करे? हम अनुमानित हैं, और फिर हम यह निर्धारित करते हैं कि गेम सिस्टम पर किस स्तर का सेट लागू होना चाहिए

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

अधिकांश खेलों में स्तरीय कैप होते हैं जो कुछ बिंदु पर किक करते हैं। वहाँ कुछ तरीके हैं जो यह खेल सकते हैं:

  • टोपी अपेक्षाकृत जल्दी सामना किया जाता है, जहां स्तर प्रणाली केवल खिलाड़ियों को खेल के पहले चरण के माध्यम से एक केंद्रित तरीके से प्राप्त करने में मदद करने के लिए मौजूद है ताकि उन्हें पूरी खेल प्रणाली सीखने के लिए मजबूर किया जा सके। एक बार जब वे "पूरी तरह से विकसित हो जाते हैं" लंबे खेल शुरू हो जाते हैं।
  • XP लाभ VS कठिनाई स्तर की एक निश्चित अर्थव्यवस्था है जहाँ हाँ, एक स्तर की टोपी है, लेकिन यह इतना दूर है कि हम खिलाड़ियों को लेवलिंग चार्ट के माध्यम से खेल को आधे रास्ते तक पूरा करने की उम्मीद करते हैं। कई वर्णों / वर्गों वाले DQ / FF- शैली के आरपीजी में प्रत्येक वर्ण स्तर के लिए प्रत्येक स्तर के लिए आवश्यक XP को बदलने की तुलना में विभिन्न दरों पर अनुभव प्राप्त करके विभिन्न वर्णों / वर्गों को आसान बनाना अधिक आम है । इस तरह खिलाड़ी आसानी से सार्वभौमिक लक्ष्यों के रूप में प्यारे छोटे गोल संख्याओं को याद कर सकते हैं, और यह जान सकते हैं कि प्रत्येक चरित्र गेम सिस्टम ( या जो भी) द्वारा निर्धारित कुछ मनमानी दर पर उनकी ओर बढ़ता है ।XP + (XP * Modifier)
  • स्तरीय कैप बाहरी चरित्र श्रेणी पर आधारित हैं। यही है, खेल प्रणाली के बाहर कुछ कारक उचित व्यवस्था करते हैं कि स्तर प्रणाली कैसी दिखती है। यह अधिक आम होता जा रहा है क्योंकि कई गेम पे-टू-विन लेकिन फ्री-टू-प्ले हैं। एक निशुल्क खिलाड़ी को lvl 70 पर कैप किया जा सकता है, एक ग्राहक को lvl 80 पर कैप किया जा सकता है, एक बार की खरीद किसी को किसी सार्वभौमिक टोपी से परे किसी स्तर पर आगे बढ़ा सकती है, आदि।
  • स्तर की टोपियां सार्वभौमिक हैं और किसी तरह से खेल की दुनिया से जुड़ी हुई हैं। इस प्रणाली को वाह द्वारा लोकप्रिय बनाया गया है।
  • किसी भी अन्य स्तर की टोपी प्रणाली जो आप सपना देख सकते हैं, जो अन्य खिलाड़ियों की तुलना में आपके जीवन के अधिक मिनटों को बर्बाद करने के लिए खिलाड़ियों को पुरस्कृत करने की तुलना में गेमप्ले को बेहतर तरीके से बढ़ाती है।

वहाँ हैं कुछ खेल प्रणालियों जहां कोई स्तर टोपी है और प्रणाली गणितीय रूप से निर्धारित किया जाता है। आमतौर पर इस तरह की प्रणाली संख्याओं को जल्दी से विस्फोट करने के लिए कुछ एक्स-पॉवर-ऑफ-वाई सिस्टम का उपयोग करती है। इससे L-1 के स्तर को प्राप्त करना बहुत आसान हो जाता है, काफी हद तक उम्मीद की जाती है कि अधिकांश खिलाड़ियों को L + 1 के स्तर तक पहुंचने में बहुत मुश्किल होगी, और खिलाड़ी L + 2 तक पहुंचने से पहले बूढ़े हो जाएंगे और मर जाएंगे। इस मामले में "एल" एक ऐसा स्तर है जो आपने तय किया है कि खेल के लिए उपयुक्त लक्ष्य स्तर है और जिस पर आमतौर पर सिस्टम छाया हुआ होता है लेकिन लोगों के लिए खुला विकल्प छोड़ दें कि वह अपने अच्छे विचार को हमेशा के लिए XP में बदल दें। (सिनिस्टर!) इस तरह की प्रणाली में यहां पाया गया गणित सही अर्थ बनाता है। लेकिन यह एक बहुत ही संकीर्ण है, और वास्तविक खेलों में शायद ही कभी सामना करना पड़ा मामला है।

तो हम क्या करे?

स्तरों और XP की गणना करें? सं । स्तर और एक्सपी निर्धारित करें? हाँ।

आप यह निर्धारित करते हैं कि स्तरों का क्या अर्थ है, फिर तय करें कि उपलब्ध स्तरों का क्या सेट उपलब्ध होना चाहिए। यह निर्णय गेम सिस्टम के भीतर या तो ग्रैन्युलैरिटी के लिए नीचे आता है (क्या स्तरों के बीच शक्ति में बहुत बड़ा अंतर है? क्या प्रत्येक स्तर एक नई क्षमता प्रदान करता है? आदि) और क्या स्तरों को स्वयं एक गेटिंग सिस्टम के रूप में उपयोग किया जाता है या नहीं ("नहीं कर सकता" जब तक आप lvl 10, बच्चे नहीं हो जाते, तब तक अगले शहर में जाएं। या एक प्रतिस्पर्धी सीढ़ी प्रणाली स्तर-आधारित स्तरों आदि को लागू करती है।)

इस के लिए कोड बहुत सीधा है, और सिर्फ सीमा निर्धारण है:

level(XP) when XP < 100  -> 1;
level(XP) when XP < 200  -> 2;
level(XP) when XP < 500  -> 3;
level(XP) when XP < 1000 -> 4;
% ...more levels...
level(XP) when XP > 1000000 -> 70. % level cap

या अगर एक बयान, या एक मामला, या अगर / elif की एक श्रृंखला के साथ, या जो भी भाषा आप समर्थन का उपयोग करने के लिए हो (यह हिस्सा किसी भी खेल प्रणाली का सबसे कम दिलचस्प तत्व है, मैं सिर्फ दो तरीके प्रदान करता हूं क्योंकि मैं होता हूं अभी Erlang मोड में हो, और उपरोक्त सिंटैक्स सभी के लिए स्पष्ट नहीं हो सकता है।):

level(XP) ->
    if
        XP < 100  -> 1;
        XP < 200  -> 2;
        XP < 500  -> 3;
        XP < 1000 -> 4;
        % ...more levels...
        XP > 1000000 -> 70 % level cap
    end.

क्या यह अद्भुत गणित है? नहीं बिलकुल नहीं। क्या यह सेट तत्व निर्धारण का मैनुअल कार्यान्वयन है? हां। यह सब है, और यह बहुत ज्यादा है जिस तरह से मैंने देखा है यह वास्तव में वर्षों में अधिकांश खेलों में किया गया है।

एक साइड नोट के रूप में, यह हर बार खिलाड़ी के अनुभव का अनुभव नहीं होना चाहिए । आमतौर पर आप एक मान के रूप में "XP to go" का ट्रैक रखते हैं, और एक बार खिलाड़ी या तो थक जाता है या "जाने के लिए" मूल्य को पार कर लेता है (जो भी आप इसे कर रहे हैं) तो आप यह गणना करने के लिए कि खिलाड़ी वास्तव में कहां है पर, स्टोर करें, अगले "गणना करने के लिए" बचे हुए ऋण को घटाएं (यदि XP आगे ले जाने की अनुमति है) और दोहराएं।

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