Anno 2070 Wiki
Register
Advertisement

Dev Page | < Development Pages

This page is for discussion about modding / modifying the game's files. See Modifications for an overview of prepared, downloadable mods.

Two Words of Warning[]

  • After you start playing online with modified content in Anno 2070 some of your profile statistics may be reset to 0. In case of eg. the upgrading all residences to next level modification (see below) your goods production stats will be at 0 every time you start game with mod.
  • Modifying the files should be done with extreme caution: any change will be detected by the autopatcher (by checking the MD5 Checksum), and the changed file will be deleted and re-downloaded.

Do not allow internet access when trying to mod, unless you're using the AnnoCookie.

Playing Online using AnnoCookie[]

Someone developed a tool, called AnnoCookie, with which you are able to play online if you've modified the game.

Download: http://www.sendspace.com/file/ukide9

How to use AnnoCookie:

  • You need to place AnnoCookie 0.3 file in game directory.
  • Start the game, and DECLINE 2 times eula licence of autopatcher, otherwise it will undo all changes that you've done in game files.
  • Then switch to your desktop (using Alt+Tab).
  • Start the AnnoCookie and do instructions in there.
  • Switch back to the game, and play!
  • Note that you cannot play with human players who haven't installed the same modification as you have.

Basic info[]

The games data is stored in the installation directory, in the "maindata" folder

RDA file organization[]

Data0.rda
Most AI files.
Data1.rda
Specifications of buildings, items, etc. Contains balancing settings.
Data2.rda
Most of the GUI can be found here
Data3.rda
Maps, generators, islands: They're in here.
Data4.rda
Movies and sound/music.
Data5.rda
Post-effects and shaders.
eng0.rda
Localization data.
eng1.rda
Localization data.
patchx.rda
Updated copies of the Data files.

The principle of modding involves modifying in-games values (Wind Park power output for instance) to make the game harder, easier or more balanced.

More detailed info[]

Such values as building cost, power output/consumption, maintenance cost, ecobalance effect, etc. are stored in patch8.rda/data/config/game/assets.xml and superseded 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 a headache

Values[]

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 milliseconds.

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 list_of_buildings.py.

An easy example: upgrading all residences to the next level[]

This is very easy to do, you of course need the RDA Explorer (look in External tools) and follow these steps:

Step 1: Open the patch8.rda with the RDA Explorer;

Step 2: Navigate to data\config\game and extract properties.xml, then open it with text editing program (for ex. Notepad);

Step 3: Search for the entry: "ResidenceUpgradeAmountMaxPercent" (without quotation marks " ");

Step 4: Change the numbers to 100 like this:

<Ecos1>100</Ecos1>
<Ecos2>100</Ecos2>
<Ecos3>100</Ecos3>
<Techs1>100</Techs1>
<Tycoons1>100</Tycoons1>
<Tycoons2>100</Tycoons2>
<Tycoons3>100</Tycoons3>
<Techs2>100</Techs2>

Step 5: Save the .xml file and add it to rda file that you extracted from. Save the .rda file.

Note! You are doing next step only if you bought the Deep Ocean expansion.

Step 6: Now you must do the same with an other file in: addon1.rda\addondata\config\balancing\addon_01_assets.xml

Commands?[]

Take a look at these, this is the best place i could think to put this info.  I found them when going through files in the game. These were originally in German. They appear to be commands, but if anyone has better insight it would be appreciated.

# Developers break turn (right click and selection

still work)<br />bind ("SHIFT P", "/ game / enabledevpause")

# Hide info<br />bind ("CONTROL SHIFT I", "/ menu / toggle (\"

DEBUG_INFO_OUTPUT \ ")")

# Complete game without confirmation<br />bind ("SHIFT Y", "/ exit")

# 1000 Money, 1t tool, 1t wood, food and 1t to the

selected ship building material for a warehouse)<br />bind ("SHIFT CONTROL INSERT", "/ game / sheik")

Fill # store the current island with consumption

