找回密码
 点一下
查看: 2095|回复: 15

为什么迫击炮发射炮弹后按下H或走开可以防止游戏卡顿?

[复制链接]
发表于 2015-5-12 17:44:30 | 显示全部楼层 |阅读模式
各位大大们好,今天在优化大量小炮攻击导致卡顿这个问题时,发现了一个出乎我自己意料的情况:
当150个小炮一起攻击同一地点时,在炮弹发出未落地间,按下H或让小炮走开,我电脑的游戏fps=16。而如果不进行任何操作,fps降低至5.
下图为按下H的时间点:
QQ截图20150512171016.jpg

不按H的fps (按H的不好截图...):
QQ截图20150512171442.jpg

在测试之前,个人认为这个卡顿是由于炮弹爆炸所导致的,但上面的结果却与之前个人的假设相矛盾。由此,在小炮发射出炮弹到炮弹落地爆炸之间,小炮应该有一个很消耗CPU的运算。如果我不进行操作,这个运算就会导致游戏卡顿。而如果我使用H按键对这个运算的前置进行打断,那么就可以避免卡顿。如果要优化小炮的卡顿问题,就需要找到这个H到底打断了什么操作?

目前个人的猜测是演算体中有某一个很耗时的运算。但是自己对这一块去很不熟。希望演算体的高手或者头目能够帮我下。这运算在哪?是否是在演算体中?按H后到底打断了什么...

提前谢谢。
发表于 2015-5-12 23:22:29 | 显示全部楼层
哦,因为攻击地面这个技能是通过攻击一个隐藏单位实现的。

每个单位会在攻击地面时创建一个对应的隐藏单位。当你有150个迫击炮的时候其实创建了150个隐藏单位。

这些隐藏单位会在攻击停止后自动移除,所以当你按了S或者H自然就没了

如果你试着在地上放一个单位,然后让所有迫击炮都攻击这个目标,你会发现fps马上就变得高多了。

我在虚空之遗beta里发现了攻击地面的更好的实现方案,所以3.0以后会改成那个。
回复

使用道具 举报

发表于 2015-5-12 23:26:50 | 显示全部楼层
在眼下你可以用触发器来简单地做一个优化。比如当你有超过多少单位同时被下达攻击同一个点的指令的时候,在目标点创建一个单位,然后命令它们改为攻击那个目标。

点评

谢谢头目,果然A一个单位就不卡了~~~~ 对了头目,还有个疑问,关于攻城机车的。110个人类的攻城机车如果按照默认的移动速度穿过屏幕会很卡。我电脑上是10fps。但是当把移动速度减半时,相同情况下可以达到16fps左  详情 回复 发表于 2015-5-12 23:42
回复

使用道具 举报

 楼主| 发表于 2015-5-12 23:42:33 | 显示全部楼层
麦德三世 发表于 2015-5-12 23:26
在眼下你可以用触发器来简单地做一个优化。比如当你有超过多少单位同时被下达攻击同一个点的指令的时候,在 ...

谢谢头目,果然A一个单位就不卡了~~~~

对了头目,还有个疑问,关于攻城机车的。110个人类的攻城机车如果按照默认的移动速度穿过屏幕会很卡。我电脑上是10fps。但是当把移动速度减半时,相同情况下可以达到16fps左右。是不是机车的转轮动画太耗CPU了...
回复

使用道具 举报

发表于 2015-5-13 21:53:20 | 显示全部楼层
那纯粹是因为车轮胎印太多了吧。

你去模型那页找到hmtt这个模型(普通坦克)或者hrtt这个(弹幕模式)。修改它们的事件属性,把第一条和第二条以外的条目全部删光。你就会发现移动起来几乎不耗费fps了。(因为把创建轮胎印的事件全部删光了,所以也就不会留下任何轮胎印子)

点评

头目...问个其他问题...为啥现在 libF2835B3B_XX() 函数都不见了~~~~我代码里面可以用的咋就只有 libF2835B3B_gf_War3MeleeMapInitialization()函数...其他却是Init,func...我用的galaxy++  详情 回复 发表于 2015-5-13 22:16
回复

使用道具 举报

发表于 2015-5-13 22:01:04 | 显示全部楼层
100坦克,54fps
Screenshot2015-05-13 21_59_34.jpg

点评

头目...有个问题...110头科多兽好卡,每2s有一秒非常流畅,但是另外一秒....完全不能动。 我已经移除了大部分的footprint.现在的模型的动画事件如图: [attachimg]164657[/attachimg] 我测试了下,不是显示太  详情 回复 发表于 2015-5-15 14:22
删除模型其他,是不是少了很多动画?我还没弄,在写代码...  详情 回复 发表于 2015-5-13 22:07
回复

使用道具 举报

 楼主| 发表于 2015-5-13 22:07:23 | 显示全部楼层

删除模型其他,是不是少了很多动画?我还没弄,在写代码...哦,知道了,谢谢头目~~

点评

