游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3714|回复: 6

[讨论] 关于游戏中效果的叠加,大家的意见如何?

[复制链接]

20

主题

182

帖子

182

积分

注册会员

Rank: 2

积分
182
发表于 2006-7-10 12:34:00 | 显示全部楼层 |阅读模式
游戏中包含很多BUFF&DBUFF
各种效果都有各自的属性  大家是怎么组织它们之间的叠加状态的?
有什么好的思路吗?

52

主题

979

帖子

1066

积分

金牌会员

Rank: 6Rank: 6

积分
1066
QQ
发表于 2006-7-10 15:17:00 | 显示全部楼层

Re:关于游戏中效果的叠加,大家的意见如何?

我的做法是分组。。不知道其他人是怎么做的。。

20

主题

182

帖子

182

积分

注册会员

Rank: 2

积分
182
 楼主| 发表于 2006-7-12 10:34:00 | 显示全部楼层

Re:关于游戏中效果的叠加,大家的意见如何?

楼上的具体是如何操作的?

我的做法是将所有效果一一列出所有属性
然后将这个属性同其他属性的效果是否叠加一一做设置
如晕眩的叠加属性:
晕眩=true //晕眩和晕眩间可以叠加
火焰持续伤害=true //晕眩和火焰持续可以叠加
僵直=false //晕眩的同时不可以僵直

当有多个属性叠加时候,需要他们之间都为true  才被允许叠加

可能有问题,大家发表下看法

52

主题

979

帖子

1066

积分

金牌会员

Rank: 6Rank: 6

积分
1066
QQ
发表于 2006-7-27 16:23:00 | 显示全部楼层

Re:关于游戏中效果的叠加,大家的意见如何?

我的做法是,,给所有的状态分成有限的组别数目,
举个例子,比如2组:有益状态,有害状态
一个单位身上同时只能存在一个组内的一种状态,叠加规则就按照顺序好了,后加上的会覆盖掉前一个状态
这样一来,一个单位身上最多只能有两个状态了
当然组的数量可以增加,这里只是举个例子,两组显然是不够用的

另外,这种处理方法不适合即时类的游戏,比如WOW,WOW显然是另一套更复杂的规则,貌似有个上限的规则

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2006-7-28 11:30:00 | 显示全部楼层

Re:关于游戏中效果的叠加,大家的意见如何?

我的做法是做基类,然后继承派生,叠加多少。。。因为关系到计时队列问题,我也没有好的思路,有上升到感觉了。叠加越少越好

13

主题

184

帖子

186

积分

注册会员

Rank: 2

积分
186
发表于 2006-8-17 00:04:00 | 显示全部楼层

Re:关于游戏中效果的叠加,大家的意见如何?

没什么经验,冒昧说说个人的想法。
楼上说的分类和派生是一种很好的方法,类别越多,派生越细,技能效果越丰富,也说明游戏本身的技能系统越庞大。

对效果接近的技能(如楼上说的僵化和眩晕),可以分到同类,再派生出不同效果,而同类技能应该是不可同时发挥作用的。

对同类派生的每种技能,我认为还应该设置一个优先级,如设置僵化为优先为a,眩晕优先为b,致盲优先为c……不同的技能,拥有不同的优先级,同类中优先级高的技能可以覆盖优先级低的技能。如以上的c可覆盖b,b可覆盖a,前提是游戏设置不存在a可覆盖c以及c不能覆盖a这种设置。否则更复杂。

对同一个技能,也应该设置效果是否可以叠加(可为1,不可为0),时间是否可以叠加的标记(可为1,不可为0)。是否可以为同技能的高等级技能叠加(可为1,不可为0),同时同一个技能不能同等级应该也有一个标记,可直接取等级值1,2,3,4……。

按照以上判断,如果定身类技能分类为A,那么效果不可叠加,持续时间不可叠加,低级技能可被高级技能叠加的僵化一级记为Aa0011,僵化二级为Aa0012……

不过,为了便于程序计算,这个记号中各个符号还必须排序(以下还是以僵化为例子):
最高位为类别标记,此标记应该为识别标记,因为不同类别之间应该不存在冲突。记为A(表示为定身类技能)。一个带有此标记的对象如果有此技能标记,被再次施加技能时候,先检测新施加技能的类别标记最高位是否和已有标记相同,是的话进入覆盖判断,否继续检索玩家身上的buff标记,没有检测到同类标记,即施加到玩家身上。

接下来应该为为派生类优先级标记,高级的覆盖低级的,记为Aa(定身类最优先级低层技能)。程序在此进行标记的第二位优先级判断,新加buff的优先级如果高于已有

接下来我认为应该为技能等级标记,僵直1级记为Aa1。

技能等级后面为同技能不同等级是否可覆盖标记,僵直可覆盖,记为Aa11.

接下来为时间可持续标记,僵直时间不可持续,记为Aa110

最后为效果可持续标记,僵直效果不可叠加,记为Aa1100

以一个已经被施加僵直1级(Aa1100)的角色,受到僵直2级(Aa2100)攻击为例子来说明:

1 程序先判断最高位,检测最高位是否相同

检查技能队列里是否还有其他buff技能,没有的话结束判断,给予对象新技能buff

进入是否可叠加判断
此例中都为A,即进入是否可叠加判断

2提取标记第二位(派生类优先级),进行比较,新技能优先级对于旧技能优先级的状况
高于
直接覆盖,完成判断
低于,不覆盖,完成判断
等于,进入第三位比较
此例中都为a→进入第三位比较

3提取第三位(技能等级判断)
不高于
则跳过第四位(高级是否可覆盖低级的判断),提取第五位判断(时间是否可持续判断)
高于
则提取第四位判断
此例中,新技能为Aa2,高于Aa1,提取第四位判断

4提取buff标记第四位(3不高于跳过此提取)
检测是否可覆盖

用新buff覆盖旧buff进入第五位判断(时间是否可持续判断)

不覆盖,进入进入第五位判断(时间是否可持续判断)
此例中第四位为1,即可覆盖

5提取buff标记第五位
检测buff时间是否可持续判断
为1是
用新技能效果持续时间替代旧技能,提取第六为判断
为0否
保持现有buff持续时间,提取第六为判断
此例中为0

6判断类似5,判断结束以后,结束判断,并且执行

不同派生类技能制止于第二位判断~~

也许这些想法很幼稚,甚至是从楼上各位处得到的启发,忍不住还是将它写了下来~
可惜我不知道怎么上传VISIO,不然省略好多口舌~~请赐教`~指点迷津

13

主题

184

帖子

186

积分

注册会员

Rank: 2

积分
186
发表于 2006-8-17 00:07:00 | 显示全部楼层

Re:关于游戏中效果的叠加,大家的意见如何?

哦,忘记,应该还要留些位来做是否可被解除的标记~~解除也需要在标记上做手脚~~便于判断,呵呵
所有标记应该都是数字吧,我上面是为了便于说明,用了E字母~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-17 15:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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