goods / empty money on 100000/0<br />bind ("INSERT CONTROL ALT", "/ game / iamtheking

(1)")<br />bind ("CONTROL + ALT", "/ game / iamtheking (0)")

Fill # store the current island with intermediate

goods / empty<br />bind ("CONTROL ALT L", "/ game / iamtheking (2)")<br />bind ("CONTROL ALT O", "/ game / iamtheking (3)")

Fill # store the current island with construction

material<br />bind ("INSERT", "/ game / build material ()")

# Residences fill (multiply)<br />bind ("SHIFT CONTROL V", "/ game / fillHouse ()")

# Fame points cheat<br />bind ("INSERT SHIFT", "/ game / VitaminB ()")

1 million money #<br />bind ("CONTROL M", "/ game / goods (-1, 1000000)")

# 1t shopping tool<br />bind ("CONTROL + SHIFT", "/ game / goods (2, 1)")

Build # tycoon Leader House<br />bind ('J', '/ game / SetGuid (10118)')

bind ("SHIFT E", "/ game / SetGuid (40000001)")

# Enforces upgrade selektiertem building (no rise

willingness / construction costs)<br />bind ("ALT U", "/ game / wm / upgrade building (1)")<br />bind ("ALT SHIFT U", "/ game / wm / upgrade building

(2)")

# Build office on the selected ship<br />bind ("ALT K", "/ game / SetGuid (10035)")

# Build underwater office on the selected ship<br />bind ("ALT J", "/ game / SetGuid (10033)")

Build # Ship<br />bind ("CONTROL U", "/ game / SetGuid (20000)")<br />bind ("CONTROL SHIFT U", "/ game / wm / addSpawnGUID

(20023)")

Show # handle information<br />bind ("CONTROL ß", "/ game / wm /

showselectedhandleinfo ()")<br />bind ("SHIFT ß", "game / wm / showselectedhandleinfo

()")

# Explore all<br />bind ("CONTROL SHIFT L", "/ game / wm / Leonardo

()")

# Debug flow control<br />bind ("SHIFT CONTROL J", "/ game /

ToggleShowTriggerEngine")

# Start selektiertem Handle Infection<br />bind ("Shift F7", "/ game / wm / start infection (1,

60000)")<br />bind ("ALT SHIFT F7", "/ game / wm / start disaster

(8514, -1)")

# Start selektiertem Handle Crime<br />bind ("SHIFT F8", "/ game / wm / start infection (3,

60000)")<br />bind ("ALT SHIFT F8", "/ game / wm / start disaster

(8516, -1)")

# Selektiertem handle damage (on fire)<br />bind ("SHIFT F9", "/ game / wm /

addHitpointsToSelected (-10)")<br />bind ("ALT SHIFT F9", "/ game / wm / start disaster

(8513, -1)")

# To handle around-selected start BlackTide<br />bind ("ALT B", "/ game / wm / start disaster (-1, -

1)")

# Trigger Katastropphe<br /># Tornado<br />bind ("Shift F1", "/ game / setglobaltrigger (\"

START DISASTER \ ", 1)")<br /># Sandstorm<br />bind ("Shift F2", "/ game / setglobaltrigger (\"

START DISASTER \ ", 2)")<br /># Thunderstorm<br />bind ("Shift F3", "/ game / setglobaltrigger (\"

START DISASTER \ ", 3)")<br /># Fake Volcano eruption<br />bind ("SHIFT F4", "/ game / setglobaltrigger (\"

START DISASTER \ ", 4)")<br /># Small Volcano eruption<br />bind ("SHIFT F5", "/ game / setglobaltrigger (\"

START DISASTER \ ", 5)")<br /># Volcano large eruption<br />bind ("SHIFT F6", "/ game / setglobaltrigger (\"

START DISASTER \ ", 6)")

# Call cheats<br /># Bind ("CONTROL ALT R", "/ game / wm /

ToggleShowPlayerReputation ()")

