找回密码
 点一下
查看: 2671|回复: 43

若频繁使用数据模板是否会导致延迟或卡顿?

[复制链接]
发表于 2016-8-31 21:13:52 | 显示全部楼层 |阅读模式
实测经验.

当然我是使用的非常的频繁,不知道会不会有毛病。

我用数据模板做的AP与AD加成。。。。。。。。。。。
 楼主| 发表于 2016-8-31 21:14:20 | 显示全部楼层
很好用,就怕卡。。。。

如果是这个原因我重新撸一遍都可以的,求专业一点的回答。跪谢

真的很关键!!!!
回复

使用道具 举报

发表于 2016-8-31 21:36:11 | 显示全部楼层
东方油瓶 发表于 2016-8-31 21:14
很好用,就怕卡。。。。

如果是这个原因我重新撸一遍都可以的,求专业一点的回答。跪谢

理论上即使卡也不是使用数据模板导致的。至少用数据模板来造成不同伤害是没问题的。

点评

[attachimg]173308[/attachimg] 就是这种规模的,每变化1点AP +一次,少一点,再减回去,偷懒的时候没想太多  详情 回复 发表于 2016-8-31 22:23
嗯呐,了解了,我的操作次数太多了 我把它改成造成时操作应该就好了 不然+50 AP 估计会对1300个不同的数据都改一遍的样子......很伤  详情 回复 发表于 2016-8-31 22:17
回复

使用道具 举报

 楼主| 发表于 2016-8-31 22:17:28 | 显示全部楼层
疯人¢衰人 发表于 2016-8-31 21:36
理论上即使卡也不是使用数据模板导致的。至少用数据模板来造成不同伤害是没问题的。

嗯呐,了解了,我的操作次数太多了

我把它改成造成时操作应该就好了

不然+50 AP 估计会对1300个不同的数据都改一遍的样子......很伤
回复

使用道具 举报

 楼主| 发表于 2016-8-31 22:23:20 | 显示全部楼层
疯人¢衰人 发表于 2016-8-31 21:36
理论上即使卡也不是使用数据模板导致的。至少用数据模板来造成不同伤害是没问题的。

V70N41ZLDOV1FFE@AMIW30O.png
就是这种规模的,每变化1点AP +一次,少一点,再减回去,偷懒的时候没想太多

点评

被你说得好怕,我现在是把属性行为去掉了直接用数据模板字段值来代替了。40多层的单个属性……一次buff就是10层朝上的变动,本地测试的时候直接卡死(目前还在本地测试阶段)。换成数据模板之后反而好了许多,我是在英  详情 回复 发表于 2016-12-18 01:26
问一个问题,如果有这样一个技能,a给b添加一个行为,行为周期性对b造成伤害。那行为长度和伤害值改a的还是b的才能正确响应a的属性加成  详情 回复 发表于 2016-12-17 21:25
回复

使用道具 举报

发表于 2016-8-31 22:56:47 | 显示全部楼层
东方油瓶 发表于 2016-8-31 22:23
就是这种规模的,每变化1点AP +一次,少一点,再减回去,偷懒的时候没想太多

这素啥,这个不是应该用触发实现么,效果树过长实际上也会影响效率的。
大体的方法是使用一个通用的效果,然后用触发获取效果,再根据数据设置一个伤害效果的伤害数据,最后触发令攻击单位对目标单位释放效果。
此外也可以用伤害响应。这个可能稍微有些麻烦。

点评

还有啊~移除行为跟添加行为 如果添加数目过大,可以用这个办法加快效率(非常管用!!!) 效果-数据模板修改count值(添加时) 效果-数据模板修改behavior链接值(清除时) 这个就是最明显的啦,你可以  详情 回复 发表于 2016-9-1 00:32
效果 - 修改玩家 可以用跟"升级"一样的效果去改变数据模板数据,效果跟触发器的操作数据模板一样(不过个人感觉效率肯定要高一些) 我的英雄升级技能就是用这个做的,一个技能做一个这种效果 这个其实效率  详情 回复 发表于 2016-9-1 00:29
回复

使用道具 举报

 楼主| 发表于 2016-9-1 00:29:14 | 显示全部楼层
疯人¢衰人 发表于 2016-8-31 22:56
这素啥,这个不是应该用触发实现么,效果树过长实际上也会影响效率的。
大体的方法是使用一个通用的效果 ...

效果 - 修改玩家

可以用跟"升级"一样的效果去改变数据模板数据,效果跟触发器的操作数据模板一样(不过个人感觉效率肯定要高一些)

我的英雄升级技能就是用这个做的,一个技能做一个这种效果

这个其实效率也不低的,只是我本来优化的很好的,没有瑕疵

就这玩意儿整了点瑕疵,所以考虑到以后的问题还是放弃这种做法,不过这种做法真的是很简单很方便啊~~~一目了然的感觉
回复

