筆記
模組載入器現在已整合到遊戲中,因此不再需要該項目。對於包含新/不同功能代碼的「官方」版本,請參閱以下 fowkr https://github.com/jakobharder/anno1800-mod-loader
《紀元 1800》唯一的模組載入器,支援載入解壓縮的 RDA 檔案、XML 自動合併和基於 DLL 的模組。
沒有檔案大小限制。不再需要重新包裝。更新後不太可能中斷(一般來說,mod 在每次更新後應該繼續工作,YMMV)。
這會使用 XPath 更改遊戲 XML 文件,這使得您可以輕鬆且可能地僅在您絕對需要的 mod 中進行更改,而不是處理兆位元組的 XML 文件。
簡短的影片展示了安裝載入程式是多麼容易。
模組必須單獨安裝。
前往發布頁面並下載最新版本的 loader.zip。
將內容解壓縮到Anno1800.exe所在位置
Uplay預設路徑為
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800BinWin64
系統會要求您覆蓋 python35.dll,只需接受即可。
您可能還需要 VS 2019 Redist https://aka.ms/vs/16/release/VC_redist.x64.exe
基本上就是這樣。
模組將始終按字母順序載入。 Mod 可以從以下位置載入:
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800mods假設預設 Uplay 路徑。這取決於您安裝《紀元 1800》時選擇的位置mods資料夾)。您可以使用Win + R並輸入shell:PersonalAnno 1800來存取它文件中的
mods優先於遊戲安裝目錄,這意味著如果文件位置中有mods資料夾,則 mods 將不再從遊戲目錄載入。
對於更有經驗的用戶,將遵循使用
mklink創建的符號連結(從而以更簡單的方式管理不同的 mod 儲存庫)。
下面給出了使用 mod 加載器創建 mod 的簡短介紹。有關縮放擴充模式的範例,請參閱examples目錄。
在以前的紀元遊戲中,有一種方法可以告訴遊戲從磁碟加載提取的檔案而不是載入它們
來自 RDA 容器。雖然這使事情變得更容易,但它仍然不是處理修改大型 XML 檔案的好方法。
這款 Anno 1800 mod 載入器支援一些簡單的“命令”,可以輕鬆修補 XML,以實現幾乎任何您想要的功能。
步驟 1)在 Anno 1800/mods 中為您的 mod 設定一個目錄。在以下步驟中,假設您的目錄標題為“myMod”
步驟 2)在 myMod 內部,您重新建立基礎遊戲使用的確切檔案結構。修補後的 asset.xml 檔案必須位於下列路徑下: Anno 1800/mods/myMod/data/config/export/main/asset/assets.xml
步驟 3)您的 XML 文件應具有以下結構:
< ModOps >
< ModOp >
<!-- Whatever Change you want to do -->
</ ModOp >
</ ModOps >您可以根據需要提供任意數量的
<ModOp>,並在單個 mod 中為不同的原始補丁檔案提供多個補丁檔案。
步驟 1)使用 Path 參數尋找並選擇要使用 XPath 編輯的 XML 節點。
例子:
< ModOp Path = " /Templates/Group[Name = 'Objects']/Template[Name = 'Residence7']/Properties " >對於資產文件,您也可以使用 GUID 參數。這會選擇具有給定 GUID 的資產的所有子節點作為 xPath 的新根,以獲得更清晰的程式碼,並且速度更快,效能更佳。
例子:
Standard way: < ModOp Path = " //Asset[Values/Standard/GUID = '1137']/Values/Standard/Name " >
Better, with GUID arg: < ModOp GUID = ' 1337 ' Path = " /Values/Standard/Name " >步驟 2)指定 ModOp 的類型,以變更所選節點。
目前支援的類型:
- Merge Replaces all given child nodes or Arguments
- Remove Removes the selected Node
- Add Adds inside the selected Node
- Replace Replaces the selected Node
- AddNextSibling Adds a sibling directly after the selected node
- AddPrevSibling Adds a sibling directly in front of the selected node
這只是一個快速的初始實現(~3 小時),對於如何改進或做一些完全不同的事情的討論非常開放
步驟 3)新增您想要在 ModOp 中新增、合併或取代的 XML 程式碼。例子:
< ModOp Type = " replace " GUID = ' 1337 ' Path = " /Values/Standard/Name " >
< Name >ThisIsATestNameForGUID1337</ Name >
</ ModOp >此 ModOp 會將 GUID 1337 的資產的 /Values/Standard/Name 下的節點替換為:“
<Name>ThisIsATestNameForGUID1337</Name>”
您可以使用Include指令將 XML 補丁拆分為多個檔案。
< ModOps >
<!-- ModOps applied before the include -->
< Include File = " even-more-modops.include.xml " />
<!-- ModOps applied after the include -->
</ ModOps > File採用相對於執行包含操作的 XML 檔案的檔案路徑。
遊戲中沒有對應項目的 XML 檔案通常是錯誤,並會導致日誌中出現錯誤。使用擴展名*.include.xml可以防止這種情況發生。
否則,包含的 XML 補丁的處理方式與一般 XML 補丁相同。支援嵌套包含。
將其放入包含遊戲路徑的 mod 資料夾中,以便位於mods/new-zoom-level/data/config/game/camera.xml中
預設 uPlay 安裝中的 mods 資料夾必須位於
C:Program Files (x86)UbisoftUbisoft Game LaunchergamesAnno 1800mods
< ModOp Type = " add " Path = " /Normal/Presets " >
< Preset ID = " 15 " Height = " 140 " Pitch = " 0.875 " MinPitch = " -0.375 " MaxPitch = " 1.40 " Fov = " 0.56 " />
</ ModOp >
< ModOp Type = " merge " Path = " /Normal/Settings " >
< Settings MaxZoomPreset = " 15 " ></ Settings >
</ ModOp >您可以在examples目錄中找到更多範例。
調試將是不可能的,遊戲使用的是 Denuvo 和 VMProtect,我有自己的工具可以讓我調試它,但我不會公開分享這些工具。
您可以在
Anno 1800/logs/mod-loader.log中閱讀 printf 又稱為偵錯日誌,以了解遺失節點、錯誤路徑或無法識別的節點測試引起的任何錯誤
要測試您編寫的「補丁」對原始遊戲檔案的作用,您還可以使用xml-test ,它將模擬遊戲將載入的內容。
xml-test game_camera.xml patch.xml
這使用 patch.xml 修補 game_camera.xml 並將結果作為 patched.xml 檔案寫入目前目錄中
原始空白應該幾乎相同,因此您可以使用一些 diff 工具來查看到底發生了什麼變化。
其他檔案類型顯然無法“合併”,因此我們只需載入具有該檔案的最後一個 mod 的版本。 (模組按字母順序載入)。對於資源,強烈建議使用 Anno 1800/data 資料夾。
您需要 Bazel、Visual Studio 2022,就這些了。
您可以查看azure-pipelines.yml並了解它是如何完成的。
成功的簡單步驟:
set BAZEL_VC=C:Program Files (x86)Microsoft Visual Studio2022BuildToolsVCbazel build //libs/python35:python35.dll建置 .dll如果您想開發 XML 操作的新功能,可以使用 xmltest 進行測試。因為它使用與實際文件載入器相同的程式碼。