# Change vehicle height level<br />bind ("CONTROL ALT Y", "/ game / togglemoveheight

()")

# Delete the cooldown for all special promotions<br /># Bind ("CONTROL ALT C", "/ game / wm / reset

cooldown ()")

# Building rules off (population or research

requirements ignore)<br />bind ("SHIFT CONTROL X", "/ game /

togglebuildingrules")

# Invite guest of honor<br /># Bind ("ALT F1", "/ game / setglobaltrigger (\"

SPECIAL GUEST \ ", 1)")<br /># Bind ("ALT F2", "/ game / setglobaltrigger (\"

SPECIAL GUEST \ ", 2)")<br /># Bind ("ALT F3", "/ game / setglobaltrigger (\"

SPECIAL GUEST \ ", 3)")<br /># Bind ("ALT F6", "/ game / setglobaltrigger (\"

SPECIAL GUEST \ ", 4)")<br /># Bind ("ALT F7", "/ game / setglobaltrigger (\"

SPECIAL GUEST \ ", 5)")<br /># Bind ("ALT F8", "/ game / setglobaltrigger (\"

SPECIAL GUEST \ ", 6)")<br /># Bind ("ALT F9", "/ game / setglobaltrigger (\"

SPECIAL GUEST \ ", 7)")<br /># Bind ("ALT F10", "/ game / setglobaltrigger (\"

SPECIAL GUEST \ ", 8)")<br /># Bind ("ALT F11", "/ game / setglobaltrigger (\"

SPECIAL GUEST \ ", 9)")

# Change to a player<br />bind ("CONTROL SHIFT F1", "/ game / setplayer (0)")<br />bind ("CONTROL SHIFT F2", "/ game / setplayer (1)")<br />bind ("CONTROL SHIFT F3", "/ game / setplayer (2)")<br />bind ("CONTROL SHIFT F4", "/ game / setplayer (3)")<br />bind ("CONTROL SHIFT F5", "/ game / setplayer (4)")<br />bind ("CONTROL SHIFT F6", "/ game / setplayer (5)")<br />bind ("CONTROL SHIFT F7", "/ game / setplayer (6)")<br />bind ("CONTROL SHIFT F8", "/ game / setplayer (7)")

# Ki continue<br />bind ("CONTROL C", "/ game / ki / pauseKI (0)")

# 1 minutes playing time skip (Game will not tick

off)<br />bind ("CONTROL NEXT", "/ game / jump gametime (60)")

# Create Manual memory info<br />bind ("F", "/ AddMemoryfootprint (\" Manual

footprint \ ")")

Show # Pathblocker<br />bind ("CONTROL SHIFT R", "/ toggleterraingrid")

# Feedback Show Info<br />bind ("CONTROL SHIFT F", "/ toggleinfos (\" feedback

\ ")")

# Quest Info Show<br />bind ("SHIFT CONTROL Q", "/ toggleinfos (\" quest \

")")

Show # Showtime<br />bind ("CONTROL F1", "/ showtime (\" root \ ")")<br /># Hide Showtime<br />bind ("CONTROL F2", "/ showtime (\" hide \ ")")<br /># Showtime at break<br />bind ("CONTROL F3", "/ showtime pause (1)")<br /># Showtime break from<br />bind ("CONTROL F4", "/ showtime pause (0)")

# Toggle debug information (for example birds)<br />bind ("CONTROL SHIFT D", "/ game / debug info")

# Explain everything<br />bind ("CONTROL H", "/ game / disc overall")

# Open / close text inspector<br />bind ("CONTROL G", "/ menu / toggletextinspector")<br />bind ("CONTROL SPACE", "/ menu / copy text

inspector")

# Stop command, probably no longer work?<br /># Bind ("SUBTRACT", "/ game / SETLIGHT (\" data /

config / game / light.xml \ ")")<br /># Bind ("MULTIPLY", "/ game / SETLIGHT (\"

data/config/game/light2.xml \ ")")<br /># Bind ("DIVIDE", "/ game / SETLIGHT (\"

