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 = (-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级.
如果您想要以下内容:
将经验(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是经验值
这实际上取决于您希望 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)