我正在开发一个游戏,我不想要一个充满层级的数组,这将最有可能增加页面负载时,迭代通过他们找到用户的级别。我需要一个算法来独立解决这个问题,只需要手头的用户体验。这是因为我希望最大值在1,000左右,而这么长的数组需要一些时间才能完成。
在一些帮助下,我提出了以下算法来解决每个级别之间的差异:
difference = difference + (difference / 7)它在较低的级别上工作得很好,但这张图是级别1-141,正如您所看到的,它非常容易,直到大约一半,然后它迅速上升,并继续上升,直到它到达15亿,000,000经验是~250级别,这是不够的。

所以,我的问题是,您认为更好的方式是做每个级别之间的差异?任何建议都是受欢迎的,我将测试所有算法。
谢谢。
发布于 2012-02-10 00:33:57
首先,这是线性系统。
Level = Experience / 1000每1000次体验就相当于一个级别。为了让水平提升速度变慢,你可以降低获得经验的速度。这还有一个额外的好处,那就是让超级简单的活动在以后被算作零经验,所以你不能通过杀死老鼠来成为史诗。
然后是各种各样的递减收益曲线。例如:
Level = (Experience/1000)^(1/scale)如果比例为2 (sqrt曲线),对于级别1,您需要1,000个经验。二,你需要四千块钱。三九千块。每一级都变得越来越难。如果将比例设置得更小,则难度增加的速率会降低(坡度变得不那么陡峭)。
我建议构建函数本身,而不是构建一阶导数(您似乎已经尝试过这样做)。这将使您在集成之前对该图有更好的了解。
发布于 2012-02-10 00:35:23
您可能想要在y= 1,000处有一条水平渐近线的东西,它在小x时比在大x时增长得更快。
dy/dx = a/x
lim (x->infinity) y = 1,000我们明白了
y = C_0 - a/(x^2)使用该限制,我们可以得到
lim (x->infinity) y = C_0所以我们得到了这个方程
level = 1,000 - a/(exp^2)我们可以让所有用户从一种体验开始,或者简单地将其更改为
level = 1,000 - a/(exp^2 + 1)无论哪种方式,用户都将从级别开始
level(0) = 1,000 - a因此,如果您希望用户从级别0开始,就让a= 1,000;如果用户从级别1开始,就让a= 999。因此,我可能会推荐以下几点:
level(0) = 1,000 - 1,000(exp^2 + 1)对于从0开始的体验。你可以通过改变exp的幂来改变收敛速度;更高的幂意味着更快地收敛到最大体验,更低的幂意味着更长的收敛。power 2只是一个建议;任何积极的实际力量都是可以的。
请注意,这只是构造此类函数的一种方法。你可以积分任何对小x比对大x大的dy/dx,你会得到另一个函数,你可以用大致相同的方式参数化。
发布于 2012-02-10 01:10:47
真的,一切都取决于你如何根据它的难度来设定一个关卡。该算法可以设置为,从1到1.1的变化将比从1到1000000的变化感受更多。或者恰恰相反。
对于相同的相对变化,算法对不同范围内的难度的敏感性是否相同?还是为了绝对的改变?或者是难度及其变化的另一个函数?这是由你决定的。
因此,难度的价值及其成长策略只是一个心理问题。
我喜欢的是:让这些数字线性增长,变得更小。1-1000乘以1就足够了。根据游戏的主题,您可以为不同的难度范围添加一些名称。当然,你可以从一百万开始,再到一万亿。再说一次,这是你的选择。它是设计,而不是编程或算法。
https://stackoverflow.com/questions/9214735
复制相似问题