data/config/game/light3.xml \ ")")<br /># Bind ("SHIFT CONTROL 1", "/ game /

setupperlodbound (100)")<br /># Bind ("CONTROL SHIFT 2", "/ game /

setupperlodbound (50)")<br /># Bind ("CONTROL SHIFT 3", "/ game /

setupperlodbound (0)")<br /># Bind ("CONTROL SHIFT O", "/ ToggleOwnerRaster")<br /># Bind ("CONTROL ALT Q", "/ game / toggleMinimap")<br /># Bind ("SHIFT CONTROL E", "/ menu /

ToggleGUIEditMode")<br /># Bind ("CONTROL ALT F5", "/ reload Visible

Windows")<br /># Bind ("F", "/ togglethreading ()")<br /># Bind ("CONTROL SHIFT P", "/ game /

toggleParticles")<br /># Bind ("SHIFT CONTROL G", "/ game /

toggleprocobjects")<br /># Bind ("CONTROL SHIFT S", "/ togglerenderparams

(1)")<br /># Bind ("CONTROL SHIFT D", "/ togglerenderparams

(2)")<br /># Bind ("CONTROL SHIFT F", "/ togglerenderparams

(3)")<br /># Bind ("CONTROL SHIFT N", "bypassal")<br /># Bind ("CONTROL SHIFT M", "menu / toggleall")<br /># Bind ("CONTROL SHIFT C", "/ game / wm / bind /

toggleMinimapRotation")<br /># Bind ("CONTROL ALT G", "/ toogleGUIScale ()")<br /># Bind ("ALT CONTROL SHIFT A", "/ game / wm /

offerTreaty (0,1,0,0)")<br /># Bind ("SHIFT CONTROL ALT I", "/

toggleobjectinfos")<br /># Bind ("ALT CONTROL SHIFT P", "/ game /

toggleinvincibility ()")<br /># Bind ("CONTROL R", "/ ReloadConfig ()")<br /># Bind ("CONTROL ALT F", "/ menu / toggle (\" STATUS

INFO \ ")")

bind ("CONTROL SHIFT A", "/ toggleareas")<br />bind ("CONTROL SHIFT B", "/ togglebuildblocker")

# Commands for storing knick-knacks and loading

camera positions<br /># Bind ("SHIFT 1", "/ game / load player camera

(1)")<br /># Bind ("SHIFT 2", "/ game / load player camera

(2)")<br /># Bind ("SHIFT 3", "/ game / load player camera

(3)")<br /># Bind ("SHIFT 4", "/ game / load player camera

(4)")<br /># Bind ("SHIFT 5", "/ game / load player camera

(5)")<br /># Bind ("SHIFT 6", "/ game / load player camera

(6)")<br /># Bind ("SHIFT 7", "/ game / load player camera

(7)")<br /># Bind ("SHIFT 8", "/ game / load player camera

(8)")<br /># Bind ("SHIFT 9", "/ game / load player camera

(9)")<br /># Bind ("SHIFT 0", "/ game / load player camera

(0)")


# Bind ("ALT 1", "/ game / save player camera (1)")<br /># Bind ("ALT 2", "/ game / save player camera (2)")<br /># Bind ("ALT 3", "/ game / save player camera (3)")<br /># Bind ("ALT 4", "/ game / save player camera (4)")<br /># Bind ("ALT 5", "/ game / save player camera (5)")<br /># Bind ("ALT 6", "/ game / save player camera (6)")<br /># Bind ("ALT 7", "/ game / save player camera (7)")<br /># Bind ("ALT 8", "/ game / save player camera (8)")<br /># Bind ("ALT 9", "/ game / save player camera (9)")<br /># Bind ("ALT 0", "/ game / save player camera (0)")

