在计算数学并解决Level
经验条件时XP
,我们获得:
大号ë v ë 升= 1 + 1 + 8 × XP÷ 50-------------√2
例如,对于,玩家的等级是多少?XP= 300
1 + 1 + 8 × 300 ÷ 50-------------√2= 4
按照要求。
或者,水平是XP = 100000
多少?
1 + 1 + 8 × 100000 ÷ 50----------------√2= 63
更普遍地表示,对于级别1 的任意起始阈值:
大号ë v ë 升= 1个+ 1个+ 8 × 吨ħ ř Ë 小号ħ ö 升d÷ 50------------------√2
您也可以XP
通过求解上述XP公式,进行相反的操作并计算任何给定级别所需的数量。
XP= (L e v e l2− L e v e l )× t h r e s h o l d2
请注意,上面的公式适用于分数,但是您需要四舍五入为下一个整数值。例如,在C ++ / C#中,您可以使用(int)Level。
为了获得上述封闭形式公式,我使用了差分方程,高斯求和和二次公式。
如果您对逐步解决此公式感兴趣,请...
我们通过最终考虑开始进行递归算法 Experience(next_level) = Experience(current_level) + current_level*50
。
例如,要获得我们有:XP大号ë v ë 升3
XP大号ë v ë 升3= XP大号ë v ë 升2+ 2 × 50
其中,2*50
来自OP的请求经验需要达到一个新的水平是当前等级* 50。
现在,我们用相同的逻辑将入公式。那是:Xp大号ë v ë 升2
将入上式:XPLevel2=XPLevel1+2×50
XpLevel3=XpLevel1+1×50+2×50
和仅仅是50,它是我们的起点。因此XpLevel1
XpLevel3=50+2×50=150
我们可以识别出递归计算更高级别和有限的求和链的模式。
XpLevelN=50+2×50+3×50+...+(N−1)×50=∑i=0n−1i×50
其中N是要达到的水平。要获得N级的XP,我们需要求解N。
XpLevelN÷50=∑i=0n−1i
现在,右侧只是从1到N-1的总和,可以用著名的高斯总和。因此N×(N+1)÷2−N
XpLevelN÷50=N(N+1)÷2−N
要不就
2∗(XpLevelN−50)÷50=N(N+1)−2N
最后,将所有内容放到一边:
0=N2−N−2×XpLevelN÷ 50
现在这是一个产生负和正解的二次方程式,因为没有负水平,所以只有正相关。现在,我们获得:
ñ= 1 + 1 + 4 × 2 × Xp大号ë v ë 升Ñ50-----------√2
因此,以XP和线性阈值为条件的当前水平为:
大号ë v ë 升= 1 + 1 + 8 × XP÷ t h r e s h o l d-------------------√2
注意了解这些步骤对于解决更复杂的进度可能很有用。在RPG领域中,除了这里的线性级数外,您还将看到实际上更常见的分数幂或平方关系,例如。但是,对于游戏实现本身而言,我认为此解决方案并不是最佳选择,因为理想情况下,您应该事先了解所有级别的进度,而不是在运行时进行计算。因此,对于我自己的引擎,我使用经过预处理的体验表,这些表更灵活并且通常更快。但是,首先写这些表,或者只是问问自己需要什么,比方说获得,此公式提供了旨在回答OP特定问题的最快方法。L e v e l = XP√5.0XP
Level 100
编辑:该公式可以正常工作,并且可以按照OP的要求以线性阈值级数正确输出当前level
条件。(以前的公式通过假设玩家从0级开始输出“ level + 1”,这是我的错-我在午休时间通过写在一张小纸巾上解决了这个问题!:)XP