首先大家不要看到MOD制作就开始联想到编程,算法,计算机语言。
ZERO发布的教程关于给飞船制作新的组件其实并不需要C#之类的计算机语言和编程基础,更不需要什么算法 。 你只需要了解基础的XML知识就可以了,我想很多网友经常修改XML文件,对XML已经轻车熟路了,不输给一个程序员。那么开始正题。
这次教程我们以给游戏中添加一个新的增强版的导弹发射器为例子,进行逐步讲解。
首先既然我们要制作一个新组件,那么必然是先定义一个新组件的XML文件,以让游戏识别。
SD关于所有飞船组件的定义在游戏目录ContentShipModules文件夹中,一个新的组件涉及到很多属性,比如组件类型(武器,护甲,护 盾),组件名字,组件耗电量等,这么多的属性,在没有开发文档之前,我们是不可能凭空创建的。所以我们直接在旧有的组件XML里面改然后在另存为就可以 了。
步骤:
1.打开ContentShipModules文件夹,找到文件(游戏默认的导弹发射器组件定义XML文件)
2.在同一目录下创建一个空白的xml文件,取名为
3.将游戏默认的文件里面的内容全数复制到新建的文件里,保存
我们创建的文件内容如下(内容和原文件完全相同)
接着介绍其中对于我们这次制作MOD极为重要/需要改动的字段.
A. UID是每个组件的唯一标示符,通俗的说就像是每个人的名字一样,如果游戏要识别你制作的组件,你必须得给它取个独一无二的新名字,不能与其他旧有的组件,或是其他MOD里定义的新组件名字相同,既然是增强版的导弹发射器,我们就取名为RocketLauncherEnchanced吧(XML文件名必须与UID一致)
B. IconTexturePath是定义游戏里面组件要用到的图像资源文件,一 般都是Modules/资源名.这是一个相对路径,它的绝对路径是 游戏目录ContentTexturesModules。 关于给自己添加的组件定义及制作新的图像 我会在2L讲解。这里使用默认属性不修改,即游戏会显示会原版火箭发射器一样的图标。
C. NameIndex,DescriptionIndex 这两个字段对应游戏里面组件的名字和详细介绍2个文本的引用。引用的定义在游戏目录ContentLocalizationEnglish文件夹的 GameText_文件里面。这个地方我自己在对着zero的教程制作的时候出了一个问题,导致添加组件之后游戏老是弹错。。。。调试半天才 发现,对于1.08版本来说,那个教程在这个地方已经过时。由于1.08版本游戏添加了对德语的支持,所以zero放弃使用老的 ContentLocalization里面的文件放游戏里面的所有文本,而是使用这个目录下新的ENGLISH目录的文件而产 生错误,对于德语文本时使用这个目下的GERMEN目录下的XML文件,所以1.08里面对游戏文本新加,修改,翻译等操作应该全部在新的ENGLISH 目录下的XML文件里进行。
那么我们为了给自己添加的组件在游戏里取个显示的名字和组件详细介绍,打开ContentLocalizationEnglish文件夹下的GameText_文件,然后在最下面添加2个新的节点
如下图:
Index节点给这个token定义一个唯一标识符,数字最好是4000以上,不能与原作者 zero已经定义过的标识符冲突,你可以使用编辑器的搜索功能进行测试,比方说我用的windows文本编辑器打开的这个XML文件,你可以使用快捷键 ctrl+f打开搜索功能,然后搜索3888看上面ZERO有没有定义这个数字,如果没有 那么我们就可以使用了。好了现在我们定义了3888,3889两个字段,一个是新组件的名字 一个是介绍。 现在我们回到自己创建的,找到NameIndex节点把属性改成3888,然后找到DescriptionIndex 把属性改成3889.
然后我们在修改这个增强版火箭发射器的详细游戏属性,比方说Mass对应他的质量是多少 我们可以把10改成8 ,Health字段它的生命值是多少我们可以改成120等等,最后我们自己定义的文件
如图示
好了,现在我们的新组件增强版火箭发射器算是完成了一大半,现在还剩下一个问题,这个武器在什么科技研究完了之后才会解锁呢?
很明显,我们并没有告诉游戏,这个组件的定位。
打开ContentTechnology目录,火箭发射器对应的是missli theory科技,所以我们打开文件,添加如下图所示
ModuleUID这个字段对应组件定义文件里面的UID字段,这样告诉游戏新的火箭发射器在玩家研究了MissileTheory科技之后会解锁。好了,需要改动的地方我们都该完了,
赶紧进游戏去看看吧?
2L 讲解如何给自己制作的组件添加自定义图片
之所以将这部分分开到2楼是因为要使用到VS2008开发工具将PNG之类的图片文件编译成文件,不过一样不需要编程知识。
需要用到的工具1: vs2008 C#
工具2:XNA STUIO 3.1(这个不是运行时组件,而是游戏开发组件)
_2/1/79/id=41111&pn=0&linkPage=
2个工具是正式版 完全免费,按照顺序先装VS2008 然后装XNA 3.1,太晚了 码字很累 睡觉 明天更新
在讲导入图片之前,我们先说说设计模组图片的一些规则,如下图
游戏里面的每一个组件都是有大小规格的,导弹发射器是1X1格,而像其他的高级武器例如鱼雷是2X5格。所以在导入图片之前我们应该先告诉游戏程序 要制作的模组是什么规格,1X1是默认规格 所以导弹发射器的XML并没有定义,不过为了规范我们可以自己加进去,并且定义为1X1。游戏使用的图片素材对应的比例是 1格=16像素,即导弹发射器1X1的组件 我们需要制作一张16X16规格的图片,而鱼雷这种2X5的需要32X80大小的图片。
下面开始讲编译图片为游戏可读的文件
1.按照上面的下载地址,下载安装VS2008和XNA3.1,然后点WINDOWS界面开始按钮启动VS2008,在左上角FILE下拉菜单(图1)->new project... 创建新的工程。
接着会出现如图示
接着点击图2的XNA3.1菜单,然后选择图3指示的Windows Game(3.1)项目类型,按右下角的OK,系统会为你创建一个XNA 游戏项目。
在执行上述操作的时候一定要记住图4显示的项目存储位置(你也可以自定设定新的地址),因为之后需要来这里找编译好的XNB文件
然后出现下图
左边一大堆的代码,不去管它,我们需要关心的是右边红框框里的CONTENT内容。现在需要做的就是把电脑里面我们做好的模组图片拖到content里面然后按F6就可以了
我使用游戏内置的另一个1X1格的激光武器图片来做样例 将这个图片拖到CONTENT里面,然后按F6。如下图
因为我们没有修改任何代码,只是给项目加了一个图片资源进行编译 所以编译是会通过的(图左下角)
既然编译成功了,现在我们就去之前记下来的项目地址去找到生成的资源文件吧
好了,现在复制粘贴这个文件到游戏目录ContentTexturesModules下
接着打开1L教程我们制作的新组件定义文件 ,改动图像属性,让它指向我们自己制作的XNB资源
OK,进入游戏看看吧?
什么?新组件的图片太囧?额 对于不会作图的人 我已经尽力了。。。