kiler 发表于 2011-4-1 04:40

关于MOD的结构、形式和安装

本帖最后由 kiler 于 2011-4-1 05:35 编辑

本是刚刚在另一个坛友帖子下的回帖,结果一时手痒打了许多字,想起来在这里混了一段时间了,似乎没有见过有专门对这方面进行介绍的文章,于是就复制过来单独开贴,算是将我得一点浅见薄识在这里抛砖引玉了,期望大家都能发表下意见,给新手朋友一些相对完整的说明,我也算是新手,在这里同样学习了。



这位朋友的问题:
看了论坛中的各种安装方式,千奇百怪。把我这菜鸟都绕晕了。第一次玩辐射这种游戏实在不懂
地址:http://bbs.blacksheepgame.com/viewthread.php?tid=1901571



我针对他问题的回帖和后边在本贴的增补:

一般来说都可以用FOMM的Package Manager来安装,FOMM支持的几种格式:Fomod、7zip、zip、rar。

但做MOD的大多都是个人,很多都不会很规范的将制作的MOD打包发布,即使打包,也大多会将一些可选项放在包中供使用者手动选择安装。

而FOMM针对这种有多重可选项和组合方式的MOD,是需要MOD作者预先在MOD包中定义好XML格式的脚本文件之后才能正确的识别,否则在安装的时候就不会出现这些可选的选项供使用者在图形界面下选择安装。

基于以上原因,就出现了你所谓的千奇百怪的安装方式。

但如果对MOD熟悉到一定程度之后,你就会明白那其实并不千奇百怪,而是有着一定规律在里边的。

MOD一般来说主要分为以下几种形式:
1、单独的ESM文件,无须ESP
2、ESP+BSA的组合
3、ESP+散列资源的组合(如材质、声音、模型等)
4、散列的资源组合,无ESP。严格来说,这种不叫MOD,而只是资源。如TYPE3的女体,它没有ESP,只有基本的材质和模型。

而按照我个人的理解,严格意义上的MOD,可以说主要是通过索引列表调用相关资源来实现完整的功能的文件或文件组。

这里说的索引列表,指的是ESP文件(这个定义并不规范,仅仅是根据我自己的理解),它里边记录了MOD所含的各种功能的脚本、参数和资源位置以及调用方式,而这些被游戏通过ESP这个资源列表调用的资源,可能是分别位于data目录下各种散列的资源,也可能是打包在BSA文件中的各种资源。

而ESM文件,按我的理解就是把ESP索引和相关的资源整合在一起之后打包的独立文件。

以一支ESP的枪械为例,枪械的ID、名字、杀伤、负重、耐久、射程、弹药、特效……等等基础参数记录在ESP文件中,而在游戏中呈现枪械所需的模型、动画、材质贴图、声效文件,都属于被调用的资源,这些资源存在的具体位置也分别记录在ESP文件中,其路径可能分别位于Data下的哥哥目录中,也可能被集中的打包在某个BSA文件中。

而如果是一个ESM,那么这把枪只需要这个ESM就可以了,所有的参数、脚本、调用方法和资源都在这个ESM中。

明白了上边这些之后,就可以说Fomod了。Fomod只是为FOMM程序专设的一种MOD的封装格式,里边可能是ESM,也可能是ESP+BSA,也可能是ESP+文件夹+文件。(这个说法是推测,有待验证,例如ESM似乎也没必要再封装成fomod了吧)


至于7z、zip、rar格式的包,和上边说的Fomod格式的道理是一样的。所不同的是,Fomod是专为FOMM而设,里边有符合规范的可被FOMM识别和调用的XML脚本,以用来呈现图形界面供用户安装使用。而7z、zip、rar里边就不一定有这个XML脚本。

但没有XML并不代表不可以使用FOMM安装,否则FOMM支持7z、zip、rar就白费劲了——只要7z、zip、rar中的结构符合规范,FOMM会自动识别安装的。如果里边没有info.xml这个供FOMM使用的脚本,也仅仅是没有更多丰富的图形界面给用户使用而已。

但如果7z、zip、rar中有多重可选项、可选组件,而没有专门建立合乎规范的info.xml来记录这些可选项和安装形式的话,FOMM就不能识别MOD作者的可选项目,只会一股脑的将包当中所有按照标准路径结构能够识别的东西全部塞到data目录下。

另外,按照FOMM的规范,在info.xml中需要记录该MOD的具体功用和类别,例如是物品还是同伴,是环境效果还是任务场景,这有助于FOMM识别其具体功用来进行建议排序,而FOMM中的一项冲突检测的功能更是需要这种指定的记录才能完全的发挥功效。



