SLK工具评测
目前国内有3款SLK工具
这里我会简单的横向评测一下这3款SLK工具
这3款SLK工具分别是
- U9的地图优化精灵(Wc3SLKOpt,以下简称南瓜头)
- 老狼的Wc3MapMax++(以下简称老狼)
- 我们的w3x2lni(以下简称W2L)
兼容性
南瓜头
- 无法打开被占用的地图。如果你开着编辑器,你需要先将编辑器关掉,或者复制一张地图出来才能进行优化。
- 可以以不重建地图的方式优化没有(listfile)的地图。
- 有较高几率失败或生成不正确的地图,需要多试几次。
- 地图内有外部导入的slk文件时无法优化对应的物编类型,例如有万能属性时无法优化技能。
老狼
- 优化没有(listfile)的地图将导致文件丢失。
W2L
- 不允许优化没有(listfile)的地图。如果(listfile)不完整会给出警告。
- 游戏数据设置不为“默认(1.07)”时部分数据可能会出现差异。这会在优化时给出警告。
事实上slk工具的主要用途是将编辑器生成的地图转化为方便游戏的地图,而编辑器生成的地图肯定会有完整的(listfile)文件,因此老狼和W2L在优化地图时可以说是必定成功的。
游戏数据设置方面,选用最新数据的地图是不适合slk化的,因为他的作用是会让数据根据你魔兽版本而改变,而slk化会把你地图的数据固定在某一个版本,那么所谓的最新版本数据就没有意义了。我们认为大部分的人是对这个选项的作用不了解而误用了最新数据,所以我们会把slk的地图都强制为1.07的数据。
性能
- 使用的测试地图为全明星战役(大小为73.1MB)
南瓜头
- 不压缩模型: 体积为67.1MB,耗时约为20.9秒
- 压缩模型: 体积为61.3MB,耗时约为38.9秒
老狼
- 不压缩模型: 体积为67.0MB,耗时约为27.3秒
- 压缩模型: 体积为61.2MB,耗时约为46.7秒
W2L
- 不压缩模型: 体积为67.3MB,耗时约为8.7秒
- 压缩模型: 体积为61.6MB,耗时约为10.5秒
体积方面,W2L生成的地图要相对大一些,主要是因为其他工具会去掉脚本里的注释与空格。但这一些差异在现在的环境下可以忽略不计了。
耗时方面,W2L作为一个使用脚本语言编写的工具速度却完爆另外2个C++写的工具,不禁让人产生“他们到底在做什么”的疑问。不过看到同样是C++写的模型压缩,W2L的模型压缩只花了不到2秒,而另外2个工具花了近20秒,对这个疑问也就释然了。
SLK程度
南瓜头
- 不简化: 体积为5.04MB,保留对象数为5517
- 简化: 体积为2.90MB,保留对象数为4059
老狼
- 不简化: 体积为4.85MB,保留对象数为5589
- 简化: 体积为3.21MB,保留对象数为3904
W2L
- 不简化: 体积为4.52MB,保留对象数为5524
- 简化: 体积为2.54MB,保留对象数为3275
由于南瓜头无法优化万能属性,在本次测试中我将地图里的万能属性文件删掉了,因此会和实际情况有所差异,不过保证了这次测试的相对公平。
W2L的简化程度明显高于南瓜头和老狼,不知为何南瓜头和老狼会保留全部的自定义对象,而W2L会把确实没有用到的自定义对象删除。那些没有用到的自定义对象会报告在“详情”里,作者可以通过该报告来决定删除以后不会再用到的对象,以加快地图编辑的效率。
正确性
南瓜头
- 所有文本的双引号被强制转化为了单引号。这会导致实际文本与你的输入文本不符,甚至可能影响某些逻辑判断(如判断单位的名字等)。
- 多次优化同一张地图生成的文件可能会不一样,这些地图可能会丢失一些文件。这也是我当时放弃使用这个工具的主要原因。
- 生成的部分文件内容不规范(txt中部分对象的名字多了一个“]”符号)。
- 所有的自定义对象都被保留了下来,即使它们没有被用到。
老狼
- 没有处理“既有双引号又有逗号”的文本,这些文本会显示不全。
- “穿刺剑刃”等特殊技能复制出来的技能在经过SLK优化后,其中没有修改过的属性会丢失。
- 默认对象的文本描述结尾可能会多一个双引号。
- 误删了很多技能,例如邪恶狂热,甚至可能误删万能属性用到的技能。
- 误删了很多编辑器里不可见,但实际用有用的buff,例如生命周期buff(因此你用触发给单位添加生命周期“类”后,进度条上的文本“定时的生命”不见了)。
- 所有的自定义对象都被保留了下来,即使它们没有被用到。
- 空字符串依然会写着“TRIGSTR_XXX”,虽然字符串定义已经被删掉了。
W2L
- 待补充。
作为一个后来者,发现并修复前者的问题是相对简单的一步,而发现自己的问题就要困难的多。期待你的反馈!
功能
南瓜头
- blp压缩功能无法使用(会导致贴图丢失)。
- 需要自己选择是否保留随机物品。
- 不能记忆你上次的配置。
老狼
- blp压缩功能没有明显效果(文件本身会变小,但压缩到地图里后就几乎没有变化,可能是减小的部分本来就会被压缩掉)。
- 需要自己选择是否保留随机物品。
W2L
- 功能太少。
我们省略了很多选项,并不是因为没有实现这些功能,而是会根据你地图的情况自动判断是否需要它们。
还有很多功能对地图的提升有限,因此我们暂时只提供了一些基础和高效的功能。
欢迎提出你的想法!
信息
南瓜头
- 对部分选项进行了说明,帮助用户进行正确的选择。
- 点击进度条会进入论坛,似乎是为了方便出问题时进行交流,不过很遗憾这个页面已经不见了。
老狼
- 对大多数选项进行了较详细的说明,帮助用户进行正确的选择。
W2L
- 优化结束后会提供报告,例如:
- 重建地图时丢失的文件(需要包含完整的(listfile))。
- 计算失败的公式。
- 引用的无效对象。
- 无用的自定义对象。
- 保留的默认对象,以及它们为什么被保留下来。
我们希望告诉作者如何让你的地图被我们的工具优化的更好,因此我们提供了很多有用的报告。
SLK的简化功能是通过引用搜索来实现的,只有当一个对象不可能出现在游戏中时我们才会将其移除。然而事实上有大量的对象被保留了下来,这是因为你地图的数据告诉我们他们确实有可能出现在游戏中,例如:
你有个马甲单位可以建造祭坛,祭坛可以召唤暗影猎手,暗影猎手可以学习妖术,妖术可以将一个单位变形成螃蟹。
所以当你在报告中看到“螃蟹 被保留(XXX马甲引用了它)”时请不要太惊讶,如果你确信不会也不希望出现某个玩家控制了该马甲单位并在游戏中变出一只螃蟹的情况,你知道该怎么做。