首页 > 代码库 > EventMachine 系列之简单的服务器
EventMachine 系列之简单的服务器
摘要:Dota(Defence of the Ancients,远古的守护), 是指基于魔兽争霸3:冰封王座(暴雪娱乐公司出品)的多人即时对战自定义地图,可支持10个人同时连线游戏。Dota以对立的两个小队展开对战,通常是5v5,游戏目的是守护自己的远古遗迹(近卫方的生命之树、天灾方的冰封王座),同时摧毁对方的远古遗迹。DotA是目前唯一被暴雪娱乐公司官方认可的魔兽争霸RPG。Dota在大学生中的风靡程度令人咂舌,而随着玩家对游戏的理解深入,本身存在于游戏中的许多数学模型被挖掘出来进行研究。游戏中所直接使用的数学计算虽不复杂,但结合的具体情况越多,对其进行分析就会越困难。本文将对dota中英雄护甲进行建模分析。
关键字:魔兽争霸 Dota 护甲 建模 分析
基本属性介绍
游戏中所直接使用的数学计算虽不复杂,但结合的具体情况越多,对其进行分析就会越困难。本文对此作出初步的探索。 基本属性 DotA中的每一个英雄,都有生命值(HP)、魔法值(MANA)、攻击力(按中文翻译看应该是应该是ATK,但实际英文却是Damage,即物理伤害)、护甲、射程(分远程近战)这5个显然的基本属性,以及魔法抗性、生命回复速度、魔法回复速度、攻击速度、移动速度这5个非常重要而又不能在游戏界面中直接看到的基本属性。此外,还有攻击前/后摇、施法前/后摇、白天/夜晚视野、弹道这些不常考虑的基本属性等。
此外,每个英雄还有三种英雄属性,力量、敏捷、智力。这三种英雄属性并不直接起作用,而是转换为基本属性再起作用。力量属性:每增加一点力量,增加19点生命值和0.03点/秒的生命回复速度。敏捷属性:每增加一点敏捷,提升1%的攻击速度,每7点敏捷增加一点护甲。智力属性:每增加一点智力,增加13点魔法值和0.04点/秒的魔法回复速度。
主属性:每个英雄会把力量、敏捷、智力三者中的某一个当作主要属性,每1点主要属性会额外再增加1点攻击力。
护甲与伤害介绍
伤害分为多种:魔法伤害、物理伤害、神圣伤害等。物理伤害是由英雄的普通攻击造成的,与之相对的是技能攻击,造成魔法伤害。
护甲能抵消的只有物理伤害,而魔抗可以减免魔法伤害,但是本文只讨论物理伤害。下面进行建模,在这之前先定义几个术语:
dd :伤害减免(Damage Decrease)
a : 护甲(Armor)
HP : 生命值,指英雄护甲为0时实际拥有的血量
EPHP : 等效额外物理生命(Equivalent Extra Physical HP),是英雄拥有了护甲之后,可以抵挡超出原有HP的物理伤害。我们将这部分可以额外承受的物理伤害视为EPHP。
建模
首先给出dd和a的关系:
dd ={ (6a%)/(1+6a%), a ≥ 0;
0.94 ** (-a) - 1, -20 < a < 0;
71%, a ≤ -20;
这个公式是暴雪规定的,护甲值可以取小数,但在本文中一律四舍五入保留两位小数并且只讨论a大于等于0的情况。
护甲为0时,能承受的伤害就是HP的大小;护甲大于0时,设初始伤害为c,那么经过护甲的削弱作用,最终伤害e = c × (1 - dd );e的最大值就是HP,那么c的最大值max(c)就是max(e) / (1 - dd);计算出来的max(c)显然就是能承受的最大物理原始伤害,这其实就是EPHP,计算后EPHP = HP×(1 + 6a%),即你要输出HP×(1 + 6a%)大小的物理伤害才能了结一个初始血量为HP护甲为a的英雄。
那么护甲的存在实际上给予了一个英雄额外的抗物理打击能力,这种能力可以理解为给予了额外的生命,定义为EH,其大小显然为HP× 6a%,若视HP是固定的,那么这种抗打击能力与护甲值a是呈线性关系的。这句话有什么意义呢?对a求导,有▲EH = HP×6%,这意味着,每增加一点护甲,能带来的额外生命都是固定的HP×6%,而跟a的值无关。从而护甲为0时买一个守护指环(能增加2点护甲的装备)和在护甲为10时买,效果是一样的。
再举一个例子,当一个英雄HP = 1000, a = 10的时候,他是买一个活力之球(增加250点HP)还是买一个板甲(增加10点护甲)更能抗打呢(暂不考虑价格因素)?
若买活力之球:EPHP = (1000 + 250)× (1 + 10 × 6%) = 2000
若买板甲:EPHP = 1000 × (1 + 20 ×6%) = 2200
显然买板甲更合适,当然这是在只考虑物理攻击的条件下得出的结论,实际对战中
要考虑的因素有很多,比如技能,魔抗,支援等等,但是本文提供的分析有助于更理性的出装,避免胡乱决策导致的失败。玩游戏也可以数据流。
参考:
[1] http://wenku.baidu.com/view/38edca18a76e58fafab0031e
[2] 王君迪(浙江大学 控制科学与工程学系09级) 《Dota护甲系统完全解析》
关键字:魔兽争霸 Dota 护甲 建模 分析
基本属性介绍
游戏中所直接使用的数学计算虽不复杂,但结合的具体情况越多,对其进行分析就会越困难。本文对此作出初步的探索。 基本属性 DotA中的每一个英雄,都有生命值(HP)、魔法值(MANA)、攻击力(按中文翻译看应该是应该是ATK,但实际英文却是Damage,即物理伤害)、护甲、射程(分远程近战)这5个显然的基本属性,以及魔法抗性、生命回复速度、魔法回复速度、攻击速度、移动速度这5个非常重要而又不能在游戏界面中直接看到的基本属性。此外,还有攻击前/后摇、施法前/后摇、白天/夜晚视野、弹道这些不常考虑的基本属性等。
此外,每个英雄还有三种英雄属性,力量、敏捷、智力。这三种英雄属性并不直接起作用,而是转换为基本属性再起作用。力量属性:每增加一点力量,增加19点生命值和0.03点/秒的生命回复速度。敏捷属性:每增加一点敏捷,提升1%的攻击速度,每7点敏捷增加一点护甲。智力属性:每增加一点智力,增加13点魔法值和0.04点/秒的魔法回复速度。
主属性:每个英雄会把力量、敏捷、智力三者中的某一个当作主要属性,每1点主要属性会额外再增加1点攻击力。
护甲与伤害介绍
伤害分为多种:魔法伤害、物理伤害、神圣伤害等。物理伤害是由英雄的普通攻击造成的,与之相对的是技能攻击,造成魔法伤害。
护甲能抵消的只有物理伤害,而魔抗可以减免魔法伤害,但是本文只讨论物理伤害。下面进行建模,在这之前先定义几个术语:
dd :伤害减免(Damage Decrease)
a : 护甲(Armor)
HP : 生命值,指英雄护甲为0时实际拥有的血量
EPHP : 等效额外物理生命(Equivalent Extra Physical HP),是英雄拥有了护甲之后,可以抵挡超出原有HP的物理伤害。我们将这部分可以额外承受的物理伤害视为EPHP。
建模
首先给出dd和a的关系:
dd ={ (6a%)/(1+6a%), a ≥ 0;
0.94 ** (-a) - 1, -20 < a < 0;
71%, a ≤ -20;
这个公式是暴雪规定的,护甲值可以取小数,但在本文中一律四舍五入保留两位小数并且只讨论a大于等于0的情况。
护甲为0时,能承受的伤害就是HP的大小;护甲大于0时,设初始伤害为c,那么经过护甲的削弱作用,最终伤害e = c × (1 - dd );e的最大值就是HP,那么c的最大值max(c)就是max(e) / (1 - dd);计算出来的max(c)显然就是能承受的最大物理原始伤害,这其实就是EPHP,计算后EPHP = HP×(1 + 6a%),即你要输出HP×(1 + 6a%)大小的物理伤害才能了结一个初始血量为HP护甲为a的英雄。
那么护甲的存在实际上给予了一个英雄额外的抗物理打击能力,这种能力可以理解为给予了额外的生命,定义为EH,其大小显然为HP× 6a%,若视HP是固定的,那么这种抗打击能力与护甲值a是呈线性关系的。这句话有什么意义呢?对a求导,有▲EH = HP×6%,这意味着,每增加一点护甲,能带来的额外生命都是固定的HP×6%,而跟a的值无关。从而护甲为0时买一个守护指环(能增加2点护甲的装备)和在护甲为10时买,效果是一样的。
再举一个例子,当一个英雄HP = 1000, a = 10的时候,他是买一个活力之球(增加250点HP)还是买一个板甲(增加10点护甲)更能抗打呢(暂不考虑价格因素)?
若买活力之球:EPHP = (1000 + 250)× (1 + 10 × 6%) = 2000
若买板甲:EPHP = 1000 × (1 + 20 ×6%) = 2200
显然买板甲更合适,当然这是在只考虑物理攻击的条件下得出的结论,实际对战中
要考虑的因素有很多,比如技能,魔抗,支援等等,但是本文提供的分析有助于更理性的出装,避免胡乱决策导致的失败。玩游戏也可以数据流。
参考:
[1] http://wenku.baidu.com/view/38edca18a76e58fafab0031e
[2] 王君迪(浙江大学 控制科学与工程学系09级) 《Dota护甲系统完全解析》
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。