保留第一条和第二条就好,其它都是我拿来设置轮胎印的,只会少轮胎印,不会少动画。  详情 回复 发表于 2015-5-13 22:18
回复

使用道具 举报

 楼主| 发表于 2015-5-13 22:16:01 | 显示全部楼层
麦德三世 发表于 2015-5-13 21:53
那纯粹是因为车轮胎印太多了吧。

你去模型那页找到hmtt这个模型(普通坦克)或者hrtt这个(弹幕模式)。 ...

头目...问个其他问题...为啥现在 libF2835B3B_XX() 函数都不见了~~~~我代码里面可以用的咋就只有
libF2835B3B_gf_War3MeleeMapInitialization()函数...其他全是Init,func...我用的galaxy++

点评

你确定不是lib755ACB0A?  详情 回复 发表于 2015-5-13 22:20
回复

使用道具 举报

发表于 2015-5-13 22:18:18 | 显示全部楼层
windywel 发表于 2015-5-13 22:07
删除模型其他,是不是少了很多动画?我还没弄,在写代码...哦,知道了,谢谢头目~~

保留第一条和第二条就好,其它都是我拿来设置轮胎印的,只会少轮胎印,不会少动画。

点评

对了,头目,有么有不删除,设置一个流畅或接近原版的flag,然后可以自动切换两种模型?我能想到的是做两个tank,当玩家选接近原版时就使用现在这个..当选择为了流畅度,就使用修改后的...  详情 回复 发表于 2015-5-13 22:24
回复

使用道具 举报

发表于 2015-5-13 22:20:30 | 显示全部楼层
windywel 发表于 2015-5-13 22:16
头目...问个其他问题...为啥现在 libF2835B3B_XX() 函数都不见了~~~~我代码里面可以用的咋就只有
libF28 ...

你确定不是lib755ACB0A?

点评

我reparse后使用 lib7与libf的智能提示如下: 输入libf后: [attachimg]164648[/attachimg] 输入lib7后: [attachimg]164649[/attachimg] 额....如果是lib7的话,那就应该是他程序有bug了.....  详情 回复 发表于 2015-5-13 22:32
回复

使用道具 举报

 楼主| 发表于 2015-5-13 22:24:51 | 显示全部楼层
麦德三世 发表于 2015-5-13 22:18
保留第一条和第二条就好,其它都是我拿来设置轮胎印的,只会少轮胎印,不会少动画。

对了,头目,有么有不删除,设置一个流畅或接近原版的flag,然后可以自动切换两种模型?我能想到的是做两个tank,当玩家选接近原版时就使用现在这个..当选择为了流畅度,就使用修改后的...
回复

使用道具 举报

发表于 2015-5-13 22:29:22 | 显示全部楼层
坦克模型没有变化啊,轮胎的印子是单独模型,和坦克本身分开的。

点评

恩,了解了,谢谢头目。我看其他模型有没有超级多的footprint,如果太多我就删掉些。感谢头目  详情 回复 发表于 2015-5-13 22:33
回复

使用道具 举报

 楼主| 发表于 2015-5-13 22:32:07 | 显示全部楼层
麦德三世 发表于 2015-5-13 22:20
你确定不是lib755ACB0A?

我reparse后使用 lib7与libf的智能提示如下:
输入libf后:

QQ截图20150513222950.jpg

输入lib7后:
QQ截图20150513222938.jpg


额....如果是lib7的话,那就应该是他程序有bug了.....
回复

使用道具 举报

 楼主| 发表于 2015-5-13 22:33:23 | 显示全部楼层
麦德三世 发表于 2015-5-13 22:29
坦克模型没有变化啊,轮胎的印子是单独模型,和坦克本身分开的。

恩,了解了,谢谢头目。我看其他模型有没有超级多的footprint,如果太多我就删掉些。感谢头目

点评

头目,删除后,我瞬间上23帧~~~哎,电脑性能差╮(╯▽╰)╭  详情 回复 发表于 2015-5-13 22:39
回复

使用道具 举报

 楼主| 发表于 2015-5-13 22:39:14 | 显示全部楼层
windywel 发表于 2015-5-13 22:33
恩,了解了,谢谢头目。我看其他模型有没有超级多的footprint,如果太多我就删掉些。感谢头目

头目,删除后,我瞬间上23帧~~~哎,电脑性能差╮(╯▽╰)╭
回复

使用道具 举报

 楼主| 发表于 2015-5-15 14:22:56 | 显示全部楼层

头目...有个问题...110头科多兽好卡,每2s有一秒非常流畅,但是另外一秒....完全不能动。
我已经移除了大部分的footprint.现在的模型的动画事件如图:
QQ截图20150515141606.jpg


我测试了下,不是显示太多光环的问题,也不是因为为了增加攻击buff的每秒的搜索。
科多相关波次让玩家卡得想哭~~~~

我该如何修改


PS:我把优化的扩展mod(war3 data Fps Opt)放战网了 ,头目有空可以用这个扩展看下110头科多让人好伤心......
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 11:24 , Processed in 0.387511 second(s), 38 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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