游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8563|回复: 20

[求助] 【数值问题】,增减buff先后问题

[复制链接]

8

主题

128

帖子

1057

积分

金牌会员

Rank: 6Rank: 6

积分
1057
发表于 2013-7-17 21:59:25 | 显示全部楼层 |阅读模式
当单位获得了一个增益buff和一个减益buff,2个buff对应同一属性,并且一个为数值,一个为百分比。应该如何计算?

33

主题

422

帖子

507

积分

高级会员

Rank: 4

积分
507
发表于 2013-7-17 22:54:50 | 显示全部楼层
只要不是叠加或者互斥的。总有时间先后,按时间来。

7

主题

371

帖子

2216

积分

金牌会员

Rank: 6Rank: 6

积分
2216
发表于 2013-7-18 00:28:25 | 显示全部楼层
自己定个规则呗,先加还是先乘。

98

主题

784

帖子

4495

积分

版主

Rank: 7Rank: 7Rank: 7

积分
4495
发表于 2013-7-18 07:22:42 | 显示全部楼层
这个是什么样的问题?
1,所有影响角色a属性的buff,实际上都应该被计为a_mod_plus(Int)和a_plus_times(Int万分之x)两块,所以就算有几百个buff影响a属性,在同一轮重算中互相都不干扰,这是逻辑正常的buff系统工作方式。(这是你的问题吗?)
2,在属性重算时,a=(a+a_mod_plus)x(10000+a_plus_times)/10000,大多策划喜欢这样的公式,我也觉得挺好,你不防也用这个?(这是你的问题吗?)
3,代入数字算算你就能知道结果了。(这是你的问题吗?)
我不知道你的问题在哪环,但是这本不该是个问题,更不存在先后的因素,因为属性重算应该是在同一个时间点上(详见我的Buff机制文),而不是一个buff重算一次,Buff机制中最核心的难题之一,就是策划要归纳出哪些是需要明确先后执行的。
见过很多buff的做法,其实都忽略了一点——加入我们把游戏的技能到Buff理解为开枪,那么技能本身就是枪(简单流程,根据实际项目需要来设计这个流程),它发射出的子弹是技能的效果(造成伤害、产生Buff、甚至踢某人下线、删除某人账号等等,只要你乐意这么做),所以根本不存在先上了哪个buff哪个执行,正确的逻辑是在确定了属性重算点(按我的buff机制下就是获得和失去Buff或者buff层数的时候,且这个buff被标记为需要属性重算),我把角色属性按照上述的公式重新计算一次,这根本没有先后问题。
在buff中典型的可能出现先后的问题就是:攻击伤害减免和攻击吸收或者反弹,我身上同时有一个buff减少我收到的伤害100%和一个攻击吸收(受到的伤害转化为对我的治疗),这时候是最头疼的,我究竟应该回血了还是没有回,这个需要在buff结构里面加上执行优先度,类似2D渲染中加入ZOrder的概念,这是需要策划好好规划的(根据游戏,其实你怎么规划都可以,主要还是游戏的感觉是否对你的路,所以是机制,不是系统)。

8

主题

128

帖子

1057

积分

金牌会员

Rank: 6Rank: 6

积分
1057
 楼主| 发表于 2013-7-18 08:21:01 | 显示全部楼层
猴与花果山 发表于 2013-7-18 07:22
这个是什么样的问题?
1,所有影响角色a属性的buff,实际上都应该被计为a_mod_plus(Int)和a_plus_times(Int ...

其实我现在在尝试性弄一个LOL的数据还原(分析),而之前弄到护甲问题发现这个问题,思路有点乱,资料也没找到。
再思考如黑切及英雄技能牵扯到护甲问题。(不知道您这边有没有资料)

您的意思是:
BUFF无先后就是a=a*(1+debuff+buff),
有先后看顺序咯?

98

主题

784

帖子

4495

积分

版主

Rank: 7Rank: 7Rank: 7

积分
4495
发表于 2013-7-18 09:01:59 | 显示全部楼层
kk3987986 发表于 2013-7-18 08:21
其实我现在在尝试性弄一个LOL的数据还原(分析),而之前弄到护甲问题发现这个问题,思路有点乱,资料也 ...

属性运算的buff不应该存在顺序问题,如果你说LoL,那就肯定没有顺序问题了。

点评

bal
正解  发表于 2013-7-19 21:28

2

主题

167

帖子

670

积分

高级会员

Rank: 4

积分
670
发表于 2013-7-18 09:45:16 | 显示全部楼层
kk3987986 发表于 2013-7-18 08:21
其实我现在在尝试性弄一个LOL的数据还原(分析),而之前弄到护甲问题发现这个问题,思路有点乱,资料也 ...

lol先算BUFF后算DEBUFF,

比如加30%攻速,原来是1攻速,加完以后变成1.3攻速,   
还有减30%攻速的DEBUFF,最后攻速为1.3*(1-0.3)
减速同理
这样算因为LOL本身定义DEBUFF要比BUFF强大


LOL黑切是护甲削减+护甲穿透,护甲削减DEBUFF是单位整体护甲被削减,收到其他人攻击的伤害也会变高,护甲削减计算完了之后再算护甲穿透,护甲穿透是攻击者的属性,先算百分比穿透再算固定穿透

36

主题

1378

帖子

4955

积分

论坛元老

Rank: 8Rank: 8

积分
4955
发表于 2013-7-18 22:28:30 | 显示全部楼层
qowp332 发表于 2013-7-18 09:45
lol先算BUFF后算DEBUFF,

比如加30%攻速,原来是1攻速,加完以后变成1.3攻速,   

你的这个回答不错
分析设计意图的思路清晰

1

主题

3

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2013-7-19 09:36:23 | 显示全部楼层
qowp332 发表于 2013-7-18 09:45
lol先算BUFF后算DEBUFF,

比如加30%攻速,原来是1攻速,加完以后变成1.3攻速,   

这个从程序上没有先算和后算的概念,直接是代入公式就OK了,BUFF和DEBUFF只是看你影响了公式的哪一个部分。
黑切也和你设计有关,只是护甲的数值逻辑处理。

8

主题

128

帖子

1057

积分

金牌会员

Rank: 6Rank: 6

积分
1057
 楼主| 发表于 2013-7-19 19:29:34 | 显示全部楼层
石头的故事 发表于 2013-7-19 09:36
这个从程序上没有先算和后算的概念,直接是代入公式就OK了,BUFF和DEBUFF只是看你影响了公式的哪一个部分 ...

公式不就是先后关系嘛?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-27 04:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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