【文明6】 modinfo 文件结构详解

您所在的位置:网站首页 文明6哪里设置中文 【文明6】 modinfo 文件结构详解

【文明6】 modinfo 文件结构详解

2023-12-16 03:19| 来源: 网络整理| 查看: 265

(本文约4800字,阅读完大概需要 ___ 分钟)

modinfo 是《文明6》 模组的信息文件,每个 mod 都会有一个这样的文件,以致于几乎每期视频都会说到它,所以干脆写一篇文章统一介绍。

一个典型的 modinfo 文件

第一部分 基本结构

1、根节点

modinfo 文件使用 xml 语言写成。 在 xml 的语法中,根节点只能有一个。modinfo 文件的根节点是 Mod,带有两个属性:id 和 版本号(见上图)。其中 id 是为了让你的 mod 和别人的区分开来,可以在网上搜索 guid 生成器来生成,也可以用别人的 id 然后随机改几个数字。而版本号就是个数字,随便写。

2、Properties 属性节点

属性节点是必需的内容,介绍了 mod 的基本信息。以下是一些常用的选项(建议至少写前五项,参考上图)。

Name: 模组名称

Teaser: 简要信息(鼠标移到模组上会显示的内容)

Description: 详细描述信息

Authors: 模组作者

CompatibleVersions: 兼容的游戏版本(1.2: 迭起,2.0: 风云,1.2,2.0: 全兼容)

AffectsSavedGames: 是否会影响到已保存的游戏(0:不影响,1:影响)

SpecialThanks: 特别鸣谢

Homepage: 网站(联系方式)

SupportsSinglePlayer: 支持单人模式(0: 不支持,1: 支持或不写这一项,下同)

SupportsMultiplayer: 支持多人模式

SupportsHotSeat: 支持热座模式

具体写法可参考上图,或者随便打开其它玩家的 mod 查看,大同小异。

3、Settings(或 FrontEndActions)前端加载项

游戏要加载的内容大致可以分为两个部分,第一部分是在游戏启动后就马上加载的,称为前端加载项。当游戏主菜单出现时,就表示前端加载过程已经完成。这时候如果去看游戏日志,里面写的全都是关于这一部分的信息(因为第二部分还没加载)。

一个 mod 中要加载的文件多种多样,比如数据、图标、文本、模型等等,每一种文件都可能用不同的操作来加载。这一部分可使用的操作大致如下:

UpdateDatabase:更新数据库(就是把内容加入到数据库中)

UpdateIcons:更新图标

UpdateText:更新文本

UpdateColors:更新颜色

UpdateArt:更新艺术文件

ImportFiles:导入文件(一般用于替换脚本)

AddMap:添加地图

前端加载项中最重要的操作 UpdateDatabase 会把 mod 的内容加到以下数据库中:

"文档\My Games\Sid Meier's Civilization VI\Cache\DebugConfiguration.sqlite"

用 SqliteStudio 打开它可以看到,这一部分的内容主要是关于游戏设置、可选游戏模式、可选文明与领袖、地图大小等等,简单来说大致就是文明选择界面上显示的那些内容。

例子 假设现在有这样一个文件 config.sql,可以设置小地图的最大玩家数量为12、默认数量设为10:

update MapSizes set MaxPlayers=12, DefaultPlayers=10 where MapSizeType='MAPSIZE_SMALL';

那么它在 modinfo 中的加载方法如下:

     

            config.sql

     

其它操作同理。其中的 id 是这个操作的标记,能用来锁定它在游戏日志中的的位置,可自行填写,允许重复,但不能有空格。

另外,如果你建了一个文件夹(比如 Subfolder)来存放 config.sql,那么上面第三行就变成了

Subfolder/config.sql

深坑:任何一个 mod 文件名都不能与任何游戏原文件、或者其它玩家的 mod 文件重名!!

4、Components(或 InGameActions)游戏内加载项

当玩家选择好文明和领袖之后,点击“开始游戏”,游戏将会执行 InGame Actions,即游戏内加载项的过程。这里除了支持前端加载项中的那些操作(除了 AddMap ),还额外支持以下操作:

AddGameplayScripts:添加游戏脚本

AddUserInterfaces:添加新界面

ReplaceUIScript:替换游戏界面脚本

UpdateAudio:更新音频(加入音频)

此时执行 UpdateDatabase 操作将会往以下数据库写入数据:

"文档\My Games\Sid Meier's Civilization VI\Cache\DebugGameplay.sqlite"

