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轉檔器模組製作 |