使用道具 举报

 楼主| 发表于 2016-9-1 00:32:27 | 显示全部楼层
疯人¢衰人 发表于 2016-8-31 22:56
这素啥,这个不是应该用触发实现么,效果树过长实际上也会影响效率的。
大体的方法是使用一个通用的效果 ...

还有啊~移除行为跟添加行为

如果添加数目过大,可以用这个办法加快效率(非常管用!!!)

效果-数据模板修改count值(添加时)

效果-数据模板修改behavior链接值(清除时)

这个就是最明显的啦,你可以去试试用触发器直接移除添加一个2000层左右的行为

用触发器,会灰常明显的顿一下,用效果添加或者移除就不会!!!~~~
回复

使用道具 举报

发表于 2016-9-1 08:11:50 | 显示全部楼层
东方油瓶 发表于 2016-9-1 00:32
还有啊~移除行为跟添加行为

如果添加数目过大,可以用这个办法加快效率(非常管用!!!)

大约是响应的太多次的行为事件吧
每层行为都会响应的,所以执行2k次必然会卡

点评

我已经删了30%的数据模板修改变成了即使改变(伤害加成用附加伤害去做了系列函数) 明显的好了很多。 我觉得关于数据模板还是尽量少用,我总感觉暴雪在这里面放着一大个坑,只是我们不知道罢了 同一个数据  详情 回复 发表于 2016-9-1 12:23
回复

使用道具 举报

 楼主| 发表于 2016-9-1 12:23:32 | 显示全部楼层
疯人¢衰人 发表于 2016-9-1 08:11
大约是响应的太多次的行为事件吧
每层行为都会响应的,所以执行2k次必然会卡

我已经删了30%的数据模板修改变成了即使改变(伤害加成用附加伤害去做了系列函数)

明显的好了很多。

我觉得关于数据模板还是尽量少用,我总感觉暴雪在这里面放着一大个坑,只是我们不知道罢了

同一个数据,16个玩家用不同的值,鬼知道他们怎么写的代码,总之我以后不到万不得已绝对不用了,实测的时候出现了很多问题,我不用数据模板的时候不可能有这些问题。

最明显的就是,地图跑了5分钟后,结束游戏的时候星际2直接未响应你敢信???
我禁用了除了技能升级外的所有模板修改后,跑30分钟也没事,而且最诡异的是,这个东西是不能靠帧率测试出来的,真是无语啊~ ,顺便,AOS这张图,基本没用多少数据模板,他每个技能每个等级做了N多东西,我是没那么大闲心~~总之感觉有大坑。不然他不至于这样做的。

点评

其实应该用触发器去修改数据模板的,这个卡顿可能是不断的去写内存造成的 改成点数*伤害先算出来再改 这样不管变化多少点都只会去写一次。 另外说一下,之前我有个图在一个游戏周期内每个玩家10个升级每个升级随机变  详情 回复 发表于 2016-12-18 11:03
回复

使用道具 举报

发表于 2016-9-1 13:27:31 | 显示全部楼层
其实目前状态下,完美兼容原有伤害系统的伤害控制系统是很难做出来的,就算不考虑效率问题,也存在其他问题,比如你无法真正改变原有伤害。你可以事先给单位套一个免除伤害的buff,但是这阻挡不了伤害的发生,只是数值变成0而已。只有在响应伤害事件的同时能修改这个值(而不是另外附加一个伤害),才能真正做出伤害控制系统。
回复

使用道具 举报

 楼主| 发表于 2016-9-1 14:00:00 | 显示全部楼层
yxxiaobin 发表于 2016-9-1 13:27
其实目前状态下,完美兼容原有伤害系统的伤害控制系统是很难做出来的,就算不考虑效率问题,也存在其他问题 ...

效果里的伤害造成莫非不是直接造成一次伤害?

响应的时候获取的也是这个附加过后的伤害啊?
回复

使用道具 举报

发表于 2016-9-1 14:11:07 | 显示全部楼层
东方油瓶 发表于 2016-9-1 14:00
效果里的伤害造成莫非不是直接造成一次伤害?

响应的时候获取的也是这个附加过后的伤害啊?

伤害响应应该是可以在事件响应时获取原始伤害和修改后的伤害的。
回复

使用道具 举报

发表于 2016-9-1 14:11:16 | 显示全部楼层
东方油瓶 发表于 2016-9-1 14:00
效果里的伤害造成莫非不是直接造成一次伤害?

响应的时候获取的也是这个附加过后的伤害啊?

伤害响应应该是可以在事件响应时获取原始伤害和修改后的伤害的。

点评

是啊,所以我觉得楼上说的我很奇怪,我从来不会因为这个编辑器做得到做不到什么而发愁(除了网盘存档 -- ) 只会因为,卡,卡,卡,卡而发愁  详情 回复 发表于 2016-9-1 14:30
回复

