第一章入门从绝命时刻开始
ZH是SAGE引擎的一部巅峰之作,它几乎发挥出了SAGE引擎所有的潜力,虽然图像处理效果确实还不够理想,不能和后来的CNC3相比,但论平台功能,它绝对是最丰富的一个。当然还有最重要的一点,ZH的代码是用我们习以为常的INI来编写的,条理非常清晰是它的最大优点,这比CNC3杂乱无章、看得让人头大的XML更人性化得多。因此我们将从ZH开始入门,进行对SAGE引擎的研究。
首先我们有必要了解一下ZH的文件目录结构,搞清楚它的代码系统都是如何构成的,方便日后之作MOD时能立刻到合适的下手点。
打开ZH的安装目录,我们可以看到一些BIG文件压缩包,这些文件包和RA2时代的MIX有着异曲同工的作用,我们可以用XCC MIXER 打开INI.BIG,这是存放ZH所有规则文件的压缩包,把右侧列表定位到ZH的主目录,然后在左边全选所有内容,右键——复制,不出10秒,所有内容都提取出来了。
或许你发现了,INI.BIG里的内容并不是以往MIX包那样的纯文件,而是含有一定的路径,
例如“Data\INI\Armor.ini”,这是因为ZH平台识别的规则文件不像RA2那样直接放在在游戏主目录下,而是在Data\INI文件夹下。因此我们需要到这个文件夹下去我们刚才提取出来的所有INI文件。
如果你看见这个目录下有一大堆INI文件,千万别被吓傻,这就是SAGE引擎的特——功能细分,整个游戏的重要规则需要很多个INI来定义并相互嵌套调用,而不像RA2那样用一个RULES来定义,自己内部调用。因此我们现在有必要认识清楚ZH的一些常用且非常重要INI各是什么内容,都表达出了哪些定义信息。(其余INI今后遇到了再讲解)
表1.01    关键INI的作用
文件名
作用简述
CommandButton
按钮定义:定义各种界面按钮的功能和相关说明字段及图标图像
CommandSet
界面布局:定义各种物体的界面按钮布局,需要调用CommandButton里定义的那些按钮
FXList
视觉效果列表:定义各种视觉特效的动画效果、声音、震动等元素,例如核弹爆炸效果
Locomotor
运动系统:定义各种单位的移动模式,决定了该单位是走还是飞、速度快还是慢、能去哪些区域
ObjectCreationList
物体生成列表:定义各种OCL所生成的具体物体种类和数量(什么叫OCL?后面会讲解)
ParticleSystem
粒子系统:3D游戏里95%的动画都是用粒子系统完成的,所以这是SAGE引擎的一大重点
Science
游戏xml文件修改
将军技能:定义各种将军技能的学习前提及学习费用,是ZH的一大特
SpecialPower
超级武器:定义各种特殊能力及超武的类型、倒记时、范围圈等信息,和TS的原理相似
Upgrade
升级项目:定义各种升级项目的研发费用、消耗时间等信息
Weapon
武器系统:定义各种武器的伤害值、打击范围、伤害类型、死亡类型等信息,和TS的原理相似
从这个表可以看出,SAGE和TS的差距是非常大的,所以有必要先转换自己的思维来对待这个外表熟悉,但实际上却陌生的新引擎,千万不要用TS的旧思维去对待SAGE、想当然而行、认为只要向以前那样做就行。如果不能转换思维,就很容易走进一条死胡同,让你成为又一个被SAGE吓倒的MODER。
要转换自己的思维,首先必须要了解SAGE引擎的操作方式,而多玩ZHMOD或CNC3MOD是掌握它们的最佳途径。以下我列出了SAGE和TS的几大差别:
1、建造方式:
TS的建造方式称为“宏观型”,特点是不管你有几个工厂,所有这些工厂都关联到同一个建造栏上,建造物体时只有被设置为“默认”的那个工厂在开工,其他工厂处于空闲状态。宏观型的建造方式决定了TS系列平台将自动建立单位和工厂之间的关联,你只需要制作好单位,这个单位的建造按钮就会被平台自动放置到建造栏上。
SAGE的建造方式称为“微观型”,特点是各个工厂具有独立的建造栏,生产物体时相互不干涉,可以同时开工建造各自的单位。微观型的建造方式决定了SAGE系列平台不会插手单位
和工厂之间的关联,这个关联是需要你自己去编写的,你不光要制作好单位,还必须要为对应的工厂添加生产这个单位的按钮,否则这个工厂是没办法生产这个单位的。
2、物体分类:
TS对物体的分类是“注册法”,即将建筑、车辆、步兵、飞机等物体分类注册以获得不同的基本属性。注册法决定了一个单位只能属于其中一种类型,要么是建筑,就只能是建筑,不能即是建筑也是车辆,换言之,就是说不能获得所有你想要的基本属性,这一点无疑是限制了MOD的构思范围。
SAGE对物体的分类是“标签法”,即笼而统之将建筑、车辆、步兵、飞机等物体统称为Object,换句话说,建筑其实就是不能移动的坦克,而坦克同时也可以视为可以移动的房子。那么一个Object到底具有什么样的基本属性呢?这就是标签法的意义,一个物体可以拥有多种标签,每种标签代表一种基本属性,因此一个物体可以同时具有建筑、车辆、步兵、飞机的基本属性而成为一种全兼容的怪异单位,使MOD构思可以无限制的扩宽。
3、阵营结构:
TS的阵营结构称为“共享模式”,这也是由于宏观型建造方式的一大特,几个不同的国家可以属于同一个阵营,使用相同的建造栏、拥有相同的科技树,仅仅替换几种特殊兵种。例如RA2的3阵营10国家。
SAGE的阵营结构称为“独立模式”,这也是由于微观型建造方式带来的后遗症,一个国家只能属于一个阵营,使用各自独立的建造欠,拥有各自独立的科技树,虽然ZH里同一个阵营下属3个将军看起来好像科技树是相互差不多,但实际上他们却是3个完全不相关的独立阵营,拥有不同的建造栏和科技树,只不过是游戏开发者故意把它们做得来比较相似而已,这是一个障眼法。
4、图像格式:
TS支持的图像格式有SHP动画图片和PCX静态图片,其中SHP使用非常广泛,这是一种256索引图,需要对应的PAL调板才能正确显示图像,否则将显示为乱。SHP适合直接用作效果动画,例如弹头爆炸的动画可以直接用一个动画SHP来表现,使用现成的SHP比较方便,但制作新的SHP就麻烦得要死。
SAGE支持的图像格式只有TGA静态图片(DDS被系统识别为TGA的压缩格式),这是一种32位真彩图,不需要调板就能直接显示。TGA只能用作3D贴图及界面图片,由于其是静态图片的原因导致了不能直接制作成效果动画,必须依靠粒子系统的调用和运算才能表现出弹头爆炸动画。
5、模型格式:
TS是一个含有半3D属性的2D引擎(假3D引擎),支持的模型格式为VXL像素体,这是一种依靠堆细小的像素点来构成形成一定的外形,用VXLSE来制作模型需要一个点一个点地描绘,虽然技术含量低但非常麻烦,虽然有3DS2VXL工具可以直接将3D模型转换成VXL,但由于TS引擎的低端性能,没办法做出精致的VXL模型。此外不得不提的是,TS的单位开火点、烟雾产生位置全靠RULES里的坐标来设置,因此非常难以调准确。
SAGE是真正的3D引擎,支持的模型结构为W3D和W3X模型,这是一种用3DMAX制作而成的模型,不需要经过任何转换及后期处理,所有工作都在3DMAX里完成,因此制作过程相当简练,但并不简单,这需要扎实的3DMAX建模功夫及贴图功夫才能做出精致的模型。顺带要提的是,SAGE的单位开火点、炮塔指定、炮管指定、烟雾产生位置等直接由3D
MAX里模型块或关节点来关联,因此不需要设置任何坐标,只要把模型画好,然后把这个模型块的名称拿给INI调用即可调节准确。
6、摄像机:
TS的视角是固定的,摄像机机体的XYZ位置大约在(60:60:49)的点上,离地高度永远固定,焦距为无穷大,因此渲染出来的场景也是毫无景深感的二维直观图。
SAGE的视角是可变的,摄像机的位置虽然有个默认值,但可以通过设置参数来改变它,同时在游戏进行时也可以利用小键盘的8246来变换视角,这样更容易贴近物体,近距离观察精致的模型结构。
7、代码结构:
TS的代码类型很少,而主要发挥作用的只有Rules和Art,因此平台插手了大部分代码间的对应和关联,不需要你去人工编写,就像一个建筑的皮肤能自适应5种地形来现实不同的图像,完全是游戏平台管理了所有对应规律,你不能去改变它,因此工作量很小,只需要按照规律命名即可,使用方便但扩展性很小。
SAGE的代码类型非常多,光ZH的主要INI就有10种(表1.01),因此平台基本上是不理会这些代码之间的对应和关联,99%的对应和关联需要MODER自己去编写。因此难度相对较大,工作量也提高了不少,但MODER可以自由发挥,扩展性非常大。
8、语句功能:
TS的语句好比集成电路,一条语句实现一个固定的功能,只需要设置一个参数就能获得特定的功能,几条语句共存就能组成一套系统,使用起来相当简便,但由于集成电路的功能单调,因此系统的扩展性不高,也难以实现花样百出的功能效果,限制了MOD的构思范围。
SAGE的语句好比元器件,一条语句、一个参数只能实现一个细节定义,似乎根本就体现不出SAGE的潜力到底有多强大。但如果用SAGE特有的Behavior模块将一系列语句和参数按照一定的规律组合,就能制作出你自创的集成电路,多个自创的集成电路相互组合嵌套,就能实现花样百出的强大系统,但由于使用元器件要求MODER具备更加扎实的底层技术,因此使用起来容易摸不着头绪,要做出优秀而高效的系统,难度也相当高。
9、语法特点:
TS的语法称为“汇编级”,即用方括号表示段首字(如[MTNK]),没有结束字的概念,一个段落的内容从段首字开始,到下一个相邻的段首字结束,中间并列的所有语句都只能是单行,只实现一个功能,没有功能模块的概念,彼此不能相互嵌套。
SAGE的语法称为“C语言级”,将单位代码、按钮代码、升级项目等所有内容都视为函数,每个函数都都必须有函数类型+函数名来作为段首字(如Object MTNK、Draw = W3DTankDraw ModuleTag_01ConditionState = REALLYDAMAGED)以及结束字End,和C语言里的花括号很相似,夹在段首字和End之间的所有内容便是这个函数的所有定义。而SAGE的函数还分为主函数和子函数,例如Object MTNK就是一个主函数,而Draw = W3DTankDraw ModuleTag_01则是一级子函数,ConditionState = REALLYDAMAGED为二级子函数,子函数能被主函数嵌套调用,低级子函数能被高级子函数调用,但主函数不能被任何函数调用,一个主函数内的所有子函数彼此并列,各自完成一系列功能,相互配合起来以完成一个嵌入式系统功能。
综上所诉,不难看出SAGE的特点是更加底层化、更加微观化,更加独立化,适合思维宽阔的MODER使用,但正是因为它的这些特点而导致了平台的难度相当高,所以要想学好SAGE,从现在起就必须认真转变思维。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。