模組文件結構

本頁面所適用的版本可能已經過時,最後更新於1.9

模組文件結構

本地模組

本地模組必須位於~/.local/share/Paradox Interactive/Hearts of Iron IV/modC:\Users\<Username>\Documents\Paradox Interactive\Hearts of Iron IV\mod,應該包括:

  • '.mod'文件,它告訴啟動器如何處理模組文件夾。(文件名沒有特殊要求,僅本地模組需要,當上傳到steam創意工坊時該文件不會上傳)
  • 模組文件夾或者包含模組數據的壓縮文件。模組數據要與遊戲文件有相同的文件結構
  • descriptor.mod文件在模組文件夾內部——它應當包含與上面的 .mod 文件相同的信息。(注意:文件名必須為 descriptor.mod,且不能用 UTF-8 BOM 編碼儲存)
  • 模組圖片 (可選) - 模組文件夾中命名為 thumbnail.png 的文件, 起到 Steam 創意工坊模組圖片的作用。(注意:必須使用 .png 格式並命名為 'thumbnail.png';尺寸不重要,但應該按照 1:1 的比率。)


遊戲啟動器的模組配置工具可以自動創建基本的文件結構。前往Mods 標籤頁,然後點擊Mod 工具創建 Mod。 注意文件夾和文件的名字在 macOS 和 Linux 上大小寫敏感。

Steam 工坊模組

從 steam 創意工坊訂閱和下載的模組位於.../Paradox Interactive/Hearts of Iron IV/workshop/content/394360或在某些情況下位於...\SteamLibrary\steamapps\workshop\content\394360

從 Steam 創意工坊下載的模組與手動安裝或創建的模組其處理方式有所差異:
雖然模組的 .mod 文件會出現在模組文件夾(表示為remote_file_id),但是模組的內容被存儲在...\Paradox\Hearts of Iron IV\workshop\content\<remote_file_id>
remote_file_id是創意工坊給予模組的一個標識。這個標識被用來表示模組 .mod 和 zip 文件的名字,但在 .mod 和 descriptor.mod 文件中是這樣表示的:

name="New Ideologies"
archive="workshop/content/281990/678893824/newideologies.zip"
tags={
	"Balance"
	"Gameplay"
}
remote_file_id="678893824"
supported_version="1.0.0.19987"

注意:從遊戲 1.9.0 開始,新創建的模組不再存儲在 .zip 壓縮包中


創建一個模組

總原則

  • 修改遊戲的模組的文件結構應與原版遊戲保持一致。
  • 文件夾中找到的所有文件都會被遊戲加載。
  • 所有 .txt 文件都應使用 UTF-8 without BOM 的格式,本地化(localisation)文件都應該使用 UTF-8 BOM 的格式。
  • 要覆蓋原版文件,使用相同的文件名。
  • 要添加新內容同時不改變任何原版文件,使用一個不同的文件名。
  • 遊戲除文件目錄的變化外不會作進一步的變化檢查。如果想在文本文件里新添一行,則需要複製整個文本文件後再在複製後的文件里添加。

創建簡單的本地模組

例如,要創建一個名為「Test1」的模組,則要在...\Paradox\Hearts of Iron IV\mod目錄下新建一個名為test1.mod的文本文件和名為'test1'的文件夾。

test1.mod的內容應該與下述一致:

name="Test1"
path="mod/test1"
tags={
	"Alternative History"
}
picture="thumbnail.png"
supported_version="1.5.4"

這樣做是為了給遊戲啟動器提供模組的信息。包括了模組的名稱、位置(來自 mod 文件)、標籤(額外的描述符)、圖片名稱和支持的遊戲版本。

創建次級模組

有時你會想你的模組能依賴其他模組,並且按照一定的加載順序。模組通常會按字母順序加載(所以列表中最後一個模組會覆蓋前面的模組)。但是有些東西可能會影響這點,所以如果你需要一個特定的加載順序,確保你寫明了依賴關係,這需要在 .mod 文件的 "dependencies" 下寫出其全名來指定。

name="testmodB"
path="mod/testmodb/"

# this guarantees we load testmodA first before our testmodB is loaded
dependencies= { 
	"testmodA" 
}
supported_version="1.5.2"

增加模組內容

例如,一個簡單的修改就可以改變遊戲中顯示的文本。

要改變加載界面中出現的名人名言,請把遊戲原版文件,「.../Hearts of Iron IV/localisation/loading_tips_I_english.yml」,中的「localisation/loading_tips_I_english.yml」文件複製到你新創建的「mod/test1」文件夾下的「localisation」文件夾。

文件結構現在看起來應如下所示:

 ...\Paradox Interactive\Hearts of Iron IV\mod
     test1.mod
     test1 (dir)
       localisation (dir)
         loading_tips_I_english.yml

當「loading_tips_I_english.yml」未被改變時,遊戲將會像往常一樣正常運行。但是如果改變了,遊戲就會使用新內容而不是慣常的「loading_tips_I_english.yml」。修改模組文件夾中的「loading_tips_I_english.yml」文件,讓它包含這些內容:

 l_english:
  LOADING_TIP_0:0 "Test1 mod"

當遊戲加載這個模組並以英文運行時,唯一顯示的名人名言就會是這句「Test1 mod」。

小提示

  • 要準確理解代碼中的東西是怎麼工作的,查看遊戲文件以及搜索你的模組會改變什麼東西等類似的事會很有幫助
  • 另外,你可以在...\steamapps\workshop\content\394360下搜索其他用戶模組的文件
  • 儘量減少對原版文件的覆蓋,這樣你在管理模組讓它與最新版遊戲保持一致,並且減少與其他模組的衝突時都會更方便一些
  • 測試模組時,查看...\Documents\Paradox Interactive\Hearts of Iron IV\logs\error.log下的錯誤日誌很有幫助,這能讓你在有些東西不起作用時得到相關線索。

參見

根據你的模組要做什麼,你可能會想瀏覽一些與部分更基礎的遊戲內容修改相關的頁面: