基于经验点动态计算等级的算法?[关闭]


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
不,这只是一个较慢的指数(每〜3.3级乘以10,或每〜6.6级乘以100,而不是每级乘)。几何形状就像1 [00],4、9、25、36等。偶数1100 1210 1331 1464也是一个指数序列,乘以1.1。
Random832


1
@Stephen:@ Random832是正确的,“指数”增长和“几何”增长均指连续/等距项之间具有恒定比率(这意味着增长率与当前值成正比-在微积分中,这表示为指数函数有f'(x) = c*f(x)。当域(输入)是离散的(例如整数)时,使用术语“几何”。在级别1以上的@George示例的公式为Experience = 100 * 2^(Level-2),它是指数的。高于1级的进度公式也是Experience = 100^(Level-1),也是指数级的。
BlueRaja-Danny Pflughoeft

Answers:


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
对于成就型玩家,我怀疑随着角色的发展,他们会获得更大的XP收益。我发现您的解决方案很有趣,我可能会稍作调整以产生107-214-321-428之类的差异,从而防止玩家仅看到整数,并希望这可以增加游戏的感觉只是“ organic”多一点(我想提出一个比这更好的词,但是“ organic”是我目前所拥有的)。
兰道夫·理查森

1
+1这正是我过去所做的,效果很好
BlueRaja-Danny Pflughoeft

3
线性上升电平间隙的方程式。等级=(sqrt(100(2experience + 25))+ 50)/ 100,经验=(等级^ 2 +等级)/ 2 * 100-(等级* 100)
C9HDN 2014年

3
很好的答案,我喜欢这样产生的曲线。我最终使用了0.04的常数。对于那些想知道的人,要计算XP的公式的反向是:XP = level ^ 2 /常数。
BradH 2014年

3
@BradH实际上,它似乎是XP =(级别/常量)^ 2。在php中,它可以表示为XP = pow(level / constant,2)或在更高版本中,表示为(level / constant)** 2
Taylor Dondich

17

您可能会发现对数函数很有用,因为随着获得更多的经验值,对数函数可以用来减慢对数的增长。这是两个网页,解释它们如何工作:

  对数函数图
  http://www.analyzemath.com/Graphing/GraphLogarithmicFunction.html

  对数函数图形介绍
  http://www.purplemath.com/modules/graphlog.htm

这是图形上的样子,有望满足您的需求:

在此处输入图片说明


1
@George通过使用系数可以轻松使用对数函数来缩放玩家的水平。+1使用数学
斯蒂芬

2
请注意,这是指数XP要求的实现。level = log(XP) <=> XP = e^level。对于最后一个级别,需求可能会有点陡峭,但是在XP累积适当增长的情况下,它可以正常工作。
aaaaaaaaaaaaaa

@eBusiness:好点,但这可能不是问题,因为更高级别的角色倾向于在较短的时间内更轻松地获得更多的点(例如,以更快的命中速度攻击/杀死更强大的怪物)。这就是为什么我认为这种数学方法非常适合视频游戏的原因之一(尤其是在MMORPG环境中)。
兰道夫·理查森2011年

2
我只是发现OP专门担心指数增长,然后接受以另一种方式描述同一件事的答案有些奇怪。但是我想那是他的问题。
aaaaaaaaaaaaaa

1
@eBusiness:也许我的回答澄清了以前未知的关于指数增长的事情?应用数学的方法有很多,但我不确定即使是最好的数学老师也能全部了解它们(嗯,也许仍然是第二好的数学老师)。
Randolf Richardson 2011年

9

这些是我到目前为止使用的一些方法。它们按增长率排序(只需将每个方程乘以一个常数值):

  1. exp =等级(这可能看起来很奇怪,但是对于某些根据玩家等级奖励exp变化的游戏,例如《边疆》可能适合)

  2. exp =等级*日志10(等级)

    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分钟内在等级1处获得200 xp,然后在2分钟内在等级2处获得200 xp,则您需要按比例缩放xp。

但是,如果只获得一个等级,只会稍微容易获得xp,那么您应该执行一个更高等级的xp函数。(也许线性,且某些系数> 1)


4

通常,获得水平所需的点是基于曲线的。在许多RPG中,角色的许多其他特征和属性也会随着您的等级增加而增加,它们也将位于自己的曲线上。

看看RPGMaker,看看他们是如何做的。在创建主要角色文档的“通过定制启动设备来添加一些独特性”部分的屏幕快照中,具体查看参数曲线。

基本上,您可能需要一条曲线来了解升级所需的经验值,然后每个水平都获得不同的曲线,以了解获得多少生命值,力量,耐力,力量等。

在此处输入图片说明


2

考虑时间

您首先需要弄清楚经验的获取率如何随级别而变化。然后,您可以根据需要调整水平。如果每个附加级别都使您获得两倍的经验,而您需要两倍的经验来升级,则每个水平将需要相同的时间。

我的建议是考虑玩家应该花费多少时间,然后根据需要调整水平。


-3

也许我应该只使用平坦的水准仪系统,而每个水准仪都需要完全相同的经验。


3
答案应该比简单的建议更为充实。尝试将这种策略的一些好处与动态系统(如要求的系统)联系起来。
MichaelHouse

另请注意,其他信息应由原始作者发布;如果其他用户有更多要添加的内容,则应考虑发布单独的答案。
Gnemlock
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.