使用道具 举报

 楼主| 发表于 2016-9-1 14:30:34 | 显示全部楼层
疯人¢衰人 发表于 2016-9-1 14:11
伤害响应应该是可以在事件响应时获取原始伤害和修改后的伤害的。

是啊,所以我觉得楼上说的我很奇怪,我从来不会因为这个编辑器做得到做不到什么而发愁(除了网盘存档 -- )

只会因为,卡,卡,卡,卡而发愁
回复

使用道具 举报

发表于 2016-12-17 21:25:33 来自手机 | 显示全部楼层
东方油瓶 发表于 2016-8-31 22:23
就是这种规模的,每变化1点AP +一次,少一点,再减回去,偷懒的时候没想太多

问一个问题,如果有这样一个技能,a给b添加一个行为,行为周期性对b造成伤害。那行为长度和伤害值改a的还是b的才能正确响应a的属性加成
回复

使用道具 举报

发表于 2016-12-18 01:26:28 来自手机 | 显示全部楼层
东方油瓶 发表于 2016-8-31 22:23
就是这种规模的,每变化1点AP +一次,少一点,再减回去,偷懒的时候没想太多

被你说得好怕,我现在是把属性行为去掉了直接用数据模板字段值来代替了。40多层的单个属性……一次buff就是10层朝上的变动,本地测试的时候直接卡死(目前还在本地测试阶段)。换成数据模板之后反而好了许多,我是在英雄升级、英雄学习技能和获得相关buff的时候直接数据模板设置的相应效果加成,并且精确筛选只修改涉及的字段不修改无关的。  我不知道你的数据模板有多夸张,如果比我夸张的话我就放心了。 (不对,我还有物品没做,泪目)
回复

使用道具 举报

发表于 2016-12-18 11:03:36 | 显示全部楼层
东方油瓶 发表于 2016-9-1 12:23
我已经删了30%的数据模板修改变成了即使改变(伤害加成用附加伤害去做了系列函数)

明显的好了很多。
...

其实应该用触发器去修改数据模板的,这个卡顿可能是不断的去写内存造成的 改成点数*伤害先算出来再改 这样不管变化多少点都只会去写一次。 另外说一下,之前我有个图在一个游戏周期内每个玩家10个升级每个升级随机变化20多级也没有卡。。。
回复

使用道具 举报

发表于 2016-12-19 23:50:08 | 显示全部楼层
本帖最后由 yxxiaobin 于 2016-12-20 00:20 编辑

一个比较直接的方法就是让伤害效果不要直接挂接,而是挂接到一个集合或什么别的效果下,用触发器探测那个效果,当发生时进行计算,然后修改伤害效果的数据模板,就能做出实时动态伤害了,而且还是无后遗症的。
----------------------------------------------

实测了一下,修改数据模板是有延时的,会在下下个游戏周期才开始生效。也就是说,当探测到上级效果后,修改伤害效果的伤害值,则必须要等大于0.0625秒(比如0.07秒)调用伤害效果才有效。这么一来,多个单位使用相同效果树就会冲突。此方案证实不可行。

点评

触发器——数据模板修改伤害量 触发器------创建效果 触发器-------数据模板修改伤害量为源值 是这个思路,另外,不是0.0625 数据层的数据执行是没有延迟的,只有触发器有延迟。 比如说,一个行为伤害响应  详情 回复 发表于 2016-12-20 02:22
回复

使用道具 举报

 楼主| 发表于 2016-12-20 02:22:53 | 显示全部楼层
yxxiaobin 发表于 2016-12-19 23:50
一个比较直接的方法就是让伤害效果不要直接挂接,而是挂接到一个集合或什么别的效果下,用触发器探测那个效 ...

触发器——数据模板修改伤害量
触发器------创建效果
触发器-------数据模板修改伤害量为源值

是这个思路,另外,不是0.0625
数据层的数据执行是没有延迟的,只有触发器有延迟。

比如说,一个行为伤害响应时,创建某个效果。
这个时候触发器的表现是这样的:先获得伤害响应的效果,再触发单位受到伤害事件。

两种事件分别是:
任意玩家使用效果。
任意单位受到伤害。

此时,如果两个事件用的都是任意玩家使用效果,那么还是正常的顺序。
也就是说,这种数据模板的效果,必须修改+制造全部使用触发器才能没有时间上的先后问题。
同时其他所有的效果或响应机制也同理。

xml层的顺序无论多少层,都是瞬间执行。除非指定一个延迟时间。
而触发器,总有一个>xml层,却小于0.0625的延迟时间。

点评

实测结果是必须延迟超过一个周期的时间才可以,这一点有点奇怪啊。  发表于 2016-12-20 14:22
实测结果是必须延迟超过一个周期的时间才可以,这一点有点奇怪啊。  发表于 2016-12-20 14:22
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-23 02:57 , Processed in 0.615130 second(s), 33 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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