推荐榜 短消息 big5 繁体中文 找回方式 手机版 广 广告招商 主页 VIP 手机版 VIP 界面风格 ? 帮助 我的 搜索 申请VIP
客服
打印

[数字货币] 基于dota游戏中护甲的建模与一阶系统分析

购买/设置 醒目高亮!点此感谢支持作者!本贴共获得感谢 X 6

基于dota游戏中护甲的建模与一阶系统分析

基于dota游戏中护甲的建模与一阶系统分析
0
因为游戏中对战的情况十分复杂,可能是一对多可能是多对多进行战斗,我们假设一种最简单的情况,就是只有两个英雄进行战斗。我们可以把它想象成俩个斗  
士在决斗,每个斗士都自己的生命值(即HP),当生命值为0时,即为失败。每个人都有自己技能,施法技能时需要消耗自己的魔法值,每个人都有三个属性力量,敏捷,智力,每点力量增加19点生命值,0.03点每秒的生命值回复,每点智力增加13点魔法值,0.04点每秒的魔法值回复,每点敏捷增加一点攻击伤害,每7  
点增加一点护甲,每点增加1%的攻击速度。护甲顾名思义就是斗士的铠甲,可以减少伤害。  

首先设护甲值为m  
可推出:  
[1-(m*0.06)/(1+m*0.06)]*初始伤害=最终伤害  
如果我们将护甲看成一个系统,那么这个系统就是一个简单的一阶环节: (50/3)/(m+50/3) 将初始伤害设成系统输入u(m)。最终伤害就是系统输出y(m)。  

下面建立另一个基本理论。  

一个游戏人物会有他的生命值上限,当他受到等于自己生命值上限的普通伤害时,一般不会死亡,因为他有护甲抵挡一部分的伤害。  

因此,当你拥有护甲,你承受到的伤害就只是原始伤害的一部分,你可以在护甲的帮助下,去承受比你生命值上限更多的物理伤害。  

如果一个游戏人物受到的伤害全部都是物理伤害,要计算他的实际伤害承受能力,不光要看生命值,也要算上护甲。  

所以在这里我们就可以定下一个概念:有效生命。有效生命是指在考虑护甲减伤的前提下,一个游戏人物最多能承受多少物理伤害。  
其数学表述就是:有效生命=实际HP/(1-护甲减伤百分比)。  

1 护甲基础分析  

护甲系统是一个简单的一阶惯性环节。  
如果受到一次普通攻击伤害,则可将其看成单位冲激输入。单位冲激响应为:  
y(t)=(50/3)*e^[-(50/3)t]  
此处t不代表时间,代表护甲值的提升量。  
一般情况下受到的伤害是持续的,所以可看称单位阶跃输入,单位阶跃响应为:  
y(t)=1-e^[-(50/3)t]  
其中,t1=0.693*0.06=0.04,t2=3*0.06=0.18.  

t2的意义是护甲在一般情况下可减少18%的伤害。  

按暴雪规定的公式:  
1点护甲提供的伤害减免为:5.66%(游戏中的数据会被四舍五入)  
2点护甲提供的伤害减免为:10.71%  
3点护甲提供的伤害减免为:15.25%  
4点护甲提供的伤害减免为:19.35%  
5点护甲提供的伤害减免为:23.08%  
10点护甲提供的伤害减免为:37.50%  
20点护甲提供的伤害减免为:54.55%  

而根据一阶系统单位阶跃响应曲线  


   
可以发现单纯地提高护甲会使护甲的效益越来越小。  
所以我们提出本文重要理论:护甲收益递减论。  
而上面的计算值就是护甲收益递减论的论据:护甲免百分比与护甲值不成正比,在护甲值线性提升过程中,护甲免伤百分比的提升愈趋缓慢。从0开始,提升1点  
护甲能提升5.66%的伤害减免,但如果已经有了4点护甲,提升一点护甲却只能提升3.73%的伤害减免。  
但是,如果我们这样看问题:如果原本伤害减免为0%,从0%提升到20%,面对1000点物理伤害,就是减少了200点伤害,20%的伤害;如果原本伤害减免为60%,60提升到80%,面对1000点物理伤害,同样减少了200点伤害,但却减少了50%的伤害。因此实际上每点护甲的收益都是一样的。  
但根据一阶系统单位阶跃响应图,似乎的确是递减的。说明模型存在一定的缺陷。下面进行进一步研究。  

2 护甲与有效生命计算  
我们先回顾一下我们的实际伤害公式: [1-(护甲值*0.06)/(1+护甲值*0.06)]*初始伤害=最终伤害  
其中,(护甲值*0.06)/(1+护甲值*0.06)就是护甲带来的减伤。  
也就是这条公式=(1-伤害减免)*初始伤害=最终伤害  
由于有效生命是和最终伤害挂钩的,  
所以有效生命=生命值/(1-伤害减免)  
既有效生命=生命值/[1-(护甲值*0.06)/(1+护甲值*0.06)]  

最后整理得有效生命=生命值+护甲值*0.06*生命值  
分析以上情况,我们可以发现,有效生命的引入,相当于在原系统引入了反馈,受到的伤害值与有效生命的损失直接挂钩,提高了系统的稳定性,有利于进一步分析。  

下面来分析有效生命的最终公式。这是一个一次函数。由上面的分析过程,可以看成是系统的闭环特征方程。这个方程告诉我们,每点护甲值都能增加6%的有效生命。  

由于缺乏相关一阶系统的理论,我在这里做出一个猜测,就是一阶系统的特征方程可以用来判断输入对输出的影响百分比。但由于笔者学习知识不够深入,这里缺乏相关手段,是需要改进的地方。  

举例分析。  
以一个1000生命值的模型为例,我们把和初始生命值比较起来的提升称为绝对提升,和同模型少一点护甲的情况的有效生命比较起来的提升称为相对提升:  
当它拥有1点护甲,它得到5.66%的物理伤害减伤,实际可承受伤害(既有效生命)是1060,增加60点,绝对提升6%,相对提升6%  
当它拥有2点护甲,它得到10.71%的物理伤害减伤,有效生命是1120,增加60点,绝对提升6%,相对提升5.66%  
当它拥有3点护甲,它得到15.25%的物理伤害减伤,有效生命是1180,增加60点,绝对提升6%,相对提升5.35%  
我们可以看到,在这个模型里,每点护甲都相当于增加了60点有效生命值,也就是初始生命值的6%。  
但如果我们和少一点护甲的情况的有效生命比较起来,他又发生递减了。对的,护甲就是一个绝对提升不递减,但相对提升会递减的效果。  
换句简单的说,护甲收益就是一个等差数列,而不是等比数列。当护甲等差的增长时,有效生命会得到等差的增长,但护甲等比的增长时,有效生命并不会等比的增长。

点此感谢支持作者!本贴共获得感谢 X 6
TOP



当前时区 GMT+8, 现在时间是 2025-6-17 02:48