欢迎来到天天文库
浏览记录
ID:13854746
大小:99.00 KB
页数:5页
时间:2018-07-24
《dota护甲系统完全解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、作者:王君迪 (浙江大学控制科学与工程学系09级) dota游戏引擎中的基本护甲计算公式,采用一阶系统单位阶跃响应分析,得出护甲收益递减论,并与另一种护甲收益不变论进行比对分析。提出有效生命理论,分析实战中英雄的出装思路,对死灵法师进行举例分析,分析其在实战中的受伤害数据,与其能在大型比赛中出现的原因。 关键词:dota;护甲;伤害 Dota(DefenceoftheAncients,远古的守护),是指基于魔兽争霸3:冰封王座(暴雪娱乐公司出品)的多人即时对战自定义地图,可支持10个人同时连线游戏。Dota以对立的两个小队展开对战,通常是5v5,游
2、戏目的是守护自己的远古遗迹(近卫方的生命之树、天灾方的冰封王座),同时摧毁对方的远古遗迹。DotA是目前唯一被暴雪娱乐公司官方认可的魔兽争霸RPG。 Dota在大学生中的风靡程度令人咂舌,而随着玩家对游戏的理解深入,本身存在于游戏中的许多数学模 型被挖掘出来进行研究。本文将对dota中英雄护甲进行建模分析,并利用控制理论中的稳定性分析,对dota中英雄的物品出装选择提出更好的方案。 因为游戏中对战的情况十分复杂,可能是一对多可能是多对多进行战斗,我们假设一种最简单的情况,就是只有两个英雄进行战斗。我们可以把它想象成俩个斗士在决斗,每个斗士都自己的生命
3、值(即HP),当生命值为0时,即为失败。每个人都有自己技能,施法技能时需要消耗自己的魔法值,每个人都有三个性力量,敏捷,智力,每点力量增加19点生命值,0.03点每秒的生命值回复,每点智力增加13点魔法值,0.04点每秒的魔法值回复,每点敏捷增加一点攻击伤害,每7点增加一点护甲,每点增加1%的攻击速度。护甲顾名思义就是斗士的铠甲,可以减少伤害。首先设护甲值为m (这是暴雪娱乐公司(Dota的平台)在他制作的游戏里定下的一条规则,如果当目标造成的伤害类型是普通伤害时,这条规则就会生效。这是这篇文章的基础之一。) 如果我们将护甲看成一个系统,那么这个系
4、统就是一个简单的一阶环节: 将初始伤害设成系统输入u(m)。最终伤害就是系统输出y(m)。 下面建立另一个基本理论。 一个游戏人物会有他的生命值上限,当他受到等于自己生命值上限的普通伤害时,一般不会死亡,因为有护甲抵挡一部分的伤害。因此,当你拥有护甲,你承受到的伤害就只是原始伤害的一部分,你可以在护甲的帮助下,去承受比你生命值上限更多的物理伤害。 如果一个游戏人物受到的伤害全部都是物理伤害,要计算他的实际伤害承受能力,不光要看生命值,也要算上护甲。所以在这里我们就可以定下一个概念:有效生命。有效生命是指在考虑护甲减伤的前提下,一个游戏人物最多能
5、承受多少物理伤害。 其数学表述就是:有效生命=实际HP/(1-护甲减伤百分比)。1护甲基础分析 护甲系统是一个简单的一阶惯性环节。 如果受到一次普通攻击伤害,则可将其看成单位冲激输入。单位冲激响应为: 此处t不代表时间,代表护甲值的提升量。 一般情况下受到的伤害是持续的,所以可看称单位阶跃输入,单位阶跃响应为: 其中,td=0.693*0.06=0.04,ts=3*0.06=0.18.【3】 ts的意义是护甲在一般情况下可减少18%的伤害。 按暴雪规定的公式: 1点护甲提供的伤害减免为:5.66%(游戏中的数据会被四舍五入) 2
6、点护甲提供的伤害减免为:10.71% 3点护甲提供的伤害减免为:15.25% 4点护甲提供的伤害减免为:19.35% 5点护甲提供的伤害减免为:23.08% 10点护甲提供的伤害减免为:37.50% 20点护甲提供的伤害减免为:54.55%而根据一阶系统单位阶跃响应曲线 可以发现单纯地提高护甲会使护甲的效益越来越小。所以我们提出本文重要理论:护甲收益递减论。 而上面的计算值就是护甲收益递减论的论据:护甲免百分比与护甲值不成正比,在护甲值线性提升过程中,护甲免伤百分比的提升愈趋缓慢。从0开始,提升1点护甲能提升5.66%的伤害减免,但如果已
7、经有了4点护甲,提升一点护甲却只能提升3.73%的伤害减免。 但是,如果我们这样看问题:如果原本伤害减免为0%,从0%提升到20%,面对1000点物理伤害,就是减少了200点伤害,20%的伤害;如果原本伤害减免为60%,从60%提升到80%,面对1000点物理伤害,同样减少了200点伤害,但却减少了500的伤害。因此实际上每点护甲的收益都是一样的。 但根据一阶系统单位阶跃响应图,似乎的确是递减的。说明模型存在一定的缺陷。下面进行进一步研究。2.护甲与有效生命计算 我们先回顾一下我们的实际伤害公式: [1-(护甲值*0.06)/(1+护甲值*0.06
8、)]*初始伤害=最终伤害 其中,(护甲值*0.06)/(1+护甲
此文档下载收益归作者所有