Anno 1800 Wiki
Anno 1800 Wiki

This page is for information related to game mods and discussion about modding / modifying the game's files. See Fan-made Tools for a list of tools created by Anno fans such as calculators or layout designers.

Under Construction!

Modding Guides & Websites

  • You can read about how modding works in this English guide
  • HERE is a German guide. It was translated into English already, but the Annothek admin decided to just delete the modding section. So feel free to translate it again.
  • This is a video guide showing the steps needed to install ModLoader and install mods from sites such as or Github:

    Anno 1800 MODDING GUIDE - How to Add Mods to Your Game!!

Basic info

The games data is stored in the installation directory, in the "maindata" folder. The RDA files can be opened by RDA Explorer

RDA file organization

  • General game files
  • data1: Shaders used in the basegame
  • data2: Icons and images used in the basegame
  • data3: Video used in the basegame
  • data4: Blacklisted words in every language and fonts for the game
  • data5: Maps used in the basegame
  • data6: Islands used in the basegame
  • data7: Benchmarks
  • data8: Buildings used in the basegame
  • data9: Sounds used in the basegame
  • data10: The Anarchist DLC
  • data11: Sunken Treasures DLC
  • data12: Botanica DLC
  • data13: The Passage DLC
  • data14: Seat Of Power DLC
  • data15: Bright Harvest DLC
  • data16: Land Of Lions DLC
  • data17: Docklands DLC
  • data18: Tourist Season DLC
  • data19: The High Life DLC
  • data20: Pedestrian Zone Pack
  • data21: Eden Burning Scenario
  • data22: Seeds of Change DLC
Localization Sound.
Localization Sound.
Localization Sound.
Localization Sound.

The principle of modding involves modifying in-games values (Ships maintenance costs for instance) to make the game harder, easier or more balanced.

More detailed info

Such values as building cost, power output/consumation, maintenance cost, ecobalance effect, etc. is stored in patch0.rda/data/config/export/main/asset/assets.xml and superceded by the assets.xml files of subsequent patches.

Organisation of assets.xml

The data is divided into groups.

  1. Animals
  2. Buildings
    1. Tycoons
      1. Residence (houses)
      2. Public
      3. Production
      4. Energy (interesting!)
      5. Special (ark, ...)
      6. Ornaments
    2. Ecos
      1. Same as the Tycoon organisation
    3. Tech
      1. Same as the Tycoon organisation
    4. Others (fields, ...)
    5. "Relocation Placeholders"
    6. Third Party
  3. Vehicles
    1. Tycoons
      1. Submarine
      2. Warships
      3. Trading Ships
    2. Ecos
    3. Tech
    4. Third Party
    5. Other
    6. Quest Vehicles
  4. Units
  5. Street
  6. Testdata
  7. Unplaceable
  8. Landscape
  9. Infolayer
  10. Props
  11. Targets
  12. Disasters
  13. ... and then enough categories to give you an headache


Credits (e.g. Values/BuildCost/ResourceCost/Credits and Values/MaintenanceCost/ActiveCost and InactiveCost) are stored in the same unit as in-game credits.

Non-credit maintenance cost like power and ecobalance (Values/MaintenanceCost/ActiveEcoEffect, ActiveEnergyCost, ActiveEnergyProduction + Inactive...) are stored as binary fixed point numers:

ingame_maintenance = datafile_maintenance >> 12  # use binary right shift
ingame_maintenance = datafile_maintenance / 4096 # or divide by 2**12

Amounts of goods (Values/BuildCost/ProductCost/Tools) are stored in kilograms (1000 kg in data file = 1 ton ingame).

Time (Values/WareProduction/ProductionTime) is stored in miliseconds.

Default passive trading prices can be calculated as int(2.5 * properties.xml > .//ProductPrices/{value from assets.xml > /Values/WareProduction/Product}/BaseGoldPrice).

Building size in game tiles can be calculated from .ifo files using this pseudo-algorithm:

cfg_path = assets.xml -> /Values/Object/Variations/Item/Filename
ifo_path = cfg_path.replace("cfg", "ifo").lower()
ifo_file = open ifo_path from data2.rda + patches
x = ifo_file -> .//BuildBlocker/Position/x
z = ifo_file -> .//BuildBlocker/Position/z
x = abs(x) >> 11
z = abs(z) >> 11

See python implementation of reading these values in