首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >体验PHP算法

体验PHP算法
EN

Stack Overflow用户
提问于 2012-02-10 00:26:57
回答 3查看 4.1K关注 0票数 6

我正在开发一个游戏,我不想要一个充满层级的数组,这将最有可能增加页面负载时,迭代通过他们找到用户的级别。我需要一个算法来独立解决这个问题,只需要手头的用户体验。这是因为我希望最大值在1,000左右,而这么长的数组需要一些时间才能完成。

在一些帮助下,我提出了以下算法来解决每个级别之间的差异:

代码语言:javascript
复制
difference = difference + (difference / 7)

它在较低的级别上工作得很好,但这张图是级别1-141,正如您所看到的,它非常容易,直到大约一半,然后它迅速上升,并继续上升,直到它到达15亿,000,000经验是~250级别,这是不够的。

所以,我的问题是,您认为更好的方式是做每个级别之间的差异?任何建议都是受欢迎的,我将测试所有算法。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-10 00:33:57

首先,这是线性系统。

代码语言:javascript
复制
Level = Experience / 1000

每1000次体验就相当于一个级别。为了让水平提升速度变慢,你可以降低获得经验的速度。这还有一个额外的好处,那就是让超级简单的活动在以后被算作零经验,所以你不能通过杀死老鼠来成为史诗。

然后是各种各样的递减收益曲线。例如:

代码语言:javascript
复制
Level = (Experience/1000)^(1/scale)

如果比例为2 (sqrt曲线),对于级别1,您需要1,000个经验。二,你需要四千块钱。三九千块。每一级都变得越来越难。如果将比例设置得更小,则难度增加的速率会降低(坡度变得不那么陡峭)。

我建议构建函数本身,而不是构建一阶导数(您似乎已经尝试过这样做)。这将使您在集成之前对该图有更好的了解。

票数 5
EN

Stack Overflow用户

发布于 2012-02-10 00:35:23

您可能想要在y= 1,000处有一条水平渐近线的东西,它在小x时比在大x时增长得更快。

代码语言:javascript
复制
dy/dx = a/x
lim (x->infinity) y = 1,000

我们明白了

代码语言:javascript
复制
y = C_0 - a/(x^2)

使用该限制,我们可以得到

代码语言:javascript
复制
lim (x->infinity) y = C_0

所以我们得到了这个方程

代码语言:javascript
复制
level = 1,000 - a/(exp^2)

我们可以让所有用户从一种体验开始,或者简单地将其更改为

代码语言:javascript
复制
level = 1,000 - a/(exp^2 + 1)

无论哪种方式,用户都将从级别开始

代码语言:javascript
复制
level(0) = 1,000 - a

因此,如果您希望用户从级别0开始,就让a= 1,000;如果用户从级别1开始,就让a= 999。因此,我可能会推荐以下几点:

代码语言:javascript
复制
level(0) = 1,000 - 1,000(exp^2 + 1)

对于从0开始的体验。你可以通过改变exp的幂来改变收敛速度;更高的幂意味着更快地收敛到最大体验,更低的幂意味着更长的收敛。power 2只是一个建议;任何积极的实际力量都是可以的。

请注意,这只是构造此类函数的一种方法。你可以积分任何对小x比对大x大的dy/dx,你会得到另一个函数,你可以用大致相同的方式参数化。

票数 4
EN

Stack Overflow用户

发布于 2012-02-10 01:10:47

真的,一切都取决于你如何根据它的难度来设定一个关卡。该算法可以设置为,从1到1.1的变化将比从1到1000000的变化感受更多。或者恰恰相反。

对于相同的相对变化,算法对不同范围内的难度的敏感性是否相同?还是为了绝对的改变?或者是难度及其变化的另一个函数?这是由你决定的。

因此,难度的价值及其成长策略只是一个心理问题。

我喜欢的是:让这些数字线性增长,变得更小。1-1000乘以1就足够了。根据游戏的主题,您可以为不同的难度范围添加一些名称。当然,你可以从一百万开始,再到一万亿。再说一次,这是你的选择。它是设计,而不是编程或算法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9214735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档