按照我自己的经验,一些没有复杂可选项的MOD,即使不是Fommod格式,我们也完全可以自己动手将其改造成Fommod格式来用FOMM安装。其好处主要有以下几点:

1、凡是经FOMM安装的MOD,FOMM都会备份其安装信息,日后可以方便的通过FOMM来对MOD进行卸载、暂时禁用等管理操作。
想象一下,如果是手动解压安装的MOD,解压后其资源分列于不同的路径中,林林总总的,当要卸载时恐怕只有比对源MOD包中的结构和文件名,在Data下一个个找了。而使用FOMM来管理就完全无须这么麻烦。
而单单为了实现清爽快捷的卸载,非Fommod格式也完全可以的,反正FOMM只需按照MOD原包中的东西,在data下将它们都找到并且删除就可以了。
但需要注意的是,那些安装时会对data下相同路径的同名文件产生覆盖的MOD,即使用FOMM怕是也不能完整卸载而恢复旧观的。毕竟逝者已矣,被覆盖掉的找不回来了,而FOMM好似还没有这种检测覆盖并备份要被覆盖内容的功能。

2、英文很麻烦,而目前FOMM并不能正确显示在MOD的ESP中所含的中文字符,对我来说,就是用FOMM的Package Manager来管理和查看。给大家上张图就明白了:


图中有中文的就是原本手动安装的MOD,被我做实验性质的改造了,根据自己的需要添加了我觉得要标注的中文信息。

3、FOMM的冲突检测功能,依赖于info.xml中的相关信息才能更好的发挥作用,而我在另一个排序软件FOMS2的排序模板中发现,它也比较依赖MOD的功能分类来决定排序的优先次序。但以这种这种功能为目的来自己手动构建info.xml的实验,因别的事情占用时间的原因,我还没有进行。将这个话题放出来,大家共同讨论和实验吧!


最后,简单说说用Package Manager将自己修改的MOD变Fomod格式的包吧。
其实这个很简单,有经验的朋友不用说自己试试就明白了。用Package Manager安装MOD时,不管你的源是7z、zip还是rar,只要FOMM能识别且判断其结构正确,就会将其变为后缀为.fomod的文件复制到FOMM初次运行时用户指定的MOD备份目录中。而.fomod其实原本就是压缩包,将其后缀名改为rar即可被winrar正确识别打开或解压了。

而正规fomod格式的MOD安装文件,其脚本文件info.xml存在于压缩包根目录下名为fomod的文件夹中,FOMM默认的在Package Manager中显示在窗口右上角的图片名为screenshot,目前已知.png或.jpg格式都可以。
详细的,大家可以去啃啃FOMM的帮助里边的格式规范。其他的、更多的,就等大家发表意见探讨了!!

Jessica1016 发表于 2011-4-1 11:48

谢谢你的帖子!正在拜读!~
喜欢看你的帖子{:3_134:}

末三 发表于 2011-4-1 11:55

那个...总之长文辛苦了...
拜读以后疑问,这个真的不是N年前的内容么...一看日期今年的= =

kiler 发表于 2011-4-1 16:39

回复 3# 末三


    呵呵,意思就是说N年前就有人发过了同样内容吗,我没找到过。如果你有地址的话,麻烦告知一下,我很想系统的了解一下。

kiler 发表于 2011-4-1 16:40

回复 2# Jessica1016


    谢谢

AKMC 发表于 2011-4-2 00:46

原来这样啊,就是说不是所有的MOD都能用FOMM安装吧。很多MOD就只有一两个文件夹,这种是不是直接覆盖F3的同名文件夹??

囧来囧去囧死乐 发表于 2011-4-2 01:25

这个要看看的

kiler 发表于 2011-4-2 02:57

本帖最后由 kiler 于 2011-4-2 03:00 编辑

回复 6# AKMC


      单纯只有资源没有ESP的,能不能用FOMM安装,我没尝试过。不过想来FOMM会识别和检测其结构是否规范的,因为凡经FOMM安装的MOD,他都会在安装之前将其复制到指定的MOD备份目录变成一个fomod格式的MOD备份起来,而如果不规范或不被FOMM支持的,应该会拒绝将其变更为Fomod。
      但这一点此刻只是我的猜测,没有认真的验证过,不敢误导

      而所谓能否安装,也不是单纯的看是否只有一两个文件夹的,主要是文件夹结构是否正确。许多MOD作者在发布时就已经把所有文件都按照正确的结构哦组合到一起打包了,这时你打开压缩包可能看到其中只有一个data文件夹,但这并不代表MOD不正确,正确与否还需你自己到这个data文件夹中检查查看
页: [1]
查看完整版本: 关于MOD的结构、形式和安装