php游戏,根据exp计算水平的公式
2022-08-31 00:09:29
我正在制作一个基于浏览器的PHP游戏,在我的数据库中,它为玩家提供了该玩家总EXP或经验的记录。
我需要的是一个公式,将exp转换为100个级别或排名。
所以他们从1级开始,当他们达到50级时,进入2级,然后当他们达到125/150时,达到2级。
基本上是一个公式,可以稳步地使每个级别更长(更多exp)
任何人都可以帮忙吗?我不太擅长数学:P
我正在制作一个基于浏览器的PHP游戏,在我的数据库中,它为玩家提供了该玩家总EXP或经验的记录。
我需要的是一个公式,将exp转换为100个级别或排名。
所以他们从1级开始,当他们达到50级时,进入2级,然后当他们达到125/150时,达到2级。
基本上是一个公式,可以稳步地使每个级别更长(更多exp)
任何人都可以帮忙吗?我不太擅长数学:P
许多公式可能适合您的需求,具体取决于您希望所需 exp 上升的速度。
事实上,你真的应该让它可配置(或者至少在一个中心位置很容易地改变),这样你以后就可以平衡游戏。在大多数游戏中,这些(和其他)公式只有在尝试几个选项之后才能确定。playtesting
这里有一个公式:第一次升级发生在50 exp;第二名在150exp;第三在300 exp;第四在500 exp;等。换句话说,首先你必须收集50 exp,然后是100 exp,然后是150exp,依此类推。这是一个算术级数。
对于升级,你需要exp。X
25*X*(1+X)
添加:反过来,你只需要使用基本的数学。喜欢这个:
y=25*X*(1+X)
0=25*X*X+25*X-y
这是一个标准的二次方程,你可以用以下公式求解X:
X = (-25±sqrt(625+100y))/50
现在,由于我们希望 X 和 Y 都大于 0,因此我们可以删除其中一个答案,并留下:
X = (sqrt(625+100y)-25)/50
因此,例如,如果我们有300 exp,我们会看到:
(sqrt(625+100*300)-25)/50 = (sqrt(30625)-25)/50 = (175-25)/50 = 150/50 = 3
现在,这是第3级,所以这意味着4级。
如果您想要以下各项:
将经验 (X) 与水平 (L) 相关联的等式为:
X = 25 * L * L - 25 * L
要计算给定经验的水平,请使用二次方程得到:
L = (25 + sqrt(25 * 25 - 4 * 25 * (-X) ))/ (2 * 25)
这简化为:
L = (25 + sqrt(625 + 100 * X)) / 50
然后使用 floor 函数向下舍入,以获得最终公式:
L = floor(25 + sqrt(625 + 100 * X)) / 50
其中 L 是级别,X 是经验值