|
本帖最后由 windywel 于 2015-10-7 22:40 编辑
从4月12号【无尽防守(War3)】的发布开始,一直困扰我的也是我一直希望头目能抽出宝贵时间来解决的问题就是游戏后期卡顿(lag)。玩过我图2小时以上的玩家应该能体会到,即使是外星人也不例外。这段时间通过各种方案对游戏进行优化,例如,减少buff数量,设计卡限,优化script。但是都杯水车薪,无济于事。前天晚上终于找到了一个临时的解决方案。该解决方案仅仅能够推迟卡顿1~2小时。不过已经足够让主频2.2Ghz的玩家流畅的进行【16波无尽】模式。这里把这个临时解决方案分享给大家。希望能够有所帮助。方案的原理我会最后说。
这里假设地图作者希望游戏速度为普通(默认)。 地图作者需要做以下修改:
script 修改:
1,将游戏速度设置为slower. 即现实中的1.6666秒为游戏时间的1秒。
2,将GameTimeScaleGlobal的值设置为1.6666秒。
3,将所有wait等待是时间类型为c_timeGame的等待秒数乘以0.6。
4,如果你使用了Timer,请将Timer的时间类型修改为c_timeReal.
5,设置一个线程每一段时间,例如5s, 设置整张地图的单位的行走动画速度为3左右(可以自行决定)。所使用的函数大概是 LibNtve_gf_WalkAnimSpeed()。现在没法查,没在开发机上。之所以不是在单位创建时的trigger中做是因为设置行走速度的函数并不是每次都生效,从个人观察发现,只有当单位没有进行行走时设置才生效。
注意:请在MapInit完成后设置游戏速度,因为头目MOD在MapInit中将游戏速度设置为了Normal. 如果你在mapinit中设置,可能不会成功。
编辑器修改:
1,buff -> war3_unit->修改:
a), 移动速度上限*1.6666
b), 加速度*1.6666
c), 减速度*1.6666
以上设置后就基本完成。游戏不会再像以前那么卡。 玩家基本感觉不到有何改变。不过使用该方法有以下瑕疵。
瑕疵
1,技能释放动画会变慢。例如,a) 不死的小强的第一个技能。但是不影响结果。 b) 收割者的跳岩石。这个会影响跳至的时间。
2,单位所显示的移动速度与攻击速度比原来的快60%,但只要不看数据,玩家感觉不出来差别。这也是我想知道,是否有方法只修改数字而不影响实际攻击频次的方法。例如我想让攻击速度显示为2,但是实际却是1.
3,小地图右上方的游戏时间会变慢。我也想知道是否有方法改变。
4,会导致人类步兵的盾模式BUG. 例如,当有20个穿刺攻击(pierce)的单位攻击步兵的盾模式时,调试监视event的可视化窗口的event数量会急剧上升(例如,到2000)导致卡顿,即使当所有穿刺单位都死亡后也不会减少。除非解除盾模式。@麦德三世 头目我查看了代码....但有点没明白原因,有时间的话求指点。(该问题是由于测试时输入无敌导致的)
原理:
非常慢的游戏模式下每秒处理事件的数量比普通少。这样单位时间内对CPU的要求更少。具体的数据请有兴趣的玩家到sc2mapster上寻找。
通过这样的修改后,2.2Ghz的CPU就大概相当于以前没有优化的3.67Ghz。而以前能够流畅玩到25波的CPU 3.40Ghz就相当于5.67Ghz. 所以卡顿减缓并且推迟了1~2小时。不过该方案只是临时方案。后面,头目或者暴雪优化后,该方案就可以抛弃了,除非你希望游戏内有大规模的战争。这次优化还发现,显示在小地图右上方的游戏时间和卡顿成正比。就是当该时间到达2个半小时时,fps会下降到接近以前我说的卡顿帧率8fps. 虽然接近,但是却高于这个帧率5fps左右。
希望对游戏制作者有所帮助。
|
|