Modding, 或称为“模组制作”,是修改基本游戏(即原版)的行为, 无论是供个人使用,或者是公开发布给其他玩家,比如发布到Steam创意工坊。
就所有p社游戏而言,ck2的模组制作有很大开放性,可以很显著的延伸游戏的内容,增强游戏的可玩性。 mod制作者的动机各不相同:更好的翻译成母语,更多的事件及决议,更棒的地图,亦或游戏整体大修改等等。
mod制作非魔术邪说也,人皆可学习相关知识以制作mod,这个指引旨在降低ck2模组制作的门槛。不过,无论学习资料有多么的好,制作mod的过程都会是十分曲折的,并且学习资料无法取代对阅读基础代码,以及不断调试的需要。总之,制作mod不是一天两天的功夫,而是一项宏伟的工程,努力是必须的。
指引
- 为您的修改创建mod:即使是小的更改也要创建个人mod,并且切勿直接修改Steam CKII文件夹中的游戏文件,因为它们可能会在没有警告的情况下被覆盖。
- 使用优质的文本编辑器 来编辑文件并搜索多个文件。请参见文本编辑器。
- 验证你的mod 使用The Validator,它将为您节省许多麻烦和时间,以解决崩溃和错误。
- 尽量减少对原版文件的覆盖 通过添加单独的文件或尽可能地从文件夹加载,以改善mod兼容性和维护。
- 使用适当的合并工具 以便在文件夹之间合并,并将修改后的原版文件更新为新的Vanilla补丁。
- 备份您的工作 以避免丢失一切。如果是一个MOD制作组,请考虑使用诸如GitHub之类的源代码控制系统充当备份并管理协作。
- 使用ANSI(Windows-1252)编码 用于文本文件。
- 适当缩进 以轻松发现未闭合的花括号。原版使用1个制表符来缩进而不是空格。
- 使用注释 以#字符开头,来记住编写棘手内容的原因。
文本编辑器
以下是支持CK2编程语言的文本编辑器:
Mod结构
如果你是第一次创作mod,请看引导创建模组. |
mod文件被放置在 ~\Paradox Interactive\Crusader Kings II\mod, 里面必须包含:
- .mod 文件, 告诉启动器如何加载你的mod
- 包含mod数据好的文件夹或者是zip压缩包。mod数据的文件结构必须和本体的游戏结构相同,注意文件夹和文件的名称大小写在Mac和Linux上是敏感的,这意味着 Abc 和 abc 会被视为两个mod。
.mod 文件的文件名不能包含任何空格,否则在启动器重启的时候,不会被自动选中。
.mod 文件的内容如下所示:
关键字 | 必需? | 效果 | 例子 |
---|---|---|---|
name | Yes | 你的mod显示在启动器中的名称 | name = "My Mod" |
path | Yes | 定义哪个文件夹是你的mod文件夹。 其路径是相对于~\Documents\Paradox Interactive\Crusader Kings II\ . | path = "mod/MyMod" |
user_dir | No | 告诉启动器存储游戏或临时文件到特定的文件夹。 这对能改善mod的兼容性(例如新的标题,旗帜,宗教,文化,建筑之类的),让文件不会混淆在一起。
警告:不要给主mod的子mod设置 user_dir,因为所有激活mod的user_dir会连接在一起。 |
user_dir = "MyMod" |
archive | No | 定义一个zip压缩包来代替文件夹。设置它的路径,路径是相对于 ~\Documents\Paradox Interactive\Crusader Kings II\ 的。这是从Steam创意工坊下载的mod使用的格式,但是在将mod上传到创意工坊时,必须使用path结构。 | archive = "mod/mymod.zip" |
replace_path | No | 告诉启动器覆盖对应文件夹的所有内容,并且只从mod中的指定路径加载。这是删除原版东西的唯一有效方式,而这经常被完全改动类mod所使用。
Notes:
|
replace_path = "history" replace_path = "history/characters" |
dependencies | No | 告诉启动器,在此mod之前必须加载另一个mod。另一个模组将首先加载,允许另一个模组覆盖某些文件(否则第一个模组将先加载)。一个dependencies不是必要的;如果mod有一个集,则不需要加载dependencies。这只是 .mod文件告诉启动器应首先加载哪些文件的一种方式。 如果dependencies里的mod的名称包含空格,则必须将其括在转义引号中。 |
dependencies = { "MyMod" "\"Another Mod\"" } |
picture | No | 模组文件夹下的图像可用作Steam创意工坊的展示图片。(将显示为 268 像素× 268 像素 JPEG) | picture = "MyMod.jpg" |
tags | No | Steam创意工坊的标签列表。警告:不要忘记包含空格的标签的引号。 | tags = { "Tag1" "Tag 2" } |
supported_checksums | No | 脚本条件将计算为true的预期校验和列表。这可以在事件模组制作中使用,以向玩家显示警告。supported_checksums
|
supported_checksums = { ABCD EFGH } |
以下是一些示例模组文件,具体取决于模组的类别:
小型mod
小型mod更常见一些,为了保证和其它小型mod的兼容性,请不要使用user_dir
或者是replace_path
。
name = "Small Mod" path = "mod/SmallMod" picture = "SmallMod.jpg" tags = { "Mods" "Small" }
大型mod
大型模组通常使用 user_dir
使保存内容无论如何都无法在开启此mod前加载。对于总转化模组, replace_path
用于完全覆盖在模组中没有意义的原版文件夹(histroy,flags等)。
name = "Big Mod" path = "mod/BigMod" user_dir = "BigMod" replace_path = "history/provinces" picture = "BigMod.jpg" tags = { "Mods" "Big" }
子mod
主mod的子mod通常用 dependencies
来覆盖主mod的文件。
name = "Sub Mod" path = "mod/SubMod" dependencies = { "\"Main Mod\"" } picture = "SubMod.jpg" tags = { "Mods" "Main Mod" }
游戏数据
游戏结构
游戏数据是由包含游戏文件的文件夹及子文件夹的结构组成。
模组遵循与基础游戏相同的文件夹结构,因此在加载游戏时,引擎将合并来自原版和mod的文件。在大多数文件夹中,引擎将加载其中的所有文件,这允许mod添加新的定义(头衔,宗教等),而无需复制和修改原版文件。若要利用这一点,请务必了解如何在文件级别和定义级别加载脚本。
加载模组时的行为如下:
- 引擎根据某些硬编码的加载顺序处理文件夹和文件。
- 如果将当前文件夹定义为
replace_path
,则该文件夹中的所有原版文件都将被忽略,并且只会加载mod文件(如果有)。 - 如果 mod 文件夹和原版文件夹都包含同名的文件,则将忽略原版文件,并使用mod版本。
- 在给定的文件夹中,文件的处理顺序通常是字母数字的,合并了 vanilla 和 mod 文件名,尽管某些文件夹可能具有不同的行为
- 在多次遇到相同的定义(头衔,宗教,决议等)时,重复的定义可能:
- 被忽略(先加载的定义成为游戏内容)
- 完全覆盖上一个定义(最后一个定义成为游戏内容)
- 部分覆盖以前的定义(定义被合并/加法,这只有在实际有要合并的东西时才有意义:层次结构,列表等)
- 两者共存/中断(在这种情况下,必须避免重复的ID)
以下是CKII游戏文件和文件夹的列表,以及相关的模组指南和加载行为。
对于加载行为,单元格颜色会突出显示行为是预期的行为、奇怪的行为还是需要注意的行为、是意外的,还是需要避免的行为。
文件夹/文件 | 该文件包含什么 | 如何模组 | 加载行为 |
---|---|---|---|
.\common\
|
大致信息 | 不适用 | |
.\common\alternate_start\ | 另类开局模组制作 | [?] 合并。 | |
.\common\artifact_spawns\ | 宝物模组制作 | 合并。 | |
.\common\artifacts\ | 宝物的定义 | 宝物模组制作 | 合并。 |
.\common\bloodlines\ | 血脉文件夹,所有的血脉都存储在这里。 | 血脉模组制作 | |
.\common\bookmarks\ | 剧本文件夹,所有的剧本都存储在这里。 | 剧本模组制作 | 合并。剧本在游戏中按时间顺序列出,无论文件中的顺序如何。 |
.\common\buildings\ | 建筑文件夹,所有的建筑都存储在这里。 | 建筑模组制作 | [?] 合并。 |
.\common\cb_types\ | 宣战理由文件夹,所有的宣战理由都存储在这里。 | 宣战理由模组制作 | 合并,但通过重复使用相同的名称来覆盖宣战理由不起作用。(创建重复的宣战理由文件) |
.\common\combat_tactics\ | 作战战术文件夹,所有的作战战术都存储在这里。 | 单位模组制作 | [?] 合并。 |
.\common\council_positions\ | AI内阁成员采取哪种类别的行为的规则。 | 内阁成员模组制作 | [?] |
.\common\council_voting\ | AI在内阁中投票法律的规则 | 内阁成员模组制作 | [?] |
.\common\cultures\ | 文化文件夹,所有的文化都存储在这里。 | 文化模组制作 | 合并。 由于补丁2.4文化像宗教一样合并,并且可以通过单独的文件将新的文化添加到原版文化组中。 |
.\common\death\ | 死亡原因文件夹,所有的死亡原因都存储在这里。 | 死亡模组制作 | |
.\common\death_text\ | 为继承屏幕添加死后评价 | 死亡模组制作 | |
.\common\defines\ | 定义文件夹,所有的定义都存储在这里。 | 定义 | [?] 合并。文件中的条目将覆盖common/defines.lua。 |
.\common\disease\ | 疾病文件夹,所有的疾病都存储在这里。 | 疾病模组制作 | [?] 合并。 |
.\common\dynasties\ | 家族文件夹,所有的家族都存储在这里。 | 家族模组制作 | 合并。在原版之前加载的重复家族将覆盖家族盾徽(i.e., 000_ 等前缀) 。之后加载的重复项 (i.e., z_ 等前缀) 将覆盖家族名称。要覆盖两者,请使用重复的文件,一个具有前面的前缀,另一个具有后续前缀。
|
.\common\event_modifiers\ | 事件修正文件夹,所有的事件修正都存储在这里。 | 修正 | 合并。 |
.\common\execution_methods\ | 处决类型文件夹,所有的处决类型都存储在这里。 | 死亡模组制作 | [?] |
.\common\game_rules\ | 游戏规则文件夹,所有的游戏规则都存储在这里。 | 游戏规则模组制作 | 合并。规则根据文件的顺序(文件名上的字母数字)和文件中的规则顺序显示在 UI 中。 |
.\common\government_flavor\ | 政体定义文件夹,所有的政体定义都存储在这里。 | 政体模组制作 | [?] |
.\common\governments\ | 政体文件夹,所有的政体都存储在这里。 | 政体模组制作 | 合并。可以在不同的文件中定义同一政府组的政府。 |
.\common\graphicalculturetypes\ | 文化肤色文件夹,所有的文化肤色都存储在这里。 | [?] 合并。 | |
.\common\heir_text\ | 为继承屏幕添加继承人评价 | 死亡模组制作 | |
.\common\holding_types\ | 地产类型文件夹,所有的地产类型都存储在这里。 | 政体模组制作 | [?]. 无法添加新的地产类型。 |
.\common\job_actions\ | 内阁成员行为文件夹,所有的内阁成员行为都存储在这里。 | 内阁成员模组制作 | 合并。 |
.\common\job_titles\ | 内阁职务文件夹,所有的内阁职务都存储在这里。 | 内阁成员模组制作 | [?] |
.\common\landed_titles\ | 头衔文件夹,所有的头衔都存储在这里。 | 头衔模组制作 | 合并。合并行为“很复杂,可能不是故意设计的”[1] |
.\common\laws\ | 法律模组制作 | 合并。与现有法律同名的法律将在允许部分附加条件,但不会将潜在部分附加条件。 | |
.\common\mercenaries\ | 佣兵文件夹,所有的佣兵都存储在这里。 | [?] 合并。 | |
.\common\minor_titles\ | 荣誉头衔文件夹,所有的荣誉头衔都存储在这里。 | 荣誉头衔模组制作 | 无法覆盖,尝试这样做将导致多个荣誉头衔具有相同的tag,如特质 |
.\common\modifier_definitions\ | 定义动态定义的修饰符,特别是特殊单位的修饰符。 | 单位模组制作 | [?] 合并。 |
.\common\nicknames\ | 称号文件夹,所有的称号都存储在这里。 | 称号模组制作 | 合并。 |
.\common\objectives\ | 目标文件夹,所有的目标都存储在这里。 | 目标模组制作 | [?] 合并。 |
.\common\offmap_powers\
|
定义地图外政权的文件夹。 | 地图外政权模组制作 | [?] 合并。不需要碧玉之龙DLC。 |
.\common\on_actions\ | On_actions文件夹,所有的on_actions文件都存储在这里。 | 事件模组制作 | 合并。由于补丁 2.4 on_actions被合并,新事件被添加到特定on_action的先前列表中,而不是替换列表。 |
.\common\opinion_modifiers\ | 好感修正文件夹,所有的好感修正都存储在这里。 | 修正 | [?] 合并。 |
.\common\province_setup\ | patch 3.0后废弃 | 不适用 | 不适用 |
.\common\religion_features\ | 宗教特性文件夹,所有的宗教特性都存储在这里。 | 宗教模组制作 | [?] 合并,但具有相同键的功能会重复。 |
.\common\religion_modifiers\ | 宗教修正文件夹,所有的宗教修正都存储在这里。 | 修正 | [?] 合并。 |
.\common\religions\ | 宗教文件夹,所有的宗教都存储在这里。 | 宗教模组制作 |
合并。原版宗教可以被覆盖,而不需要复制整个宗教组。限制:需要在未改革宗教之前定义改革宗教。 |
.\common\religious_titles\ | 宗教头衔文件夹,所有的宗教头衔都存储在这里。 | [?] 合并。 | |
.\common\retinue_subunits\ | 近卫军单位文件夹,所有的近卫军单位都存储在这里。 | [?] 合并,但具有相同密钥的随从被复制。 | |
.\common\save_conversion\ | 游戏存档兼容性 | [?] | |
.\common\scripted_effects\ | 脚本 | [?] 合并。 | |
.\common\scripted_score_value\ | 脚本分数值 | [?] 合并。 | |
.\common\scripted_triggers\ | 脚本触发器 | 合并,但具有相同名称的脚本化触发器会附加其条件,而不是替换原始条件。 | |
.\common\societies\ | 社团文件夹,所有的社团都存储在这里。 | 社团模组制作 | Merge,但通过用相同名称覆盖一个社团不起作用(创建重复的社团)。 |
.\common\special_troops\ | 特殊单位文件夹,所有的特殊单位都存储在这里。 | 单位模组制作 | [?] 合并。 |
.\common\stories\ | 废弃的 | 不适用 | 不适用 |
.\common\succession_voting\ | 继承投票规则及AI继承投票行为规则 | 继承模组制作 | [?] 合并。 |
.\common\trade_routes\ | 贸易路线文件夹,所有的贸易路线都存储在这里。 | 贸易路线模组制作 | [?] |
.\common\traits\ | 特质文件夹,所有的特质都存储在这里。 | 特质模组制作 | 合并,但具有相同名称的特质将共存,并且生成的角色可以同时获得两种特质。使用命令时,最后一个定义将分配给角色。 |
.\common\tributary_types\ | 朝贡关系文件夹,所有的朝贡关系都存储在这里。 | 朝贡类型模组制作 | [?] |
.\common\triggered_modifiers\ | 定义在特定条件下触发的全局修饰符。 | Triggered modifiers | [?] 合并。 |
.\connectui\ | 似乎是已停止使用的Paradox Connect服务的剩余接口(用于克劳塞维茨引擎开发的较旧的游戏如CK2)。 | 废弃的 | 不适用 |
.\decisions\ | 决议文件夹,所有的决议都存储在这里。 | 决议模组制作 | 合并, 但通过重用相同名称覆盖决策不起作用(破坏决策效果,这不执行任何操作)。 |
.\dlc\ | 包含 DLC 信息和压缩内容文件 | 可下载内容 | 不适用 |
.\dlc_metadata\ | ? | ? | ? |
.\eu4_converter\ | EU4转档器文件夹,所有的EU4转档器文件都存储在这里。 | EU4转档器模组制作 | [?] |
.\events\ | 事件文件夹,所有的事件都存储在这里。 | 事件模组制作 | 合并,如果在原始文件之后按字母顺序加载的文件中重新定义事件,则该事件将被完全覆盖。
开发人员不鼓励这种做法,因为该引擎行为不能保证在将来保留(来源?) |
.\gfx\
|
图像文件夹,所有的图像都存储在这里。 | 图形模组制作
图形映射到 .\interface\*.gfx 文件中 的逻辑名称 (GFX_xxx) |
|
.\history\ | 字符、标题、省份和战争的历史数据,以及可能的开始日期。这可能是内部数据库的文本导出,有时在补丁说明中会提到。[2] | 历史模组制作 | 不适用 |
.\history\characters\ | 历史人物,可选择与\common\dynasties\文件夹中的王朝相关联。 | 角色模组制作 | [?] 合并。重复的角色ID会破坏角色历史记录,必须避免。 |
.\history\diplomacy\ | 未使用 | 不适用 | 不适用 |
.\history\offmap_powers\ | 地图外政权的历史(持有者,地位等) | 地图外政权模组制作 | [?] 合并。 |
.\history\provinces\ | 省份历史(地产,文化或宗教的变化) | 省份模组制作 | [?] 合并。 |
.\history\technology\ | 各省的初始技术,取决于开始日期。 | 科技模组制作 | [?] |
.\history\titles\ | 头衔历史(持有者名单) | Note: titles that should be deactivated at game start (ex: reformed religion heads) must have an history file that disables the title. | [?] 合并。 |
.\history\wars\ | 重要的正在进行的战争(进攻者,防守者,宣战理由,战争得分等),通常用于历史剧本。 | [?] 合并。 | |
.\interface\
|
界面图形 | 界面模组制作 |
|
.\interface\coat_of_arms\ | 盾徽模组制作 | 盾徽定义可以拆分到多个文件中。不支持从其他文件追加现有定义。 | |
.\interface\portrait_offsets\ | .txt带有肖像框架外部偏移的文件 | 肖像模组制作 | |
.\interface\portrait_properties\ | 用于选择纵向属性值的动态规则 | 肖像模组制作 | [?] |
.\interface\portrait\ | 肖像的spriteType和portraitType元素的定义。 | 肖像模组制作 | 合并。 |
.\launcher\ | 启动器图像和配置 | 不适用 | |
.\localisation\ | 所有本地化国家/地区名称和事件描述等内容的所有文本数据。 | 本地化 | 完全覆盖。如果重复项位于不同的文件中,则首先加载的文件优先(即使用 00_ 文件前缀覆盖原始键)。如果在同一文件中,则文件中的最后一个重复项优先。警告:文件必须以.csv扩展名结尾,否则将不加载。 |
.\localisation\customizable_localisation\ | 习惯的本地化命令定义 | 本地化 | [?] 合并 |
.\map\
|
地图文件夹,所有的地图数据都存储在这里。 | 地图模组制作 | 不适用 |
.\map\statics | 地图外部框架大小,以及固定3D地图元素的位置(奇观等)。 | 地图模组制作 | |
.\map\terrain | 地图模组制作 | ||
.\mod\ | 虚拟mod文件夹,不要在这里放mod。 | 模组制作 | 破坏模组,因为像replace_path这样的配置被忽略。 |
.\music\ | 音乐文件夹,所有的音乐都存储在这里。 | 音乐模组制作 | [?] 加载所有.txt文件歌曲元素。 |
.\sound\ | 声音文件夹,所有的声音都存储在这里。 | [?] | |
.\tutorial\ | 教程设置 | [?] |
具体指南
- 仅包含上面或以其他方式“如何修改”列中尚未链接的指南。
- Patch 2.4 mod compatibility guide - 如何从 patch 2.3.6 移植到 patch 2.4.X
- Patch 2.5 mod compatibility guide - 如何从 patch 2.4.5 移植到 patch 2.5.X
- Patch 2.6 mod compatibility guide - 如何从patch 2.5.2 移植到 patch 2.6.X
- Patch 2.7 mod compatibility guide - 如何从m patch 2.6.3 移植到 patch 2.7.X
- Patch 2.8 mod compatibility guide - 如何从 patch 2.7.2 移植到 patch 2.8.X
- Patch 3.0 mod compatibility guide - 如何从 patch 2.8.3.2 移植到 patch 3.0.X
- Patch 3.1 mod compatibility guide - 如何从 patch 3.0.X 移植到 patch 3.1.X
- 合并指南 - 如何将mod文件与新的原版补丁合并
- 彻底转换指南 - Creating a total conversion mod
- 模组安装程序创建指南 - Advanced guide for creating a Windows installer
工具与实用程序
- 这些是modder用的实用工具。 玩家使用的请看实用工具.
- Notepad++ - 修改文件用的编辑器,比notepad要好。
- Notepad++ language file for CKII - 对于阅读代码十分友好。
- The Validator - 文件查错。
- EU4:JoroDox mod making tool / Forum thread - 查看mod文件和创建3d模型。
- CK2 Cultures Parser
- Coat of Arms Builder
- Portrait Builder - 预览人物特征的工具。
- Scenario Editor
- Titular Title Generator
- Text Fixer - 按字母排序你的localisation 文件。
- Paradox Province Color Picker
高级技巧
- 对于使用源代码管理工具(Git,......)的大型mod,在CKII mod文件夹和本地存储库的工作目录之间创建符号链接非常方便,特别是如果mod也有子mods。请注意,您仍然需要手动复制 .mod 文件,但它们很少更改。从主git文件夹的父目录运行以下命令,替换:
- <mod_path_name>填写.mod文件的
path
里的mod名称 - <git_mod_folder>填写mod的子文件夹(common文件夹、decisions文件夹、event文件夹等)的名称
- <mod_path_name>填写.mod文件的
mklink /J "%HOMEDRIVE%%HOMEPATH%\Documents\Paradox Interactive\Crusader Kings II\mod\<mod_path_name>" ".\<git_mod_folder>"
MOD调试
毫无疑问,更多隐藏的控制台指令(在控制台输入help也不会显示的内容)对MOD测试会起到巨大的作用。
- observe - 让你进入观察者模式。此时你不再控制任何特定的角色——这会让游戏不受打断地自动运行。同时,所有隐藏特质、秘密信仰等对观察者都是可见的。
- run <filename.txt> - 直接运行特定脚本。脚本将从当前玩家控制角色的作用域开始执行。这个功能有助于测试复杂的脚本——你可以直接打开一个窗口编辑脚本,保存,重新载入,调整——省下重新打开游戏的时间。
- reloadevents - 重新载入和编译每一个事件(可能花费一会时间,取决于你的硬件)。对调试事件很有帮助,同样为你省下重新打开游戏的时间。
- reloadloc - 重新载入本地化文件,有助于确定文本是否显示在正确的位置上。
更多控制台指令可以在首页找到,用于实现杀掉某人之类的特定功能,这些对MOD测试同样必不可少。
外部链接
更多
引用
历史 | 角色 • 家族 • 省份 • 头衔 • 剧本 |
脚本 | 指令 • 条件 • 作用域 • 修正 • 事件 • 决议 |
常规 | 定义 • 游戏规则 • 另类开局 • 宗教 • 文化 • 政体 • 特质 • 血脉 • 科技 • 法律 • 建筑 • 宣战理由 • 朝贡国 • 单位 • 目标 • 疾病 • 死亡 • 荣誉头衔 • 社团 • 宝物 • 地图外政权 • 内阁成员 • 贸易路线 • 继承 • 奇观 • 称号 |
图像/音效/本地化 | 地图 • 图形 • 盾徽 • 肖像 • 界面 • 小地图 • 音乐 • 本地化 |
其他 | 故障排除 • 验证器 • 控制台指令 • 编辑游戏存档 • Steam创意工坊 • EU4转档器模组制作 |