bind ("ALT SHIFT 1", "/ game / wm / start quest

(9.500043)")<br />bind ("ALT SHIFT 2", "/ game / wm / start quest

(9.500065)")<br />bind ("ALT SHIFT 3", "/ game / wm / start quest

(9.500098)")

# Camera control bindings<br />bindOnLayout ("SHIFT 1", "/ game /

camctrlinsertcamerakey ()", 1)<br />bindOnLayout ("SHIFT 2", "/ game /

camctrlinserttargetkey ()", 1)<br />bindOnLayout ("SHIFT 3", "/ game /

camctrlinsertvariablekey ()", 1)<br />bindOnLayout ("SHIFT Y", "/ game /

camctrldecreasetime ()", 1)<br />bindOnLayout ("SHIFT X", "/ game /

camctrlincreasetime ()", 1)<br />bindOnLayout ("F2", "/ game / camctrlsetcamera (2)",

1)<br />bindOnLayout ("F3", "/ game / camctrlsetcamera (3)",

1)<br />bindOnLayout ("F4", "/ game / camctrlsetcamera (4)",

1)

# Declare war between 0 and 1 player<br />bind ("SHIFT CONTROL W", "/ game / wm / accepttreaty

(0,1,0)")

# Building of 1x1 test objects<br />bind ("ALT SHIFT V", "/ game / SetGuid (50010)")

# Cheat codes for current quests<br />bind ("SHIFT Q", "/ game / quest helper ()")

bind ("NUMPAD1", "/ menu / test video (0)")<br />bind ("NUMPAD2", "/ menu / Test Video (1)")

bind ("CONTROL ALT I", "/ game / wm /

IncreasePlayerReputation (100)")<br />bind ("CONTROL ALT D", "/ game / wm /

IncreasePlayerReputation (-100)")

bind ("CONTROL SHIFT K", "/ game / ki /

ToggleShipDebugInfos ()")<br />bind ("CONTROL ALT D", "/ game / ki / Danger Grid

()")

bind ("CONTROL SHIFT P", "/ game / ki / Change

player (-1)")

bind ("+", "/ game / togglegamespeed ()")

bind ("ALT RETURN", "togglescreenmode ()")

bind ("CONTROL L", "/ game / wm /

enableselectedlocalfeedback (1)")<br />bind ("CONTROL SHIFT L", "/ game / wm /

enableselectedlocalfeedback (0)")

bind ("CONTROL ALT T", "show dummy traffic setup

(1)")

bind ("CONTROL SHIFT S", "/ menu / toggle (\"

SCRIPTING_CONSOLE \ ")")<br />bind ("CONTROL SHIFT C", "/ menu / toggle (\"

CHEAT_PANEL / PANEL \ ")")

# Boids and AnimalBoids off (objects will be

deleted)<br />bind ("CONTROL SHIFT T ',' / game / wm /

toggleanimals")

bind ("CONTROL P", "/ menu / show portraits")

# Toggle the visibilty of the central interface<br />bind ("ALT SHIFT I", "/ game / show central

interface (2) ')

bind ("RETURN", "/ game / show chat")

bind ("D +", "game / IncreaseDiplomacyPoints (100)")<br />bind ("D -", "game / IncreaseDiplomacyPoints (-

100)")

bind ("CONTROL ALT R", "game / Resident Smalltalk

()")

bind ("CONTROL ALT U", "game / enableunderwatercam

()")

bind ("CONTROL ALT M", "game / martin ()")<br />bind ("CONTROL ALT S", "game / wm / special quest

start ()")<br />bind ("CONTROL Q", "game / wm / default quest start

()")

bind ("CONTROL SHIFT M", "game / trigger Third Party

Message ()")

bind ("CONTROL T", "game / tsunami start ()")

# Vehicles special actions<br />bind ("T" "/ activatesubmerge ()")<br />bind ("Z", "/ activateemerge ()")<br />bind ("G", "/ activateitemguid (2600090)")<br />bind ("W", "/ activateitemguid (60207)")<br />bind ("e", "/ activateitemguid (60208)")<br />bind ("D", "/ activateitemguid (60209)")<br />bind ("H", "/ activateitemguid (60460)")
Advertisement