|
作者:Vexorian
地图压缩优化工具
wc3mapoptimizer4.2.rar
(343 KB, 下载次数: 412)
MPQ optimization
New Buffer Size: MPQ缓冲块大小,该值越大,地图压缩后越小(该值最大为地图大小),以前版本需要自己设定值,4.1之后只要选AutoDetect就可以了
Zlib Deflate: 一种优化压缩算法,能使地图压得更小,但是要确定你的地图有完整的listfile文件(如果是未加密地图可以放心使用)
Mantain(attributes): 创建一个(attributes)文件,当存在该文件时,地图经过任何改动都将变得不可用.不过很可惜,该文件可以被随意删除,或许你可以用它来应付菜菜破解者,又或者就懒得浪费这1K左右的体积来创建这没用的东西.
Auxiliar ListFile: 外部导入listfile,只有在优化加密地图(没有listfile文件)时才需要.
Script Optimization
Remove comments and useless spaces: 删除注释和不必要的空格,简化换行符号(2字节=>1字节)
Optimize script: 使用各种方式来优化脚本,使之变得更小、更快.
Compress names: 变量函数名最短化
Enable"map script-only" optimizations: 单独优化脚本文件时才需要勾选它,其它时候不用理会.
Path to war3patch.mpq: 如果使用了变量函数名最短化,那么需要指定魔兽目录下的war3patch.mpq
Script optimization tweaks
脚本优化修正
Custom charmap for new function/variable names: 自定义变量函数名最短化时的所有可用字符
Identifiers ignored for renaming: 该处定义不进行最短优化处理的函数名
Custom common.j/blizzard.j: 自定义J文件,如果你连这是什么都不知道,那么该项与你无关,不用理会.
Enforce IsUnitType safety: 修正IsUnitType Bug引起的问题,如果你地图出现什么问题的时候可以尝试下,一般情况不需要理会,至少我是没遇到过这传说的问题 - IsUnitType
- 在使用IsUnitType(whichUnit, whichUnitType)时,你必须让它跟true或false做出比较.
- Code:
- function Trig_Lame_Condition takes nothing returns boolean
- return (IsUnitType(GetTriggerUnit() , UNIT_TYPE_TOWNHALL) == true)
- endfunction
- function Trig_Lame_Condition takes nothing returns boolean
- return IsUnitType(GetTriggerUnit() , UNIT_TYPE_TOWNHALL)
- endfunction
- 别以为这2个函数得到的结果是一样的,第2个函数其实并不能被正确的运行.
复制代码
Consider real var events: 实数变量变化事件,貌似使用WEU一些加强型事件才需要考虑该项
Init function Merge: 初始化函数合并,减少函数调用
Global init merge: 全局变量初始化合并,如string s ; set s="aa" => string s="aa",不过貌似对许多变量类型都无效,Bug... 4.0都正常的
AntiBJ: 将部分BJ函数用native函数代替
BJ optimize: BJ函数优化,将部分有泄露会效率较低的BJ函数用自定义函数代替,如果你不大使用BJ函数(Jass使用者),禁用该项吧
Garbage removal: 数值简化,将长整数转换为16进制,简化实数,如0.3=>.3 ; 3.00=>3.
Constant inlining: 常量递归优化,该项是比较需要注意的,如下: - constant function AA takes nothing returns integer
- return 16
- endfunction
- constant function BB takes nothing returns integer
- return AA()
- endfunction
- constant function CC takes nothing returns integer
- return BB()
- endfunction
- function DD takes nothing returns integer
- call CC()
- call BB()
- call AA()
- endfunction
- 优化后会变成:
- AA BB CC函数直接去除,剩余
- function DD takes nothing returns integer
- call BB()
- call AA()
- call 16
- endfunction
- 很显然的,脚本错误.
复制代码
如果你不知道constant是什么的话,很好,无论你是否禁用,该项对你是没有影响的.
Strings identifier support: 字符串智能识别,如果你确定地图中没有使用ExecuteFunc,那么可以禁用它以提高少许名字最短化的效率
Map Optimozation Options
Also optimize other script files: 检查地图中其他脚本文件(.j .ai .pld),并对其进行优化(删除注释和不必要的空格,简化换行符号)
Optimize String usage: wts字符串优化,将wts里的字符串还原到其他文件中,可以提升地图载入速度.
Clean BLPs: blp优化,删除blp的jpeg头文件,可以减少地图体积,并不影响blp的质量.
Extra cleaning
Remove Editor Suffixes: 删除编辑器后缀项,该项在游戏重视无用的,可以放心删除.
Clean SLKs: 如果你使用SLK优化地图,那么可以使用该项来删除那些无用项,可以大幅减少SLK文件的体积.(居然不删除"_"和" - ",这点很不爽,希望下版能修正)
Remove Editor-Only Files: 删除仅在编辑器中使用的文件以减少地图体积.
Remove as much WE-only data as possible: 使用该项并不会减少地图体积,但能使编辑器打开地图时会出错(单位数据丢失或无效).但用EnE WE能打开. 4.0中能使EnE崩溃的选项没有了... |
|