php游戏,基于exp计算级别的公式

use*_*356 13 php game-development

我正在制作一个基于浏览器的PHP游戏,并在我的数据库中为玩家提供该玩家总EXP或经验的记录.

我需要的是一个公式,将exp翻译成一个级别或等级,满分100.

所以他们从第1级开始,当他们点击时,50表示,进入2级,然后当他们达到125/150时,2级.

基本上是一个稳定地使每个级别更长的公式(更多exp)

有人可以帮忙吗?我不擅长数学:P

Vil*_*lx- 23

许多公式可能适合您的需求,具体取决于您希望所需的exp达到多快.

事实上,你真的应该让这个可配置(或至少在一个中心位置轻松改变),以便你以后可以平衡游戏.在大多数游戏中,这些(和其他)公式仅在playtesting尝试了几个选项后才能确定.

这是一个公式:第一次升级发生在50 exp; 第二个是150exp; 第三名是300 exp; 第四名,500分; 换句话说,首先你必须收集50 exp,然后是100 exp,然后是150exp等.这是一个算术级数.

对于levelup,X那么你需要25*X*(1+X)exp.

补充:为了得到它,你只需使用基本数学.像这样:

y=25*X*(1+X)
0=25*X*X+25*X-y
Run Code Online (Sandbox Code Playgroud)

这是一个标准的二次方程,你可以用以下公式求解X:

X = (-25±sqrt(625+100y))/50
Run Code Online (Sandbox Code Playgroud)

现在,既然我们希望X和Y都大于0,我们可以删除其中一个答案,并留下:

X = (sqrt(625+100y)-25)/50
Run Code Online (Sandbox Code Playgroud)

所以,例如,如果我们有300个exp,我们看到:

(sqrt(625+100*300)-25)/50 = (sqrt(30625)-25)/50 = (175-25)/50 = 150/50 = 3
Run Code Online (Sandbox Code Playgroud)

现在,这是第3个levelup,所以这意味着4级.


Mik*_*ike 7

如果您想要以下内容:

  • 等级1 @ 0点
  • 等级2 @ 50分
  • 等级3 @ 150分
  • 4级@ 300分
  • 等级5 @ 500分等

将经验(X)与等级(L)相关的等式是:

X = 25 * L * L - 25 * L
Run Code Online (Sandbox Code Playgroud)

要计算给定体验的水平,请使用二次方程得到:

L = (25 + sqrt(25 * 25 - 4 * 25 * (-X) ))/ (2 * 25)
Run Code Online (Sandbox Code Playgroud)

这简化为:

L = (25 + sqrt(625 + 100 * X)) / 50
Run Code Online (Sandbox Code Playgroud)

然后使用floor函数向下舍入以获得最终公式:

L = floor(25 + sqrt(625 + 100 * X)) / 50
Run Code Online (Sandbox Code Playgroud)

其中L是等级,X是经验值


Sle*_*son 6

这实际上取决于您希望 exp 如何为每个级别进行缩放。让我们说

LvL1 : 50 Xp
Lvl2: LvL1*2=100Xp
LvL3: LvL2*2=200Xp
Lvl4: LvL3*2=400Xp
Run Code Online (Sandbox Code Playgroud)

这意味着你有一个几何级数 完成第 n 级所需的 Xp 将是

`XPn=base*Q^(n-1)`
Run Code Online (Sandbox Code Playgroud)

在我的示例中,初始值为 50 xp,Q 为 2(比率)。

如果玩家从 lvl1 开始且没有 xp:

when he dings lvl2 he would have 50 total Xp
at  lvl3 150xp
at  lvl4 350xp
Run Code Online (Sandbox Code Playgroud)

以此类推 玩家升到新级别时拥有的总经验值为:

 base*(Q^n-1)/(Q-1)
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您已经知道玩家拥有多少经验。对于 2 的比率,公式变得更简单:

base * (2^n-1)=total xp at level n
Run Code Online (Sandbox Code Playgroud)

要找出给定 xp 数量的级别,您需要做的就是应用一个简单的公式

$playerLevel=floor(log($playerXp/50+1,2));
Run Code Online (Sandbox Code Playgroud)

但是随着几何级数的增加,玩家升级会变得越来越难。

要显示下一级别所需的 XP,您只需计算下一级别的总 XP。

$totalXpNextLevel=50*(pow(2,$playerLevel+1)-1);
$reqXp=$totalXpNextLevel - $playerXp;
Run Code Online (Sandbox Code Playgroud)

检查帖子的开头:要从 lvl1 -> lvl2 你需要 50 xp lvl2 ->lvl3 100xp

要从 lvl x 到 lvl(x+1) 你需要

$totalXprequired=50*pow(2,$playerLevel-1);
Run Code Online (Sandbox Code Playgroud)