找回密码
 点一下
查看: 3288|回复: 13

【优化教程】提升效率

[复制链接]
发表于 2008-12-6 18:49:36 | 显示全部楼层 |阅读模式
1辅助单位如果不需要特殊效果,可以设置一个瞬间施法单位和一个引导施法单位。在需要辅助技能的时候,添加技能给这个单位就可以命令。
辅助单位数据示例:
攻击索引—无
动画伤害点 0
动画回复点 0
魔法释放点 0
魔法回复点 0
死亡效果 无
死亡时间 0
转身速度 0
碰撞体积 0
移动速度 0
视野       (和英雄视野对比决定)
移动方式 飞行/没有
技能 蝗虫
模型 Caster.mdx(一个无效模型)
生命最大值 瞬间2  持续30
生命回复速度 -1
魔法最大值  999
魔法回复速度 999   

2最好不要使用等待。如果一定要用的话,可以使用TriggerSleepAction,这条动作效率更高,当然,缺点是联机情况下等待时间会不准确。

3触发器中对大量展开动作的事件进行动态注册。比如—单位释放技能,单位获得攻击目标,单位被攻击,单位接受伤害。你可以在选择英雄的时候判断 英雄类型 = AM 然后添加AM 释放技能效果的事件到AM的技能触发器。
这样可以降低事件发生的概率,降低Condition的运作。

5来自老狼的提议,动作写在条件里。据小强计算可以提高8倍效率。

6对相同事件合并触发器,但不要添加多个Condition,而是在一个Condition中进行多个if判断。

7使用一些公共的全局变量。比如建立以下全局变量:
integer Int
integer Int1
integer Int2
real      Real
real      Real1
real      Real2

在使用坐标的时候可以用Real1,Real2表示,这样方便在条件里进行动作。避免if判断前local的尴尬。

8对于动作复杂的触发器,如果可能,拆分来运作。
比如我地图里原来有一个初始化触发器,被我拆成三个触发器,取消等待动作。
初始化
游戏开始3秒
游戏开始7秒

其中,初始化动作和游戏load速度直接相关。

9技能说明不要使用变量。BLZ自带技能说明里,数据往往是DOTC之类莫名其妙的数据,这些数据来自技能本身。不过最好在写技能说明时候不使用这些数据,它们会非常影响你loading的速度


10尽量减少无效的数据,比如你想用一个技能做被动技能,其实这个技能本身是靠触发器运作的,那么最好选择数据较少的技能,比如穿刺剑刃(NE),月刃(NE)。这样的技能都是没有数据的,不会带来负担。
比如你需要一个假技能,那么就应当这样选择。需要注意的是—光环和永久献祭这样的技能消耗资源尤其多,和影响区域成正比。(想想光环的运作方式吧)

有效数据和无效数据的概念(我自己命名的)
有效:对你要完成的目的有效的数据
无效:相反
比如你想做一个冰霜护盾的效果在英雄所在的位置。那么建议你采用可破坏物做效果。(小泄提倡过的可破坏物……)
当作为一个效果存在时,单位的攻击,防御,攻击附加,防御附加,生命回复,魔法回复,行走动画,等等都是一些无效的数据,但如果你用单位做效果,单位必须存在这些数据。这些数据的运行在无形中增加了你地图的负担。
如果你使用可破坏物做魔法效果,那么你面对的问题要小得多。一个可破坏物并没有多少数据编辑在内,相对运行也会非常迅速。
(你可以打开物体编辑器查看一个单位的数据和一个可破坏物的数据相差是多少……)
这个道理适用于所有优化。当你需要一个攻击单位目标,没有投射物的技能时,不要选择暗影突袭,因为暗影突袭的持续伤害,减速都可以算做无效数据。
你可以使用死亡之指或者晕眩0.01秒的风暴之锤来代替它。
如果你一定要使用暗影突袭,那么把伤害间隔改长,持续时间降低,应该能减少地图的负荷。

11减少判断数量:比如,选择地图上所有单位判断,这样显然效率很低。尤其对于地图上单位很多的时候,这样的写法将非常卡。同时,布尔型判断将比其他类型判断效率更高。

12一个地图可以只存在一个单位组变量,这时候你可以把单位组动作写在单位组条件里。【老狼推荐】,这样的时候,你不需要向单位组里添加任何单位,就能完成动作。

13函数调用也会谋杀效率,全局变量用完也需要set null,对于handle类型来说。

14全局变量相比局部变量将耗费大量资源。如果不是系统性不建议使用全局变量。





或许有人说现在的计算机已经不需要让我们这么精确地制作,不过WE毕竟是建立在WAR3基础上的,并不是运行效率很高的底层语言。所以最好做到这些,可以让你的游戏更加流畅。

评分

参与人数 1威望 +41 收起 理由
kook + 41 优秀文章

查看全部评分

kw 该用户已被删除
发表于 2008-12-6 18:56:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2008-12-6 20:14:14 | 显示全部楼层
jass...
回复

使用道具 举报

kw 该用户已被删除
发表于 2008-12-6 20:15:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-12-7 16:22:44 | 显示全部楼层
把动作写到条件里可以不要注册动作函数么?

上面的1:单位属性设置似乎提升不了些效率。
回复

使用道具 举报

发表于 2008-12-8 17:05:01 | 显示全部楼层
2最好不要使用等待时间和等待游戏时间。如果一定要用的话,可以使用后者。(忘记翻译了,其中一个是很多个另一个函数构成。)

这方面的我想听详细一点~!
回复

使用道具 举报

 楼主| 发表于 2008-12-8 22:10:55 | 显示全部楼层
引用第4楼heris于2008-12-07 16:22发表的  :
把动作写到条件里可以不要注册动作函数么?

上面的1:单位属性设置似乎提升不了些效率。

1的确和效率没什么关系,如果说有的话
我怀疑 单位回复生命 也是相关效率的。
不过这个属性比生命计时效率高
回复

使用道具 举报

发表于 2008-12-17 18:28:32 | 显示全部楼层
受教了,受益非浅
回复

使用道具 举报

发表于 2008-12-19 15:27:36 | 显示全部楼层
原来还可以用可破坏物来当效果
回复

使用道具 举报

发表于 2009-1-2 02:35:43 | 显示全部楼层
学习了,回去尽量优化下图
回复

使用道具 举报

发表于 2009-1-2 09:48:49 | 显示全部楼层
学习了,很有用 ,MB一下! 很多我都没有注意到
回复

使用道具 举报

恶声恶气 该用户已被删除
发表于 2009-1-2 09:55:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2009-1-3 23:21:03 | 显示全部楼层
感谢!来学习!
回复

使用道具 举报

发表于 2009-1-4 15:31:53 | 显示全部楼层
……………………………………………………

自己也在写关于JASS的效率提高篇。
大多数是和纯编程有关了。
其实,用触发的话,是远远不及Jass效率的。…………
  [s:191]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 22:19 , Processed in 0.096340 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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