本帖最后由 darkwinddk 于 2010-12-6 18:55 编辑
http://cs.elderscrolls.com/constwiki/index.php/TES_Files TES 文件 这是一篇介绍mod文件的文章:讲述的是对使用和制作mods 的使用方法、区别和重要性,明白mod文件是怎么工作的对制作mod 来说是最基础的 Esm 和 esp文件 Esm 和 esp文件(也就是tes文件)是tes4的核心数据文件,一个tes文件基本上就是整个上古世界数据的数据库包括object数据 对话 游戏设置 object布置 人工智能的设定,风景 脚本命令 空间单元等等。基本上所有能被cs编辑的东西都储存在tes文件中 (但是,并不是所有的游戏数据文件都是tes文件texture(贴图文件)meshs (法线文件) Sound(声音文件) video(视频文件) 等等都是整个游戏的一部分,对于这些文件在别的地方有更详细的介绍。 Tes文件的两种文件(esm文件也叫主文件和esp文件即插件文件)在格式上是基本相同的,但是在实际操作中有一些重要的地方需要区分开来,主要的区别是cs不会创建esm文件,还有就是,它不允许一个esp文件修改其他的esp文件,但是这两个限制都可以通过使用outside tools(外部工具)来解决,而且在如今的mod中同时使用esm和esp-mastering是非常常见的(想要了解更多的信息请参考esp vs esm 那篇文章)。在实际操作中mod制作者创建esp文件来的更为简单,所以通常优先制作esp格式的mod 主文件 Tes文件和游戏存档都其主文件,这些主文件只是mod和游戏存档依赖的母本列表。Mod的主文件可以在cs中的detail view 中被找到。而每个游戏存档的主文件可以在wrye bash 和 obmm 的detials view 中被找到mod 和savegames 在依赖主文件的方式上基本没什么区别除了mod 通常不会将其他的mod作为自己的主文件这一点除外。主文件列表非常的重要,因为通过主文件列表我们可以识别mod和游戏存档中的object的来源,也就是当一个游戏存档记住一个object时,它本质上是记住了例如“在我的第四个主文件中的第2034个object”这样的方式。如果主文件列表因为某些原因被清除掉了,游戏存档无法将玩家的物品栏中的object与原始的指定的object相匹配 在一般的游戏设定中知道主文件并不是必须的,但是作为一名modder(mod制作者)还是需要知道主文件的,因为游戏设定的调试通常需要formIDs 而formIDs 是编译信息如“the 2034th object definded by my foutth master”的方式(更多信息请参考formIDs那篇文章) 记录和重新写入 就像你之前提到的一样,mod文件基本上就是一个拥有所有在游戏世界中的object数据的数据库,说的更详细一些mod就是成批量的记录,在这些记录中包含着1 新的记录2 一些已存在的记录的修改(也就是对mod的主文件的修改)举个例子:wicked swords.esp 这个esp文件介绍了三个新的swords (宝剑),和对两个oblivion。Esm文件中已存在的swords的修改,每一个sword 都代表一个单独的武器记录(所以这个mod一共有5个记录(2+3=5)) 需要注意的是对于cs和游戏引擎来说,每一个记录都是一个单独的不可见的object你可以把这个游戏想象成一张堆满扑克牌的桌子,你可以添加新的牌,也可以在原有的牌上贴上一张新的牌来改变它。所以在上面所举的例子中那三个新的记录就是三张新的卡片,而两个修改的记录就是在原有的卡片上贴上新的卡片来替代原有的卡片 现在假设有另一个叫beautiful swords“的mod 添加了两件新的宝剑,并且修改了4件原有的宝剑让其看起来更加的“漂亮”。我们再假设那4件被修改的宝剑中有一把宝剑同时被上面提到的 wicked swords 的mod 修改了 也就是两个mod改了同一把宝剑 我们在重新系统的说一下上面所描述的情况,这就像一个卡片游戏。两件新的宝剑代表两张新的卡片而那四个修改的记录则代表四张被替代的卡片。但是现在的情况是,4张原有的卡片中有一张也被另一个叫 wicked swords 的mod 修改过 。那么现在就有这样一个问题,那张被两个mod都修改过的卡片会是什么样子的呢?实际情况是两个mod 所做的修改并不会同时出现在原有的卡片上,而是只显示其中一张卡片的修改,那么显示哪一张呢?答案是哪张修改的卡片贴在最上面就显示哪一张的修改。 载入的顺序 上面所提到的卡片游戏解释了载入顺序的重要性。载入的顺序决定了哪一个mod 把他的卡片放在桌子的最下面,oblivion.esm 的卡片在最下面然后就是下一个mod的卡片然后一层一层的往上叠,直到最后一个mod 不管那两个mod 发生了冲突,总是排在后面的那个mod胜出 所以这个载入的顺序其实是很简单的:1 esm 总是在esp的前面 2 在一群esm或者 esp文件中则是由modified date 的东西决定的 所以如果你想要改变mod的载入顺序的话,你就需要改变mod的modified date .但不幸的是你不能直接在游戏目录中完成这个修改,想要通过改变data文件夹下的esp文件的排序而改变mod的载入顺序的人就死心吧。但是我们可以通过一个叫obmm的工具来修改 modified date 还有一点要注意的是游戏中自带的obivion launcher 也没有修改载入顺序的功能,obivion launcher 中的esp排序显示的不是载入顺序而是mod名称的排序。 Mod的合并 对于那些比较复杂的mod 例如 leveled lists
race mod(种族mod)等等 “最后一张卡片胜出”的规则是很头痛的。因此一系列的工具和技术被开发出来使我们能够同时得到多种mod的修改效果。例如上面提到的swords mod
我们可以同时得到 wicked 和 beaufiful 两个mod 的修改效果。在这些工具中最主要的工具就是 wrye bashed patch 。它可以自动的合并许多类型的mod .此外还可以手动创建一个复杂的mod的补丁mod 。例如fcom本质上就是一个巨大的补丁mod 它是由4个主要的补丁mod再加上其他的大量的小mod 合并而成的。 总结 在也许是一篇看起来相当难懂的介绍,但是你只要记住游戏引擎是根据上面提到的“卡片原理”来运行游戏的就够了。当你制作一个mod的时候,你只是在制作一张在游戏中要用到的卡片而已。而那个在最下面摆放着一大堆卡片的桌子,则构成了整个玩家进入和生活的游戏世界。 |