How to learn to mod Anno 1800?

Translated by Wiesl

The most common and best answer is probably: Look at the documentation of the Mod-Loader and learn from other mods how to use the commands of the Mod Loader.
There is no big tutorial, walkthrough, helloworld or anything else. Simply nobody has done it yet. There are only a handful of modders have enough knowledge to write comprehensive tutorials.
Therefore: Look at the file structure of other mods; which files are needed for what. For text files => have a look. Analyze what the creator of this mod does in which way and what the result is.

And if you are tempted, just change the values of an existing mod and see if ingame comes out what you expect or create your own little mod by copying things from other mods. But: If you copy from others and share the result, be fair credit who inspired you and wrote the original.

What it takes to write a mod for Anno 1800

Translated by Wiesl

First of all: You need a desire to create. If you don't know what you want to have differently, you can't change it ;)
For this reason I have been mainly passive in modding and hardly used the knowledge I picked up. Vanilla is still enough for me at the moment.

A basic understanding of programming helps immensely (no matter which direction), but is not absolutely necessary.
The necessary requirements depend strongly on what you want to do. If you want to work on e.g. graphics, you will need external programs. At this point I will keep it a little bit shorter and limit myself to basic stuff.

In my opinion it is recommended to first make sure that you can look into the game files yourself. The game files of Anno are in several archives and can be found in Anno 1800/maindata/ (Example: data0.rda). The RDAExplorer opens the archives and unpacks them where you need them. It doesn't hurt to make a backup.
Download => Start => File => Open (Read Only) => Select Archive => Open => Tools => Extract all => Select location.
Depending on the size of the archive (a few MB up to 12GB) unpacking can take a few minutes.

Attention: Anno starts at data0.rda and goes up numerically. During updates obsolete files will be replaced by new versions from a later rda.
It is therefore recommended to unpack from data0.rda one time at a time. This way you will have the latest version of everything and for future updates and DLCs you only have to check which .rda are new/changed and unpack only these

Most mods work by replacing, deleting or adding new values in the settings of Anno.
Most of these settings can be found in the file assets.xml, which can be found in the unzipped game files under data\config\export\main\asset. Be careful with this file. Before opening, keep in mind that the file is over 100MB of pure text, in over 2 million lines. Not every program can handle files this large. Standard programs like Notepad (editor) or Notepad++ will crash while editing these files, and may even end up in a bootloop when the last opened files are reopened. And also monsters like Dreamweaver have already shot themselves off with it. I recommend Microsoft Visual Studio code with XML tools as extension.
And if you are on xml in tree structure, XML Tree Editor is able to handle the assets without crashing.

Most graphics for UI etc. can be found as .dds files in the game files. Hardly anyone can do anything with it, but converting is quite easy.
The way I described is only for the basics, where you want to convert the images to be able to assign them. If you like it more professional, or if you want to work with the graphics, you can also automate the conversion via xn Convert or Gimp. If you want to use the images further, there are a few things to consider when converting. But my knowledge is rather incomplete, to put it nicely. You can find more information at the Maug-Project.
That's why I only have the Kellerkind variant for converting the icons to .png, just for the purists and the beginners.
Download "texconv" from mircosoft and save the file in the folder "data" in the game files you unzipped earlier. Next, open the text editor of your choice (again: not Word!) and write the following into it:

Save the file in the folder "data" under the name converter.bat (whereby everything before the ".bat" can be freely selected).
If you execute this file now, the Windows Command window opens and in rapid speed the lines rush through.

A .bat, a so called batch, is a small own program you can almost say (since created by yourself: your own small program ^^).
The Batch now goes there and looks in the folder where it is stored (as well as in subfolders inside) for files with the extension .dds. If it found such a file, the batch takes the texconv.exe with the other hand and stuffs the dds-file into it, so that at the end a png recognizable for everyone comes out. You can google the meaning of the parameters if necessary.

You don't need more than that to have a solid basic equipment for your first attempts at walking and comprehension before you take further steps.

Everything about GUIDs

Translated by Wiesl
What are GUIDs

