找回密码
 点一下
查看: 3689|回复: 7

简单说一下 T, Jass,和 vJass.

[复制链接]
发表于 2008-9-12 14:46:27 | 显示全部楼层 |阅读模式
T,Jass,vJass三者究竟有什么不同?

如图,用 WE 新建一张空白地图,然后打开触发编辑器,我们就能看到一个自动生成的触发,这就是习惯上常说的 T。

J01.JPG

在菜单的编辑 --> 转化为自定义文本,我们就能看到以下文本内容,也就是习惯上说的Jass 语言。可见 T 和 Jass其实是可以完全对等转换的,就像香港人讲粤语,大陆人讲国语,尽管互相听不懂,但却属于同一个语系,可以完全互相转换,只需写在纸上,大家就能互相明白了。

J02.JPG

J03.JPG

既然 T 和 Jass 是同一类东西,那为何有的人喜欢用T,有的人喜欢用 Jass,甚至还有人使用一种叫 vJass的莫名其妙的语言呢?这一切都是因为一个罪魁祸首,那就是“变量”。

打开一张未加密的真三国无双地图,点击如图的变量列表图标,打开变量列表,就看到真三中使用的变量,这一大堆的变量,被用在各个触发中,类型也千差万别,但是却被成堆地放在一起,杂乱无章,根本无从知道哪个是干什么用的。

J04.JPG

这就是用普通 T 作图的最大毛病,变量不方便管理。尤其对于自定义技能中使用的变量,很多时候变量只是在技能施放的时候被短暂使用一下,大部分时间均处于闲置状态,这些变量不但增加变量的杂乱程度,还占用游戏资源。

这时就有人用 Jass来解决这个问题。对比起 T来,J最大的优势就是能使用局部变量,局部变量能在触发的动作函数里声明,能独立运算不互相干扰,方便清空,而且它不需要堆放在变量列表里,这极大降低了变量的管理难度。可以这么说,如果暴雪设计WE时让变量能够分组,可能就不会有用T还是用J这个问题了。

但是使用局部变量并不能完全解决地图设计中的所有变量问题,因为局部变量只能在一个函数中使用,而不少华丽的技能,尤其是持续一段时间的技能,要使用到多于一个函数并使用计时器,在这种情况下,依然要使用到全局变量。这时问题又回来了,由于无论是用T还是 J,全局变量的声明都必须放在变量列表里,因此对于拥有大量华丽技能的地图,J的优点并不能发挥出来。更重要的是,技能中需要使用大量的“临时”变量,原本这些变量只需在技能施放时产生,技能施放后就可以删除的,但由于 WE 设计时变量的管理缺陷,我们不得不事先把这些变量事先声明好并一直放在地图中,这样做就占用了很多地图资源。

为了解决这个问题,有 Jass用户想出了使用缓存的方法。他们把技能施放过程需要反复调用的“单位”,“实数”,“特效”等“物件”暂存在游戏的缓存中,并在需要的时候调出来。这种方法很好地解决了 WE的变量管理问题,而且使用方法也很符合人类的思考习惯,因此在一段时间内可以说大行其道。

缓存尽管解决了变量的“分类”问题,但是它并没有简化作图的工作,技能制作者依然要为每一个“物件”进行“存”,“取”,“删除”,“清空”等动作;另外使用缓存存取的速度要比全局变量要慢,因此一张存在大量华丽技能的地图,虽然使用缓存后其地图加载速度比使用全局变量的快,但技能施放时的速度却比使用全局变量的慢;更重要的是,缓存必须用文本来标识保存的物件,这就导致我们很多时候要在技能设计时,逐个地对物件进行保存,然而在大多数情况下我们需要的仅仅是对物件进行批量处理,而不是很麻烦地给每个物件加上标记。

在这种情况下,就诞生了 vJass,一种可能很多人完全没听说过的高级语言。其实vJass并不是 Jass的替代品,它只不过从根本上解决了一个问题,就是全局变量的“分类声明”。在vJass里,你可以在触发里声明需要使用的全局变量,同时可以给全局变量加上“私有”(private),或者“公用”(public)这样的标记,以解决以上提到的问题,甚至还可以给全局变量“打包”(struct),调用的时候全部一起调用,不需要的时候整个包一起清空。这些特性,都极大简化了技能制作者的工作。

看到这里你也许就会明白,所谓 vJass或 Jass,并不比 T高级,它们的出现只是为了给技能作者提供方便。假设用 vJass重新写一遍 澄海3C,游戏时的速度并不会加快,因为T已经是最快的了。但是 J和 vJ能解决 T 的致命问题 - 变量管理,一些用 J和 vJ写的很简单的技能,如果改用 T 写就会变得极其繁冗,而且作者在这种繁冗的代码堆里还很容易出错。屠夫大战就是用vJ编写的经典作品,里面屠夫的技能支持多人,并且链条会拐弯,钩子飞出后技能施放者可以随意运动,如果要保持这种种特点,改用 T 来做这样的技能那可真的可以说是谋杀脑细胞。另外本人的《功夫3C-星宿会战》也是全 vJ编写,里面的大部分技能如果用T做出来,那也是相当折磨人的事情。
发表于 2008-9-12 18:48:38 | 显示全部楼层
那VJASS是不是要下一个VJASS编辑器来做,他跟JASS语法一样不?

还有你的触发器转成自定义文本模式,怎么是列表模式啊?  杂弄得啊

[
14_4721_7bb57a3217225ea.jpg
回复

使用道具 举报

发表于 2008-9-12 18:57:45 | 显示全部楼层
只是装了TESH而已……………………………………………………………………………………
回复

使用道具 举报

发表于 2008-9-12 18:59:11 | 显示全部楼层
在哪里有下的啊
回复

使用道具 举报

发表于 2008-9-12 19:00:55 | 显示全部楼层
名字都写明了…………………………………………………………还要别人给你地址?……………………………………………………………………………………
回复

使用道具 举报

发表于 2008-9-12 20:24:45 | 显示全部楼层
引用第4楼Сynthia于2008-09-12 19:00发表的  :
名字都写明了…………………………………………………………还要别人给你地址?……………………………………………………………………………………

我害怕你写缩写

VJASS有自己的编辑器吗?
回复

使用道具 举报

发表于 2008-9-12 21:51:54 | 显示全部楼层
工具区有

去找吧
回复

使用道具 举报

发表于 2008-11-2 20:47:17 | 显示全部楼层
终于明白了 我原先还以为一定要学编程的人 才会用VJASS 对于我们业余作者很难搞明白
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 07:47 , Processed in 0.105034 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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