求一个游戏的dnf最终伤害计算公式式

分享到:更多
类型:角色扮演评分:语言:中文
游戏大礼包手游开测表
共和国之辉:红警安卓双11礼包口袋妖怪复刻双11狂欢礼包天子光棍节双十一疯狂派对礼包幻灵首发游戏园礼包明珠三国2光棍节约玩双端礼包《口袋妖怪重制》更新畅享礼包
11-16公测11-15内测11-14内测11-14内测11-10内测11-08内测11-04公测11-03公测11-01内测11-01内测
推荐阅读本月最新
手游排行网游单机
12345678910
12345678910游戏设计中有哪些经典的计算公式? - 知乎<strong class="NumberBoard-itemValue" title="被浏览<strong class="NumberBoard-itemValue" title="8分享邀请回答545 条评论分享收藏感谢收起47553 条评论分享收藏感谢收起关于游戏里伤害值的计算_百度知道
关于游戏里伤害值的计算
火炬之光2(类暗黑破坏神)中伤害值怎么计算?有各种元素(闪电、火焰、毒素等)伤害和防御,物理伤害和防御,受到的伤害怎么反应到血量的减少上来?反弹伤害的话,这部分伤害自己会不会受到?谢谢!
我有更好的答案
根据每个游戏不同,伤害对于防御是不同的,如果是最简单的算法的话,攻击值-防御值=掉的血,这很简单,100攻击,50护甲,然后你掉了50滴血。但也有些游戏把防御值乘上了个系数的,比如就变成:攻击值-防御值*0.4=掉的血,每个游戏都有不同的算法,不需要过多的去纠结吧。。。反弹这个东西有两种,一种是反弹一个固定值,比如50,攻击100的话,你掉50血,对面掉50血。第二种就是百分比反弹,比如反弹80%的伤害,比较好理解吧。元素伤害要看你对应的元素防御,依次用减法去减就OK了。。玩游戏。。别那么认真。。。
采纳率:34%
分析过程及公式见后文结论1:攻击伤害由武器基本物理伤害+五类元素伤害共六项构成,每一次攻击都是由一项或多项伤害构成,你的所有装备加起来有几种属性,就由几种伤害构成。结论2:每一种伤害都单独计算,在最小值和最大值之间随机取值,对应各自的护甲抗性后相加即可得到该次攻击的伤害值。结论3:每次攻击后有四种结果:a&正常伤害b&暴击,每一类伤害乘以暴击伤害加成后相加即得到此次暴击伤害,暴击伤害加成的计算方式为人物所有增加暴击伤害的属性相加得到c&glancing blow,你的攻击太低,不破防就是插边攻击glancing blow了,给1点伤害安慰你d&被怪物格挡,完全没有伤害。结论4:人物属性面板显示的伤害数值是一个伪值,与实际计算存在很大的差异结论5:physical并不参与武器基本物理伤害的计算,每次进入游戏,每把武器的武器战斗修正系数都不一样,取值在1左右变化。结论6:武器专精加成只用于计算武器基本物理伤害,而双持加成却适用于所有类型,前提是你必须2手都拿的是武器。结论7:武器中附魔的伤害随属性提高而线性提高,而宝石的伤害加成受宝石特殊加成影响非线性提高。最终固定伤害部分=技能该级基础伤害*(1+相应加成属性%*X%)注意:1.最终在技能上显示的伤害是已经计算好的最终固定伤害部分,而不是在这个数值上再计算。
2.有些技能在技能说明上没有标明受某属性加成,但实际上是有某属性加成的。
3.技能的固定伤害部分不会在控制台显示伤害数据结论8:X%武器伤害的大小近似于使用此武器普通攻击时六种伤害类型所造成伤害大小的X%之和。结论9:使用技能时是以人物的右手为计算依据。结论10:X%武器伤害技能攻击形成的伤害包括戒指和项链的伤害,同样不受X%影响。武器显示DPS=武器属性上各伤害之和*K一般来说武器基础属性上灰白色文字显示的攻击速度相同,则K值相同,不同武器速度的速度因子不同,大致上,最快的约为1.7,平均的约1.5,慢速的约1.2,最慢的约1.0但也会有特殊X%DPS技能所造成的伤害=使用此武器普通攻击时六种伤害类型所造成的伤害大小*K*X%之和结论11:X%DPS技能所造成伤害并不是武器上的DPS值*X%,所形成的伤害为:人物使用此武器普通攻击时六种伤害类型所造成的伤害大小*K*X%之和,弓MM的冷冻射击和爆裂新星技能会把所有的元素伤害都转为ice或fire。武器K值越大,技能伤害越高。补:结论1:游戏中,玩家每一次攻击的伤害都是浮动的。运气好与运气差,伤害相差可能悬殊。结论2:玩家攻击时,每一种伤害类型单独计算,对应怪的相应抗性来过滤。结论3:在武器中镶嵌加伤型宝石可大幅增加武器的实际总伤害。结论4:远程专精的加成对武器上的元素伤害无效。结论5:两把武器的DPS相同,速度因子不同,镶嵌同等伤害的宝石,快速的武器伤害加成更大,因为速度因子大 武器的实际伤害与武器中各伤害类型的单独DPS有关,与怪的相应抗性有关。远程专精和近战专精对武器中的元素伤害均无加成。力量或敏捷属性对武器中的所有伤害均有加成。双持专精对武器中的所有伤害均有加成法力属性对武器中的元素伤害有加成。宝石伤害的作用原理特殊。普通攻击总伤害=武器物理伤害最大值【(使用手武器基础物理伤害最大值*(1+对应属性加成+对应武器专精加成+双持加成+对应攻击方式加成+伤害加成)*武器战斗修正系数+使用手武器镶嵌宝石物理伤害】+元素physical伤害最大值【武器附魔physical伤害*(1+对应属性加成+对应攻击方式加成+双持加成+伤害加成)+使用手武器宝石镶嵌physical伤害*(1+对应属性加成+对应攻击方式加成+双持加成+伤害加成+ 宝石特殊加成)+首饰附带physical伤害+非使用手武器宝石镶嵌物理伤害】+元素fire、ice、electric、poison伤害最大值【(使用手武器基础元素伤害最大值+使用手武器附魔元素伤害)*(1+对应属性加成+魔法属性加成+双持加成+对应攻击方式加成+伤害加成)+使用手武器宝石镶嵌元素伤害*(1+魔法属性加成+对应攻击方式加成+双持加成+伤害加成+宝石特殊加成)+首饰附带元素伤害+非使用手武器宝石镶嵌元素伤害】技能攻击总伤害=最终固定伤害部分【技能该级基础伤害*(1+相应加成属性%*X%)】+Y%*武器伤害【近似普通攻击总伤害】+Z%DPS伤害【使用此武器普通攻击时六种伤害类型所造成的伤害大小*K*Z%之和,即(武器物理伤害最大值+元素fire、ice、electric、poison伤害最大值+元素physical伤害最大值)* K*Z%,但是也要参考技能的具体说明,如出现伤害转化为fire、ice、electric、poison元素时,元素physical伤害也会受到魔法属性加成,需重新计算元素physical伤害最大值】注:K =武器显示DPS/武器属性上各伤害之和 设武器最大物理伤害=A
physical伤害=P
元素fire、ice、electric、poison伤害最大值之和=f+i+e+p=S
对应武器专精加成=0.4
(1+对应属性加成+双持加成+对应攻击方式加成+伤害加成)=(1+对应属性加成+0.6+对应攻击方式加成+伤害加成)=m
魔法属性加成=I
最终固定伤害部分=B
Z%=Z可以导出K= D/(A+P+S)≥1由于Y%*武器伤害和Z%DPS伤害不可能同时出现,可知技能攻击总伤害=B+[A(m+0.4)+Pm+S(m+I)]Y或B+ [A(m+0.4)+Pm+S(m+I)]ZD/(A+P+S)
=B+Y[m(A+P+S)+0.4A+IS]或B+ZD[m(A+P+S)+0.4A+IS]/(A+P+S)由于B、Y、I、m为定值可知前一部分=B+Y[m(A+P+S)+0.4A+IS,基本正比于(A+P+S),其中0.4A+IS根据职业不同、属性不同,有所取舍。后一部分=B+ZD[m(A+P+S)+0.4A+IS]/(A+P+S)假设为D固定值、P不大、I远小于0.4,可知后一部分=B+ZDm+ZD(0.4A+IS)/(A+P+S)
=B+ZD(m+0.4)-ZD[(0.4-I)S+0.4P]/(A+P+S)≈B+ZD(m+0.4)-0.4ZDS/(A+P+S),基本正比于(A+P+S)但是假如P&S=0时后一部分=B+ZD(m+0.4),只与D有关,和武器速度及各类伤害数值无关。假设D不为固定值后一部分=B+Z[Dm+0.4AD/(A+P+S)+IS/(A+P+S)]
=B+Z(Dm+0.4AK+ISK),可带入计算。
火炬之光2我也玩过,很不错的游戏,刚出来的时候和舍友一起联机玩很欢乐玩一个游戏玩的高兴就好,何必纠结这个问题,这种伤害计算官方没有公布具体的计算方法,玩家只能自己摸索,最多就只能给出一个近似的计算方法,给你一个链接,里面怎么计算写的很详细
为您推荐:
其他类似问题
您可能关注的内容
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。王者荣耀英雄伤害计算公式
玩了农药一年半了,一直搞不懂英雄的伤害到底是怎么计算的,今早起床打了一把,然后终于没忍住上网查了下,以下是网上的一些总结加上个人的一些见解。
物防和法防计算公式等完全一样,本文以物防为例。
实际物防计算公式:
实际物防=(防御方物防数值-攻击方固定穿透)*(1-攻击方穿透比例)
假设防御方物防1300,攻击方固定穿透300(百穿铭文100+黑切200),攻击方破甲弓穿透比例45%
因此防御方的实际物防为()*(1-45%)=550
实际伤害计算公式:
实际伤害=攻击方输出*602/(防御方实际物防+602)
假设攻击方输出1000,防御方实际物防按上文550算
因此实际伤害为/(550+602)=523
PS:攻击方输出:如果为技能伤害那就是,技能固定数值+物攻数值*技能百分比
如果为普攻伤害直接就是,物攻数值
免伤计算公式:
免伤比=物防/(物防+602)
物防100时免伤14%
200是25% 300是33%
400是40% 500是45%
600是50% 700是54%
800是57% 900是60%
PS:以上为去零数值,并且并非为实际免伤,实际免伤需要用到的数据为实际物防,需要大家自行计算,实际免伤计算公式:实际免伤比=实际物防/(实际物防+602)
依照上文假设:1300物防
因此免伤比为1300/()=68%
依照上文假设:计算得到的550实际物防
因此实际免伤比为550/(550+602)=48%
经过我十几把多英雄1V1人机的测试,不算装备的加成,达到15级时,不同英雄的裸物防在(350 \pm 30)上下浮动,裸法防固定169。
因此ADC和法师正常出装不出肉的情况下,加上一双护甲鞋最多是(460 \pm 30)的物防。
上单半肉英雄攻击装一般最多出两件,出黑切加百穿铭文15级时共300穿透,对ADC和法师的输出能力完全够,破甲弓就显得有些多余了,并且不如破军的伤害来的高。但是如果有些人非要上单半肉英雄追着肉打我也无FUCK说,您出破甲弓我没意见。
ADC英雄因为大多是攻速铭文而且不出黑切,身在C位对脆皮和肉都进行输出,所以破甲弓是不二的选择。
刺客打野英雄游走发育抓人,脆皮和肉都是要吃的,出装视情况而定了,不过黑切加百穿基本可以应付大多数情况,如果对面太肉的情况下补个破甲也未尝不可。
辅助不说,无脑堆肉就可以,输出装出不出取决于顺逆风,大多数情况下输出全靠红莲。
靠文字说的不直观我们来计算一下,看看数据。
假设防御方的ADC和法师的物防是460,攻击方的输出是1000
①黑切加百穿铭文共300穿透
实际物防为460-300=160
实际伤害为/(160+602)=790
②破甲弓45%穿透比例加百穿铭文100穿透
实际物防为(460-100)*(1-45%)=198
实际伤害为/(198+602)=753
790〉753,460物防的条件下黑切加百穿铭文表现更好
假设防御方的出肉英雄的物防是1300,攻击方的输出是1000
①黑切加百穿铭文共300穿透
实际物防为0
实际伤害为/()=376
②破甲弓45%穿透比例加百穿铭文100穿透
实际物防为()*(1-45%)=660
实际伤害为/(660+602)=477
477〉376,1300物防的条件下破甲弓加百穿铭文表现更好
x-300=(x-100)*(1-45%)
因此在敌方物防小于544时黑切加百穿铭文更合算,大于544时破甲弓加百穿铭文更合算,当然两者具存收益最大,但是大多数情况鱼和熊掌还是要进行取舍以平衡生存和进攻能力。
因为整篇文章都在赘述物防,所以最后说一下法师,其实法防和物防的计算公式等完全一样,但是由于王者荣耀里的物理英雄的数量要远远高于法师,所以导致的结果是,大家基本都是多堆物防,在有限的6个位置中(除非对面法师极多)基本最多出个韧性鞋搭配魔女或者是不死鸟。
以魔女为例
防御方达到15级(1级固定50)固定169裸法防,加上韧性鞋110法防,加上魔女360法
攻击方出标配面具(75法穿)配合铭文(梦魇十个24法穿)为99法穿,再出标配法穿棒
为45%法穿比例。(大多数人应该都是梦魇,还有一部分人是圣人我就不说了,以梦魇
为例,另外还有一些人问出不出法穿鞋,我想说的是鞋有更好的选择,需要更灵活变通
,反正我很少出法穿鞋)
实际法防为(169+110+360-99)*(1-45%)=297
实际法免为297/(297+602)=33%
由此可以看出在大环境下,由于不能出更多的法防神装,所以即使出了韧性鞋和魔女的
前提下,法免比例依旧很低,攻击方法师仍然能打出很高的伤害,所以提醒各位,打团
前尽量干掉法师再开团,可能大家以前也会先干掉法师,那我在这就当给大家加深遍印象。
此文结合网上的一些数据和我自己的一些想法写出,希望对没事闲着喜欢打农药的大家
有所帮助,谢谢观看!
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点查看: 11541|回复: 64
贡献一个骑砍伤害计算公式
在线时间 小时
本帖最后由 独孤后人 于
22:00 编辑
&&骑砍战团的完整伤害计算公式一直是T社的商业机密,但是WSE的作者在11年就通过逆向骑砍程序得到了这个计算公式并在网上公布了出来。这也就是网上很多伤害模拟器使用的公式的来源了。
WSE作者的原贴在:
我在后面会把代码搬运过来方便大家直接看。
一、原始伤害raw_damage
&&首先,是计算原始伤害(raw_damage),这一步以武器伤害的数值为基准,通过蓄力时间、速度奖励、熟练度、技能等级、天气、角色力量、双手惩罚等因素进行数值的计算和修正:
if hold_time &= 1.1
& && &&&hold_bonus = 1.2
elif hold_time &= 0.6:
& && &&&hold_bonus = (1.1 - hold_time) * 0.6 + 1.2
elif hold_time &= 0.5:
& && &&&hold_bonus = 1.5
else:
& && &&&hold_bonus = hold_time + 1.0
raw_damage = weapon_damage * (clamp(hold_bonus, 1.0, 2.0) * 0.5 + 0.5)
if weapon_type == 'one_handed' or weapon_type == 'two_handed' or weapon_type == 'polearm':
& && &&&raw_damage *= math.pow(melee_damage_speed_power, speed_bonus)
elif weapon_type == 'crossbow' or weapon_type == 'bow' or weapon_type == 'throwing':
& && &&&raw_damage *= math.pow(missile_damage_speed_power, speed_bonus)
if weapon_type == 'crossbow':
& && &&&if raining:
& && && && && & raw_damage *= 0.75
else:
& && &&&raw_damage *= proficiency * 0.01 * 0.15 + 0.85
& && &&&
& && &&&if weapon_type == 'bow':
& && && && && & raw_damage *= min(power_draw, difficulty + 4) * 0.14 + 1
& && && && && &
& && && && && & if mounted:
& && && && && && && && &raw_damage *= horse_archery * 0.019 + 0.8
& && && && && &
& && && && && & if raining:
& && && && && && && && &raw_damage *= 0.9
& && &&&elif weapon_type == 'throwing':
& && && && && & raw_damage *= power_throw * 0.1 + 1.0
& && && && && &
& && && && && & if mounted:
& && && && && && && && &raw_damage *= horse_archery * 0.019 + 0.8
& && &&&elif weapon_type == 'one_handed' or weapon_type == 'two_handed' or weapon_type == 'polearm':
& && && && && & raw_damage *= power_strike * 0.08 + 1.0
& && &&&raw_damage += strength / 5.0
& && &&&if (weapon_type == 'two_handed' or weapon_type == 'polearm') and (has_shield or mounted):
& && && && && & raw_damage *= 0.85
& && && && && &
& && && && && & if weapon_type == 'polearm':
& && && && && && && && &raw_damage *= 0.85
& && && && && &
& && && && && & if weapon_flags & itp_two_handed:
& && && && && && && && &raw_damage *= 0.9
raw_damage = clamp(raw_damage, 0, 500)
复制代码
有几点说明一下
1.蓄力会有一个伤害的奖励。具体来说,蓄力奖励在0-0.5秒之间逐步上升,在0.5秒至0.6秒之间达到最大,即伤害为武器数值的1.5倍。 蓄力0.6秒之后就开始下降,蓄力超过1.1秒,奖励就变成1.2倍不会再变化。
2.熟练度会影响除弩之外所有武器的伤害, 至少保证加100点熟练度,才能保证发挥武器数值100%的伤害,此外,每额外100点熟练度会加15%的武器伤害。
3.弩比较特殊:
它的伤害既不受熟练度影响,也不受骑射技能影响,只在下雨天气时才会受到影响,发挥75% 的威力。这很符合真实世界中弩的特性 :一把上好弦的弩,即使交给小孩子来扣动扳机也是一样的威力。
4.另外,长杆和双手武器在持盾和骑马的时候,伤害会受到负面影响:
最惨的情况:双手长杆骑在马上(双手长杆就是无法拿盾的长杆),只能发挥原本65%的威力!
其次就是: 普通长杆骑着马,或者普通长杆拿个盾,只能发挥72.25% 。
再次就是:纯双手武器骑马(比如双手剑),只能发挥76.5%
单/双手两用的武器(比如手半剑),不论骑马还是持盾,都是发挥85%威力,这点相比纯双手武器还算好一些。
5.关于速度加成的奖励,战团有一个被诟病的BUG,就是两个速度相同,一前一后同向全速前进的骑兵(简单说就是追击战), 如果前面的骑兵向后面的骑兵射一箭或者丢一镖,那么在计算后面被打中骑兵受到的伤害时,会有一个很高的速度加成,相当于后面的骑兵正面冲向一个静止目标,被静止目标投出的道具射中时的相对速度。
这显然是不符合真实世界中的物理规则的,否则,你在高铁上拿小球砸一下你后座的人,就会出人命了。所以,追击一个有远程武器的骑兵,在此BUG影响下是有额外的风险的。
二、有效伤害effective_damage
&&经过代码1计算后得出了原始的伤害raw_damage后,下一步开始在原始伤害的基础上,进行护甲对伤害的吸收及减免,最后得出最终的有效伤害值effective_damage。这一部分的计算过程是存在随机值的,也就是说,骑砍里最终的有效伤害是在一定范围内随机浮动的,不受玩家控制。
armor = appropriate_armor_value_for_hit_location
if hit_shield_on_back:
& && &&&armor += shield_resistance + 10
soak_factor = armor * module.ini_soak_factor_for_damage_type
reduction_factor = armor * module.ini_reduction_factor_for_damage_type
if item_flags & itp_extra_penetration:
& && &&&soak_factor *= module.ini_extra_penetration_soak_factor
& && &&&reduction_factor *= module.ini_extra_penetration_reduction_factor
randomized_soak = (random.random() * 0.55 + 0.45) * soak_factor
randomized_damage = (random.random() * 0.1 + 0.9) * raw_damage
soaked_damage = randomized_damage - randomized_soak
if (soaked_damage & 0.0):
& && &&&soaked_damage = 0.0
randomized_reduction = math.exp((random.random() * 0.55 + 0.45) * reduction_factor * 0.014)
reduced_damage = (1.0 - 1.0 / randomized_reduction) * soaked_damage
if (reduction_factor & 0.00001):
& && &&&reduced_damage&&= 0.0
damage_difference = round(reduced_damage + randomized_soak)
effective_damage = randomized_damage - damage_difference
if hit_bone == head:
& && &&&effective_damage *= 1.2
& && &&&if item_is_ranged:
& && && && && & effective_damage *= 1.75
elif hit_bone == calf or hit_bone == thigh:
& && &&&effective_damage *= 0.9
effective_damage = clamp(effective_damage, 0.0, 500.0)
复制代码
&&简单来说,根据武器的伤害类型,护甲会吸收及减免一部分伤害,对不同伤害类型吸收减免的系数在module.ini里有定义。比较有意思的是,在计算完护甲对伤害的吸收及减免后,还有一个对击中部位的处理,即无论近战还是远程,打击头部都是最有效的(近战120%,远程210%),打击腿、脚部是伤害最低的(90%)。所以打架时劈头盖脸的乱砍准没错的,说不定就砍到大动脉了,哈哈。
&&另外,根据代码内容,背在背后的盾牌也大有用处。具体来说,如果敌人正好击中了你背后背盾牌的地方,那么在这一部分计算伤害减免的时候,你的护甲会按照被击打部位的护甲值+盾牌抗击+10 来计算,这可是很高的一个加强了呢,皮甲直接变板甲了有没有!
&&所以笔者本人在了解到这个公式后, 有时候拿双手武器向对方弓箭手冲锋时,在他射出箭时,我在躲箭时通常最后会屁股对着来箭方向,万一被射中背后,有盾牌还能少点伤害嘛~
&&其实在战团初期,大约还是测试版本的时候,背后盾牌有一个更逆天的设定,就是在盾牌在背后也能起到完全挡住远程武器的作用,这就和现在在手里拿着盾牌但是不举起来也能挡住箭是差不多的。后来因为影响平衡及游戏性,就改成现在这样了。
&&以上搬运来的代码只能算是伪代码。掌握了算法,就可以自己写出模拟器了。比如笔者之前写了一个CRPG的模拟器地址是
主要就是用的上面的公式,不过CRPG里面对伤害还有其他的附加处理,这里只把战团部分的主要代码分享出来供参考(PHP代码,非专业码农,将就看吧)。
function random()
& & return mt_rand()/mt_getrandmax();
//clamp a number just like how clamp() use in other language.
function clamp($x,$min,$max)
& & if ($x&$min){
& && &&&return $
& & }elseif ($x&$max){
& && &&&return $
& & }else{
& && &&&return $x;
function raw_damage($weapon_type,$weapon_damage,$difficulty,$hold_time,$speed_bonus,$strength,$proficiency,$power_skill,$horse_archery,$has_shield,$mounted,$raining)
& && &&&if(func_num_args()!=12){return -1;}
& && &&&$is_melee=($weapon_type==one_handed)||($weapon_type==two_handed)||($weapon_type==polearm);
& && &&&$is_ranged=($weapon_type==crossbow)||($weapon_type==bow)||($weapon_type==thrown);
& && &&&//$hold_time=round(random()*2, 2);//this is for test use.randomized a hold time from 0 - 2 seconds.
& && &&&if ($hold_time&=1.1){
& && && && && & $hold_bonus = 1.2;
& && &&&}elseif ($hold_time &= 0.6){
& && && && && & $hold_bonus = (1.1-$hold_time)*0.6+1.2;
& && &&&}elseif ($hold_time &= 0.5){
& && && && && & $hold_bonus = 1.5;
& && &&&}else{
& && && && && & $hold_bonus = $hold_time+1.0;
& && &&&$raw_damage = $weapon_damage*(clamp($hold_bonus,1.0,2.0)*0.5+0.5);
& && &&&if ($is_melee){
& && && && && & $raw_damage *= pow(melee_damage_speed_power,$speed_bonus);
& && &&&}elseif ($is_ranged){
& && && && && & $raw_damage *= pow(missile_damage_speed_power,$speed_bonus);
& && &&&if ($weapon_type==crossbow){
& && && && && & if ($raining){
& && && && && && && && &$raw_damage *= 0.75;
& && && && && & }
& && &&&}else{
& && && && && & $raw_damage *= $proficiency*0.01*0.15+0.85;
& && && && && & if ($weapon_type == bow){
& && && && && && && && &$raw_damage *= min($power_skill, $difficulty + 4) * 0.14 + 1;
& && && && && && && && &if ($mounted){
& && && && && && && && && && &&&$raw_damage *= $horse_archery * 0.019 + 0.8;
& && && && && && && && &}
& && && && && && && && &if ($raining){
& && && && && && && && && && &&&$raw_damage *= 0.9;
& && && && && && && && &}
& && && && && & }elseif ($weapon_type==thrown){
& && && && && && && && &$raw_damage *= $power_skill * 0.1 + 1.0;
& && && && && && && && &if ($mounted){
& && && && && && && && && && &&&$raw_damage *= $horse_archery * 0.019 + 0.8;
& && && && && && && && &}
& && && && && & }elseif ($is_melee){
& && && && && && && && &$raw_damage *= $power_skill * 0.08 + 1.0 ;
& && && && && & }
& && && && && & $raw_damage += $strength / 5.0;
& && && && && & if ((($weapon_type==two_handed)||($weapon_type==polearm)) && ($has_shield||$mounted)){
& && && && && && && && &$raw_damage *= 0.85;& & //2s,ps,2m,22m,pm,2pm, 2sm, psm
& && && && && && && && &if ($weapon_type==polearm){& & //ps,pm,psm,2pm
& && && && && && && && && && &&&$raw_damage *= 0.85;
& && && && && && && && &}& && &&&
& && && && && && && && &if ( (($weapon_type==two_handed)&&(!$has_shield)&&($mounted))||(($weapon_type==polearm)&&(!$has_shield)&&($mounted)) ){//22m,2pm
& && && && && && && && && && &&&$raw_damage *= 0.9;
& && && && && && && && &}
& && && && && & }
& && &&&$raw_damage = clamp($raw_damage, 0, 500);
& && &&&return $raw_
function effective_damage($hit_bone,$raw_damage,$damage_type,$extra_penetration,$hit_shield_on_back,$shield_resistance,$armor,$low_high)
& & if(func_num_args()!=8){return -1;}
& & $is_melee=($weapon_type==one_handed)||($weapon_type==two_handed)||($weapon_type==polearm);
& & $is_ranged=($weapon_type==crossbow)||($weapon_type==bow)||($weapon_type==thrown);
& & if( $damage_type==cut ){
& && &&&$soak_factor_for_damage_type=armor_soak_factor_against_
& && &&&$reduction_factor_for_damage_type=armor_reduction_factor_against_
& & }elseif ($damage_type==pierce){
& && &&&$soak_factor_for_damage_type=armor_soak_factor_against_
& && &&&$reduction_factor_for_damage_type=armor_reduction_factor_against_
& & }elseif ($damage_type==blunt){
& && &&&$soak_factor_for_damage_type=armor_soak_factor_against_
& && &&&$reduction_factor_for_damage_type=armor_reduction_factor_against_
& & if ($hit_shield_on_back){
& && &&&$armor += $shield_resistance+10;
& & $soak_factor= $armor*$soak_factor_for_damage_
& & $reduction_factor = $armor*$reduction_factor_for_damage_
& & if ($extra_penetration){
& && &&&$soak_factor *= extra_penetration_soak_
& && &&&$reduction_factor *= extra_penetration_reduction_
& & if ($low_high==highest){
& && &&&$randomized_soak= (0.0 + 0.45)*$soak_
& && &&&$randomized_damage= (0.1 + 0.9)*$raw_
& & }elseif ($low_high==lowest){
& && &&&$randomized_soak= (0.55 + 0.45)*$soak_
& && &&&$randomized_damage= (0.0 + 0.9)*$raw_
& & }elseif ($low_high==random){
& && &&&$randomized_soak= (random()*0.55 + 0.45)*$soak_
& && &&&$randomized_damage= (random()*0.1+0.9)*$raw_
& & $soaked_damage=$randomized_damage - $randomized_
& & if ($soaked_damage & 0.0){
& && &&&$soaked_damage=0;
& & if ($low_high==highest){
& && &&&$randomized_reduction = exp((0.0 + 0.45)*$reduction_factor*0.014);
& & }elseif ($low_high==lowest){
& && &&&$randomized_reduction = exp((0.55 + 0.45)*$reduction_factor*0.014);
& & }elseif ($low_high==random){& &
& && &&&$randomized_reduction = exp((random()*0.55+0.45)*$reduction_factor*0.014);
& & $reduced_damage = (1.0-1.0/$randomized_reduction)*$soaked_
& & if ($reduction_factor & 0.00001){
& && &&&$reduced_damage = 0.0;
& & $damage_difference = round($reduced_damage + $randomized_soak);
& & $effective_damage = $randomized_damage - $damage_
& & if ($hit_bone==head){
& && &&&$effective_damage*=1.2;
& && &&&if ($is_ranged){
& && && && &$effective_damage *= 1.75;
& & }elseif (($hit_bone==calf)||($hit_bone==thigh)){
& && &&&$effective_damage *= 0.9;
& & $effective_damage=clamp($effective_damage,0.0,500.0);
& & return $effective_
}
复制代码
另外,骑砍中远程飞行道具,随着飞行时间的增长,伤害就会下降,在击中目标后,会根据飞行时间计算伤害。 但具体计算公式还没有,希望有知道的骑友能补充一下。
题外话:国内的MOD似乎侧重于单机剧情,建模、功能设计、历史、文化展示方向的多一些,而涉及联机或竞技的较少。上文公式引用的帖子是WSE作者在11年就发布过的,在国内就少有问津。&&CRPG MOD应该说是在这方面钻研是比较深的了,WSE的作者就在他们团队中。 因此,在他们的联机MOD中,如何重新设计各种数值来提升游戏体验及平衡性,他们是能从数学建模上来进行分析和设计的。&&如果说对于单机MOD来说,平衡还能靠参考原版数值、或通过主观感觉和不断手动调试来进行而不会引起平衡性问题,或者平衡性问题根本不是一个需要考量的因素的话,那么想要做联机MOD,尤其是竞技性或对抗性比较高的联机MOD的话,这些底层的公式就不能不考虑了。
第纳尔 +100
鲜花鸡蛋&&在 09:35&&送朵鲜花&&并说:良心&&在 00:13&&送朵鲜花&&并说:我非常同意你的观点,送朵鲜花鼓励一下&&在 23:43&&送朵鲜花&&并说:我非常同意你的观点,送朵鲜花鼓励一下&&在 13:13&&送朵鲜花&&并说:楼主好样的,这样的转贴也是很重要的技术贴,不要因为某些人莫名其妙的恶意坏了心情&&在 12:53&&送朵鲜花&&并说:感谢您的转贴,多年来的谜题终于得解&&在 14:08&&送朵鲜花&&并说:我非常同意你的观点,送朵鲜花鼓励一下&&在 00:29&&送朵鲜花&&并说:我非常同意你的观点,送朵鲜花鼓励一下&&在 16:39&&送朵鲜花&&并说:我非常同意你的观点,送朵鲜花鼓励一下&&在 13:57&&送朵鲜花&&并说:我非常同意你的观点,送朵鲜花鼓励一下&&在 12:09&&送朵鲜花&&并说:强烈要求加精
在线时间 小时
多年前老A给过的一个简粗的伤害公式:
#Reduced_damage =base_damage - (armor * armor_soak_factor_against)& &
#Final damage =&&Reduced_damage * (1 -&&(armor/100 * armor_reduction_factor_against))
在线时间 小时
本帖最后由 独孤后人 于
17:07 编辑
多年前老A给过的一个简粗的伤害公式:
#Reduced_damage =base_damage - (armor * armor_soak_factor_again ...
那个是很久以前官网有人贴出自己猜测的计算护甲对伤害的减免的公式,老A对他猜测的公式做出的答复。老A只给了一部分,但已经很厚道了。曾经国内某骑砍类网游上线,加了设计师QQ聊天,聊到伤害计算公式,设计师只肯透露“某某因素会有影响”,具体公式是一点点也不肯透露的。 不过这个跟身份也有关,毕竟老A是老板。 不然怎么没见T社其他员工敢透露呢。
在线时间 小时
本帖最后由 rubik 于
20:38 编辑
原来,弓箭在雨天也受影响,伤害*0.9,但下降得没有弩突出伤害*0.75。 骑射的效果是每级挽回1.9%的伤害,我以前目测的是2%。 力量居然是简单粗暴地除以5来增加伤害,我以前都以为是像熟练度那样的一个百分比。
还有火枪的问题,新版的战团为了迁就维京征服的投石索(替换火器),改成和投掷武器类似的算法了,只不过没有技能去增强投石索,但力量和熟练度会增加火枪的伤害。
在线时间 小时
原来,弓箭在雨天也受影响,伤害*0.9,但下降得没有弩突出伤害*0.75。 骑射的效果是每级挽回1.9%的伤害,我 ...
火枪这个确实不知道。你是说现在拿破仑战争里的火枪也跟投掷的机制类似了?
在线时间 小时
火枪这个确实不知道。你是说现在拿破仑战争里的火枪也跟投掷的机制类似了?
官方也提供了补救措施,就是module.ini里面的这一行:
use_crossbow_as_firearm = 0
我没有试验过。推测用这个可以将火枪判定为弩,从而不然火器的熟练度,以及力量影响输出伤害。
在线时间 小时
看来以前听见有人说 , 熟练度是 每点增加 0.5% 的伤害值是错误的咯 ?
这个确实给了大家很大一个参考!
在线时间 小时
官方也提供了补救措施,就是module.ini里面的这一行:
use_crossbow_as_firearm = 0
那个应该是把弩当作火枪用,启用之后会改变弩的填装动作。
在线时间 小时
关于熟练度对于伤害的增益部分,个人持保留意见。看过那段后,在下又拿草人试了试,数值有些对不上。不过,因为最近几天还没继续测试,所以依旧是保留意见。另,单就个人手感来说,双手长枪直刺的伤害,反而比带盾的要高。当然,可能是综合因素的结果,比如最适合的速度带来的好手感。
在线时间 小时
本帖最后由 独孤后人 于
13:15 编辑
达尔克内斯 发表于
关于熟练度对于伤害的增益部分,个人持保留意见。看过那段后,在下又拿草人试了试,数值有些对不上。不过, ...
最好拿人来实验。草人是否与人一样还不清楚。另外,保持原地站立以消除速度加成的影响,不要蓄力以消除蓄力的影响,这样结果就最直观了。&&这个我之前做的模拟器,在游戏中实验,数值是完全一致的,其中raw damage 完全符合公式计算的值,&&effective damage在数十次测试样本中达到过计算出来的最小值和最大值,但始终不会超出计算的界限,因此我认为这个公式是正确的。
在线时间 小时
最好拿人来实验。草人是否与人一样还不清楚。另外,保持原地,不要蓄力。&&这个我之前做的模拟器,在游戏 ...
保持原地还好说,但不要蓄力这点真的很难。因为,人手能够控制的时间难以精确到零点几秒。所以,之前在下测试的方式都是在保证其伤害稳定后再进行的。至少,在保证修正系数一致的条件下,只要再去掉修正系数就好了。(顺带,之前测试的手半折减基本也是如此,并且已经精确到16~17%)
在线时间 小时
保持原地还好说,但不要蓄力这点真的很难。因为,人手能够控制的时间难以精确到零点几秒。所以,之前在下 ...
轻点一下鼠标就是不蓄力状态了。& &最好下一个WSE 的SDK , 里面的ti_on_agent_hit 这个触发器的参数可以直接获取到raw_damage的值。&&原版的只能获得一个inflict damage 应该就是最终的伤害, 那么这会是一个浮动的值, 中间有护甲的影响,更容易影响你对熟练度对伤害影响的判断。
在线时间 小时
轻点一下鼠标就是不蓄力状态了。& &最好下一个WSE 的SDK , 里面的ti_on_agent_hit 这个触发器的参数可以 ...
好吧,在下之前可能记错了些东西。
说一下再验证的具体结果吧。
首先,能不要以人为目标还是最好不要。因为部位的损益比草人更严重。
然后,关于草人自身的损益,目前只发现上半身与下半身有些许差别,砍中上半身的伤害大致是砍中下半身的1.1倍不到的样子。
而按照阁下说的,轻点攻击下半身的话,伤害随熟练递增基本正好是15%每100点。而如果是超时蓄力的话,基本是18%~19%或是20%的样子。比例正好为1.1~1.2左右。
最后……就算给在下说什么WSE 的SDK,在下也用不转啊。
不管怎么说,在下现在可以接受这组公式了。感谢楼主分享了。
在线时间 小时
本帖最后由 rubik 于
20:14 编辑
关于畜力那一点,可以开发出一个力量条。玩家畜力时间是很容易获取的,然后根据畜力时间与伤害的线性关系,绘制力量条的长度。玩家看着力量条,就能尽可能做到最大输出。玩家也可以通过力量条来训练节奏感,达到不看力量条,也能掌握最佳畜力时间。
线性关系很简单,前0.5秒,每0.1秒增加0.1倍的伤害。0.5秒达峰值:1.5倍,0.5-0.6秒维持这个峰值。0.6秒开始,每0.1秒下降0.05倍伤害。0.6秒整的时候,已经是1.45倍。以此类推,1.1秒整的时候,就是1.2倍。然后,一直维持1.2倍,不随畜力时间变化。
我记得某个关于维京的游戏里就有这个东西。
在线时间 小时
rubik 发表于
关于畜力那一点,可以开发出一个力量条。玩家畜力时间是很容易获取的,然后根据畜力时间与伤害的线性关系, ...
进一步提升的话,不知道还能不能用动作开体现,用弓来做必须,不续力的话,才半开弓就射出去了,所以伤害较低,而蓄力的过程就是弓拉到最大值的过程!&&
近战武器也一样,不蓄力的话,还没抬到最佳位置就出剑了,而蓄力就是抬到最佳位置的过程!
在线时间 小时
头像被屏蔽
远程武器好像没什么减免
在线时间 小时
本帖最后由 Borr 于
12:15 编辑
这种东西有必要藏着掖着么,还什么机密,搞笑呢。
稍微懂点物理的人,搞一个也就是几分钟的事,说不好比他那个还强些。这种程度的计算还要打探别人的算法,物理得多烂啊。
在线时间 小时
本帖最后由 独孤后人 于
08:26 编辑
这种东西有必要藏着掖着么,还什么机密,搞笑呢。
稍微懂点物理的人,搞一个也就是几分钟的事,说不好比 ...
说的好,那么请问,骑砍开源不?&&不开源的项目,它的全部或部分代码,是不是商业机密? 它们公司自己设计的不对外公开的算法,是不是商业机密?
至于你说的第二部分,研究这个算法根本与物理好不好没有关系,这个算法并没有用到什么物理学的定律或公式,本身也没有什么特别复杂的计算。但是,若不是有人通过逆向工程的手段拿到算法的话,请问之前国内外有任何人自己推算出或者猜出这个算法吗?&&如果像你所说的不需要没必要藏着掖着,何以一个09年就公测的游戏,到现在国内才有我一篇帖子来说这个公式呢?&&强如你进来就一通高论,请问你之前推算出来过完整的算法吗? 你公布过吗?
最后就是别人设计不设计的出来的问题,其他游戏的设计者当然能设计出来很好的算法来为他们自己的项目服务,但是那和骑砍有关系吗? 对于骑砍玩家和MOD作者有用吗?你设计个果粒橙配方也许很多人喜欢喝,但那和可口可乐配方是一回事吗?你设计出个其他什么可乐,你能保证和可口可乐自己的配方一样吗?
在线时间 小时
说的好,那么请问,骑砍开源不?&&不开源的项目,它的全部或部分代码,是不是商业机密? 它们公司自己设 ...
这公式对我来说也就是10分钟的难度。
唉。 你高兴就好。
鲜花鸡蛋&&在 13:41&&砸了鸡蛋&&并说:看你也是个做mod的?放点干货啊 一通BB谁不会&&在 00:17&&砸了鸡蛋&&并说:我不同意你的观点,砸个鸡蛋反对一下
在线时间 小时
本帖最后由 蛋清 于
21:42 编辑
讲道理,藏着伤害公式无非两个目的:1.保持游戏神秘感 2.让玩家自行摸索 (3.懒得公布)
一开始就给答案只会让玩家对某种计算得出来的优越结果(使用某某装备伤害最佳)趋之若鹜。如果游戏只围绕着某种特定的配装进行,那这游戏就是失败的。所以,公布这玩意没什么益处甚至还有害处,不公布这玩意一点影响都没有。正常人会怎么选一目了然。
试想如果是商业机密,反工程得出来公式不就是泄露机密,TW会让你到处乱发吗?WSE还能在TW公开发表么?
↓直接攻击人身的你可以继续了,请继续你的表演
我提高身价干什么,你能给我什么利益? 倒是你这样的人,不讨论内容本身,尽在人家帖子里发点阴阳怪气的言论,还能负责技术板块我也是服了。&
在线时间 小时
本帖最后由 独孤后人 于
13:04 编辑
↑ 请看楼上的这位管理员,他就是下面点评我的人,他被我回帖反驳后,直接给我点评,说我“抬高身价”,“表演” ,我质疑他这种品行根本不配做管理员,他就给我扣个“攻击人身” 的帽子,还是在他自己帖子里编辑个箭头来说我, 你们看看这是个光明磊落的人的行为吗? 你既然是管理人员,你还这样搞,那我有样学样咯。~
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
讲道理,藏着伤害公式无非两个目的:1.保持游戏神秘感 2.让玩家自行摸索 (3.懒得公布)
一开始就给答案 ...
TW没让到处乱发。帖子很快沉了,总共没几个人回复。 在这个帖子发布之后这么多年直到目前为止,还有不少人想知道伤害是如何计算的,但是又不知道具体算法,只能通过做实验来摸索出一个模棱两可的结果。这一点只要用论坛的搜索功能一试就知道有多少人在做无用功了,真像你说的可以到处发,这些人怎么没找到??
制作组对于什么能公布,什么不能公布是有自己的标准的,不是你说的什么懒得公布。 讲道理,制作组想公布出来的东西,早通过MS公布出来了,都可以让你自己动了。这个计算过程怎么这么多年了也不开放到MS里给你修改呢???
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
请大家看看,到这里为止,下面这个管理员突然开始发点评,说些贬损我的怪话。是因为我已经连发了2个贴了,他想让我再发个贴3连他好处罚。这就是一个负责技术板块的管理人员的“计谋”和“胸怀”。我的帖子里不欢迎你这种人来讨论,你但凡还有点自尊心就别再在我帖子里出现↓↓↓
可以到处发≠流传甚广;允许发≠遍地开花;游戏主程序是引擎写的,游戏初始MOD native是用MS写的。
我不否认你这转帖的贡献,但你要非向通过“***机密”来抬高身价,请继续你的表演&
在线时间 小时
这公式对我来说也就是10分钟的难度。
唉。 你高兴就好。
好,既然你这么厉害,我帖子里也说了,目前远程武器的伤害计算,在飞行时间对伤害的影响上还有缺失,请你把那部分算法给补全,我就佩服你,什么话也不说了。你也为论坛做了贡献,你看好不好?
或者你也可以通过给T社写信或发帖询问,看他们是否公布,你看行不行?
在线时间 小时
好,既然你这么厉害,我帖子里也说了,目前远程武器的伤害计算,在飞行时间对伤害的影响上还有缺失,请你 ...
為了防止你三連,故,我在這裡插個話
----------------------------------------------------------------------------
我在看了你的帖子後,覺得這是一個轉帖的貢獻,但是在後面看到你在談話之中扯到一些TW代碼的陰謀論,也服了
在线时间 小时
那岂不是说库枪的偃月刀很废啊
在线时间 小时
為了防止你三連,故,我在這裡插個話
---------------------------------------------------------------- ...
&&我哪里提到TW代码阴谋论,请你指出来。
在线时间 小时
本帖最后由 rubik 于
19:52 编辑
这种东西有必要藏着掖着么,还什么机密,搞笑呢。
稍微懂点物理的人,搞一个也就是几分钟的事,说不好比 ...
设一个密码和破译一个密码,完全是两回事。设一个高强度的密码,没什么门槛,几乎人人都可以干。但是破译一个密码,就算是一个低强度的密码,没有专业知识,也难于登天。
而且在骑砍言骑砍,你设置的伤害公式再合理,也只能自己开发一个独立游戏,然后用进去。基于骑砍引擎做东西,就得被动接受骑砍引擎的核心伤害算法,这是MS触及不到的层面。
这些公式虽然不能改,但是很多参数在module.ini里是可以调整了,了解清楚核心算法,调整起来就可以更加胸有成竹。
之前很多人总结的,每点力量增强百分之多少的伤害,每点熟练度增加百分之多少点伤害都是错的。逆向工程直接得到算法,就免去了各种浪费时间,又无法得到准确结果的测试和试验。
在线时间 小时
哇,看到正版的伤害计算贴了~~~这是找了8年的货,多谢多谢。
一下子豁然开朗的感觉油然而生~
在线时间 小时
哇!厉害了!弩不受熟练度影响?!
在线时间 小时
Borr 发表于
这种东西有必要藏着掖着么,还什么机密,搞笑呢。
稍微懂点物理的人,搞一个也就是几分钟的事,说不好比 ...
这逼装的清新脱俗。这和物理有什么关系?
既然这简单,那您把远程的公式补充下试试
在线时间 小时
关于两匹马相对静止应该是错的,骑马的时候你原地扔个东西后面的人撞上了也是很高伤害,在高铁上原地扔东西不会砸到后面的人
Powered by

我要回帖

更多关于 王者荣耀伤害计算公式 的文章

 

随机推荐