The one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods.
The one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML auto merging and DLL based mods.
No file size limit. No more repacking. Less likely to break after updates (in general a mod should continue to work after every update, YMMV).
This changes the games XML files using XPath, this makes it easy and possible to only have the changes in a mod that you absolutely need instead of handling megabytes of XML files.
Short shitty video to show how easy it is to install the loader.
Mods have to be installed seperately.
Head over to the releases page and download the loader.zip from the latest release.
Unzip the contents to the location where Anno1800.exe is
Uplay default path isC:\Program Files (x86)\Ubisoft\Ubisoft Game Launcher\games\Anno 1800\Bin\Win64)
You will be asked to overwrite python35.dll, just accept that.
You probably also need the VS 2019 Redist https://aka.ms/vs/16/release/VC_redist.x64.exe
And that's basically it.
Mods will be loaded alphabetically from
C:\Program Files (x86)\Ubisoft\Ubisoft Game Launcher\games\Anno 1800\modsassuming default Uplay path. A short tutorial for mod creation with the mod loader is given below. For an example zoom extend mod see the
In previous anno games there was a way to tell the game to load extacted files from disk instead of loading them
from the RDA container. While that made it easier, it's still not a nice way to handle modding large XML files.
This Anno 1800 mod loader supports a few simple 'commands' to easily patch the XML to achieve pretty much whatever you want.
Step 1) Set up a directory for your mod inside Anno 1800/mods. In the following steps, it is assumed that you have titled your directory "myMod"
Step 2) inside of myMod, you recreate the exact file structure that the base game uses. A patched assets.xml file would have to be under the following path:
Step 3) Your XML document is expected to have the following structure:
You can give as manyas you'd like to and have multiple patch files for different original ones in a single mod.
Step 1) Look up and select the XML node you want to edit with XPath using the Path argument.
For the assets file, you can also use the GUID argument. This selects all the child nodes of the asset with the given GUID as new roots for your xPath for cleaner code and is also much faster, performance-wise.
Example: ```xml Standard way:
Better, with GUID arg:
**Step 2)** Give a type for a ModOp, to change the selected node.
Currently supported types:
Step 3) Add the XML code that you want to have added, merged or as replacement inside the ModOp. example:
This ModOp will replace the node under /Values/Standard/Name of the asset with GUID 1337 with: "ThisIsATestNameForGUID1337"
Put this in a mod folder with the game path so this would be in
The mods folder in a default uPlay installation has to be located atC:\Program Files (x86)\Ubisoft\Ubisoft Game Launcher\games\Anno 1800\mods
You can find more examples in the
Debugging will not be possible, the game is using Denuvo and VMProtect, I have my own tools that allow me to debug it, but I will not be sharing those publicly.
You can read a printf aka debug-log about any errors caused by missing nodes, wrong paths or unrecognized node tests inAnno 1800/logs/mod-loader.log
To test what a 'patch' you write does to the original game file, you can also use
xml-test, which will simulate what the game will load.
xml-test game_camera.xml patch.xml
This patches game_camera.xml with patch.xml and writes the result as a patched.xml file in the current directory
Original whitespace should be pretty much the same, so you can use some diff tool to see exactly what changed.
Other file types can't be 'merged' obviously, so there we just load the version of the last mod that has that file. (Mods are loaded alphabetically). For resources it is heavily recommended to use the Anno 1800/data folder.
You need Bazel, Visual Studio 2019 and that should be it.
You can checkout
azure-pipelines.ymland see how it's done there.
If you want to work on new features for XML operations, you can use xmltest for testing. As that is using the same code as the actualy file loader.