A GUID (Globally Unique Identifier) is a unique identifier that occurs only once. In Anno it is a sequence of up to 11 numbers long, most of them should be 7 characters long. With the help of these GUIDs, everything in the game files can be uniquely named and clearly assigned by the game itself. Not everyone can be called Bob ;)
For modders these GUIDs are important for the same reason: With these GUIDs the ModLoader knows where to make which changes. And based on these GUIDs the modder can find any context in the game files by simply shimmying from GUID to GUID.

GUIDs in the assets.xml
Imagine, you are sitting in an airplane, having a good conversation with your seat neighbor about Anno, and you have just forgotten how to get the item "Feras Alsarami, Master of Hypnosis". Horror scenario, no question, but we just want to imagine it theoretically ;)
Of course you don't have an AssetViewer at hand, but the well versed modder always has his files with him and can show us how to get this information out. That's good, because that's the way to find most of the connections.
But before we dive into the assets.xml, let's wet our feet in the texts_german.xml. You can find the file in the unzipped game files under the path data\config\gui\. Everything that has a name, all texts spoken or displayed in the game can be found in the local language in this file, and there we simply look for the name of the item to find out its GUID. Then we should find this here:

Feras Alsamari in texts_english.xml[ Copy codeblock ]
<Text> <GUID>192450</GUID> <Text>Feras Alsarami, the Persuader</Text> </Text>

With this GUID we now dive into the assets.xml.

The assets.xml is the core of the game settings and even if we have only one copy of it after unpacking the dataX.rda: Be careful. The assets.xml may contain only simple text, but it is much more than 2 million lines of text.
Not every program can handle this. I recommend Visual Studio code from Microsoft with the extension XML Tools, but there are several.

If we look for the GUID of the item (192450), we find the item declaration itself as well as all links, mostly asset pools. And now comes the nasty part: To find out how to get feras, we have to check every time we mention the item whether it is or could be a way to get the item.
This is done the same way as for the item: We take the GUID of the pool and look where this pool is linked in the assets.xml. If you are unlucky, you have to go through several asset pools to see that you can buy the item from Eli. If you are lucky, the way is sometimes faster, like with the feras for example with this possibility to get the item:

The searched GUID in a palace visitor pool[ Copy codeblock ]
<Asset> <Template>RewardPool</Template> <Values> <Standard> <GUID>193870</GUID> <Name>Palace Replacement Specialists Pool</Name> <IconFilename>data/ui/2kimages/main/3dicons/specialists/systemic/icon_well_dressed_106.png</IconFilename> </Standard> <RewardPool> <ItemsPool> <Item> <ItemLink>192440</ItemLink> </Item> <Item> <ItemLink>192450</ItemLink> <= Didn't we know this one? ^^ </Item> <Item> <ItemLink>190719</ItemLink> </Item> <Item> <ItemLink>190668</ItemLink> </Item> <Item> <ItemLink>190684</ItemLink> </Item> <Item> <ItemLink>191377</ItemLink> </Item>
Enlarge codebox

Here you can see that the search can sometimes be finished quite fast. Feras is linked directly in this pool and the pool is quite clearly named. The names here in the assets.xml are not of much value, and are probably only meant to give you an overview.

Custom GUIDs

If you really want to start modding, you will get to the point where you have to assign your own GUIDs. Be it for new buildings you bring into the game, or clone an existing one. For new civil levels or new texts. You need a GUID for everything. But what if you assign a GUID that already exists?
Of course this is not good ;)
The actual effects can range from nothing to a CTD (Crash to Desktop). This was sometimes a problem for modders until mid 2020. Many of them talked to each other to avoid using the same GUIDS making mods not compatible with each other, but here and there we had a few clashed. At the end of June Ubisoft announced:

For our modders - a safe GUID range
As you know, we continue to being impressed and appreciate the work some our community members put into creating mods for Anno 1800. To make it a little bit easier for you when it comes to adjusting your mods to new Game Updates, we now reserved the GUID range 1337471142 to 2147483647 just for you. This range is "safe" and not used by us.

In the name of all modders for it once again many thanks to Mainz.

Safe GUID range

Brought up by Lady Meridonia here is a list of modders, and the GUID-ranges they use. The list is of course never complete and is constantly being updated. If you want to be on the list, just contact Lady Meridonia in the Discord. If required I will also forward it to her.