大部分的游戏内容、游戏模组都是写入到它里面,比如建筑、区域、单位、资源、地形、地貌、文明、领袖、科技、文化、信仰等等绝大部分我们接触到的内容。

例子 假设现在有这样一个文件 gameplay.xml,能够解除“无法夷平首都”的限制:

      

            

           

      

因为 GlobalParameters 这个表位于游戏内数据库中,所以在 modinfo 文件中要放到 Components 或 InGameActions 节点下面:

     

            gameplay.xml

     

5、Files 文件清单

上面不管是前端加载项还是游戏内加载项加入的文件,最后都需要集合起来、添加到 Files 节点中,这一步必不可少,而且也不能遗漏任何文件。

例子 上面我们加入了两个文件 config.sql 和 gameplay.xml,文件清单可以这样写:

          config.sql

          gameplay.xml

总结:在一般的 modinfo 文件中,属性 Properties 和文件清单 Files 是必需的,前端加载项 Settings 和游戏内加载项 Components 至少有一个或者全都要。

第二部分 高级用法

第一部分中介绍的四个节点 Properties、Settings、Components、Files 只是平常用得比较多的,除此之外还有 Dependencies、References、ActionCriteria、LocalizedText 等等,而且这些节点全都属于二级节点,也就是被包含在根节点 Mod 下面。

1、加载顺序

在加载文件的时候,通过设置 LoadOrder 可以让某些文件的加载顺序往后排一点。比如要修改某个单位的能力值,但这个单位是 DLC 里面的,加载比较靠后,于是我们的文件必须排到它的后面。其中数值的大小没有特别要求,官方文件一般都是 100,数值越大加载越靠后。可以为负数,表示尽量早一点加载。

示例:把 gameplay.xml 所在的 UpdateDatabase 操作的加载顺序设为 100:

     

           

                    100

            

            gameplay.xml

     

上面蓝色部分就是设置加载顺序的方法。

2、多语言支持

在第一部分的 Properties 节点中,我们可以让 mod 的名称、描述、作者等拥有不同语言。具体做法是使用类似 LOC_XXXXX 这样的文本,比如在属性里面这样写 mod 的名字: LOC_MY_MOD_NAME,然后添加一个 LocalizedText 节点:

   

        Mod Name

        模组名称

   

这个节点是与 Properties 节点平行的,写法与 mod 中其它定义文本的 xml 文件一样。

另外还有一个方法,就是把 mod 的名称、描述、作者等这些文本放到一个文件中,比如 MyMod_Text.xml,然后在 modinfo 文件中这样写:

        MyMod_Text.xml

不过还是第一种方法用得比较多。

3、选择性加载(Criteria)

ActionCriteria 节点用来设置某项操作所需的条件。Action 是行动、行为,Criteria 是标准、准则,合起来可以称为 行为标准。

比如我们的 mod 中有一个功能是修改总督的数值,想让这个 mod 同时兼容原版游戏和《迭起兴衰》,但原版游戏是没有总督的,这时就可以使用选择性加载方式:把有总督的内容放到另一个文件中,只有当玩家选择迭起兴衰时才加载那个文件。

以下写法可以定义一个名为 BaseRulesets 的行为标准:

   

        RULESET_STANDARD,RULESET_EXPANSION_1,

RULESET_EXPANSION_2

   

里面包含了三种规则:(any="1" 表示任意一项满足即可)

原版:RULESET_STANDARD

迭起兴衰:RULESET_EXPANSION_1

风云变幻:RULESET_EXPANSION_2

当玩家选择这三种规则之一时(就是说不玩情景模式时),使用这个行为标准的操作才会被执行。使用方法如下:

     

            gameplay.xml

     

再来看其它情况。以下写法分别定义了一个名为 Expansion_1_2 和 Expansion_2 的行为标准:

   

        RULESET_EXPANSION_1,RULESET_EXPANSION_2

   

   

        RULESET_EXPANSION_2

   

其中 Expansion_1_2 只在迭起兴衰或风云变幻生效,Expansion_2 只在风云变幻生效。

此外还有一种方法更为简便,适合在小范围内使用:

            

                    RULESET_EXPANSION_2

            

            gameplay.xml

以上就是《文明6》模组信息文件 modinfo 的有关内容,对大部分 mod 制作者来说,第一部分的内容是无论如何都必须掌握的,以后的视频中也就不再继续介绍了。第二部分较为复杂,而且还有些用法尚未列出,所以往后还会提到。

本文内容如有错误,欢迎指正!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3