游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3000|回复: 2

[讨论] 利用MATLAB逆推英雄联盟护甲值—伤害减少率公式

[复制链接]

4万

主题

4万

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
83370
发表于 2020-3-31 09:56:20 | 显示全部楼层 |阅读模式
我们已经知道,英雄联盟中的伤害公式采用的是乘法公式,角色的护甲值影响的是受到的伤害的减少率,如图,拳头已经贴心地标出来了。

image001.png

那么,如何才能知道护甲值是通过什么公式得到这个减少率的呢?可以借用MATLAB软件里的曲线拟合功能得出公式。

1、我们在训练营中记录下众多护甲值以及与其对应的伤害减少率,并录入Excel中(大小顺序无所谓)。

image003.png

2、打开MATLAB,并导入Excel中的数据

image005.png

3、采用列矢量的格式分别导入护甲值和受到的伤害的减少率

image007.png

4、修改一下列矢量的名字,方便识别

image009.png

image011.png

5、打开曲线拟合工具箱

image013.png

6、选择以护甲值为x轴数据,受到的伤害的减少率为y轴数据

image015.png

7、由于护甲值属于开放数值,可以无上限,而受到的伤害的减少率属于封闭数值,范围是0到1。在Tools-Axes Limits中调整一下xy轴的最小最大值。

image017.png

8、好了,这时我们可以看一下图中,黑色离散的点就是我们录入的数据,而蓝色连续的线就是y=f(x)的函数的图像,也就是我们所想要逆推的公式的函数图像,我们需要通过使蓝色线尽量吻合黑色数据点,从而逆推出公式。

image019.png

9、通过调整MATLAB的逼近方式,可以调整蓝色线的形状。

image021.png

10、这里可以看到,通过选择有理数逼近,且分子分母中自变量最高次数都为1次方时,曲线最为吻合。

image023.png

11、在Results中可以看到结果。

image025.png

12、如图,SSE(和方差)表示拟合程度,SSE越接近0,说明拟合程度越高。同样,R-square(确定系数)也表示拟合的程度,R-square越接近1,表明拟合程度越高。在这里可以看到,拟合程度是很高的,基本可以确定这就是我们要找的公式。接下来就可以读取公式了,可以看到f(x)=(p1*x+p2)/(x+q1)是该公式的基本形式,下面紧接着提供了常数p1,p2,q1的值。得出公式:

image027.png

image029.png

13、考虑到游戏设计的公式不会如此古怪,将各常数近似简化后,得出如下公式:

image031.png

即:

image033.png

14、我们进入训练营验证一下。

image035.png

护甲:139

image037.png

可以看到,的确是58%

image039.png

护甲:184

受到的伤害的减少率=184/(184+100)=0.6479=65%

image047.png

同样可以看到,的确是65%

image049.png

再试一个,护甲:266

受到的伤害的减少率=265/(265+100)=0.7260=73%

image051.png

依然符合,基本可以确定这就是正确的公式。

15、我们还可以思考一下设计师为什么要选择一条这样的公式。我们很容易就可以想到,受到的伤害的减少率是有个范围的,大小在0到100%,假如这个减少率大于100%了,那就是无敌了,因此这是一个封闭的数值,是有上限的,上限为100%,同时,它还不能达到100%,因为达到100%也意味着无敌了。那么我们可以看一下这条公式的函数图像,当护甲值趋于无穷大时,受到的伤害的减少率无限趋近于1,但永远也无法达到1,非常符合需求。同时,从函数图像也可以轻易看出,当护甲值越大时,受到的伤害的减少率的增长速率越小,意味着当玩家护甲值越高时,再购买加护甲的装备的收益也就越小了。

image053.png

文/白木辛

image041.png
image043.png
image045.png

0

主题

1

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2020-4-1 10:21:27 | 显示全部楼层
这算是学以致用吗哈哈哈

0

主题

104

帖子

1602

积分

金牌会员

Rank: 6Rank: 6

积分
1602
发表于 2020-4-1 19:44:06 | 显示全部楼层
不错不错

但是还可以继续深挖一下,为什么常数是100
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-19 09:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表