Anno 1404 has built-in protection to prevent editing of files. For instance, no .rda asset archives can be modified or the game will disable achievements and medals. The save game (.sww) files have similar protection in order to prevent a user from downloading another user's save game and then meeting all the achievements and medals requirements already reached in that save file (such as have 50,000 inhabitants worldwide).
This save file protection is done so that, through the Gateway to the World web portal, players can upload and download save files to admire others' fantastic efforts, but those saves are linked to the original player's profile to prevent others from incorrectly receiving achievements and medals upon loading the save.
This save game protection is all well and good, however, there are certain times when you may legitimately need to edit a save game file in order to allow you to re-enable achievements and medals for that save. This is chiefly necessary in multiplayer games.
Multiplayer games - dropped playersEdit
Anno 1404 handles multiplayer (MP) saving in a less than desirable way. For each game save, it requires all MP players to have a unique version of that exact save file on their own computers. So in a three player MP game, when any player saves a game called "OurCoopGame01.sww", it saves on both other players' computers as well at the same time. Each players' save file contains profile data that links that specific save to their profile, so although all the "OurCoopGame01.sww" files appear identical, they are not interchangeable between users without breaking acheivements and medals support.
So a problem arises during a MP game when one player gets disconnected unexpectedly or Anno 1404 experiences a crash-to-desktop (CTD) for one player. When a player drops, Anno immediately autosaves for the remaining players. This would lead you to think you can simply exit to the main menu, create a new MP session, have all players re-join, and then let Anno 1404 automatically download that save to the other players' computers who don't have the save due to dropping out.
This will work, but very unfortunately it will cause all achievements and medals to be disabled for those who downloaded the save. What's worse is the game will not even pop up a warning message about this. This in turn can lead to players continuing to play for hours more before realizing only the players who didn't get disconnected or didn't crash are getting achievements.
If autosave or manual saving wasn't used frequently, players would be forced to load a much earlier save and lose much work. This very frustration is what led to the editing trick being discovered.
Multiplayer games - new playersEdit
Another use would be if you wanted to add a new player to or replace an original player for an existing MP game. Again, you could just have the new player connect to the host and download the save from the host. This works but breaks achievements and medals.
New user profiles with old savesEdit
Another less likely situation is if a user decides to create a new Profile for whatever reason. The save games under the old profile won't allow achievements to be accrued under the new profile. So you can edit the save files to overcome this.
Unfortunately, a user could download a very advanced save game and edit it to then allow the player to receive all the achievements and medals rightly earned by the original author. Doing this has not been confirmed to work and won't be discussed.
Save game hacking tutorialEdit
There is a way to edit save game files to make them display as being created by another user profile. This method is quite simple and only takes about 5 minutes per save once the method is understood.
You need RDA Explorer so you can open .sww files to extract the appropriate .xml files.
Finding the saveEdit
Find your save game directory.
- Windows XP: C:\Documents and Settings\YourUserName\Dawn of Discovery\Savegames
- Windows XP Anno 1404: C:\Documents and Settings\YourUserName\Anno 1404\Savegames
- Windows Vista/7: C:\Users\YourUserName\Documents\Dawn of Discovery\Savegames
- Windows Vista/7 Anno 1404: C:\Users\YourUserName\Documents\Anno 1404\Savegames
Tip: Make a copy of the .sww file you want to edit! Never edit your original save game without making a backup first!
Using RDA ExplorerEdit
Run RDAExplorer and open the .sww file you want to edit. It will contain four files:
- game2.xml: contains all the profile and game specific settings
- stats.xml: contains a small number of stats like total inhabitants, gold, and such, no profile data
- savegame.sww: the actual save game data using Anno's proprietary system, displays as gibberish in text editors
- preview.jpg: the small preview image, can be modified but there's no purpose except for laughs
Right-click on the "game2.xml" and pick Extract. Extract it anywhere. Now right-click on it again and pick Delete. Keep RDAExplorer open since shortly we will import the new modified game2.xml file.
Note: Editing the original .sww file in a text/hex editor without using RDA Explorer does not appear to work and will in fact make Anno crash upon load.
Editing in Notepad++Edit
Now find the game2.xml file you just exported from RDAExplorer and open it in Notepad++. You can right-click on the file and pick "Open" then select Notepad++ as the application.
You only need to edit three lines.
Find line 60, which will be:
The question marks will be numbers. For MP saves, you need to open up in RDAExplorer a prior good save for the player who got dropped. Extract game2.xml from the GOOD SAVE and find line 60, and then copy/paste that number into line 60 of the most recent save you're trying to edit.
Find line 106, which will be:
The question marks will be numbers that indicate your profile identification number. Again, you want to copy and paste the profile number of the person who got dropped from the MP game.
There are several ways to find said player's ID number. You can open any actual save file (.sww file) that player has created and copy the number from line 106 of their save file. You can also have them go into "C:\Users\YourUserName\AppData\Roaming\Ubisoft\Anno1404\Profiles" directory on their computer, which will show their actual profile number as the file name of their profile. Or you can search for them on Gateway to the World, and once on their webpage you can read the ID number from the URL.
Go to line 107, which will be:
This line indicates the Online Profile name of the player. The actual player name is separated by NUL symbols, which indicate hexadecimal 00 values. Again you need to copy the values from any of the dropped player's saves. However, since this line includes non-ASCII characters, you CANNOT do a simple copy/paste. You must copy/paste the actual Hex values.
To do this, open up any of the dropped player's GOOD saves. Again, you can open the .sww directly in Notepad++. Then go to line 107 and select the entire line. Make sure you select the COMPLETE line and nothing more. Notepad++ makes this easy by simply left-clicking on the far left column that says "107" in gray.
Once selected, now go into Hex view by either going to the Plugins->Hex-Editor->View in Hex menu option or by pressing CTRL-ALT-SHIFT-H. If this doesn't work, you probably don't have the Hex Editor plugin installed properly.
Once in Hex mode, don't panic. Simply do a Copy function, or Ctrl-C since you already have the Hex values that you need selected.
Now go back to the game2.xml file from the save file you want to edit. Go to line 107 and select the entire line. Again, make sure you select the COMPLETE line and nothing more! Now go back into Hex view. Now hit Paste or Ctrl-V.
Verify the editsEdit
This is all the editing you need to do. You can go back into regular non-Hex view (Ctrl-Alt-Shift-H again). You can compare all three edits to the lines from a GOOD SAVE. This means, if you're playing a multiplayer game and you have a prior good save, open it and compare the edits to make sure they match.
Replace the game2.xmlEdit
Now go back to RDAExplorer, which should still be open. Now be sure to put your edited game2.xml in a folder ALL BY ITSELF. Now go to Tools->Add folder as root. Find the folder that should ONLY CONTAIN the edited game2.xml. Add it. Now you should have a new game2.xml added as the fourth file listed at the bottom. Now simply do a Save or Save As and save the new .sww file with the default compression settings.
Transferring the saveEdit
Now you need to send this edited file to the dropped player, assuming you aren't that player. They need to put the save into their save directory and they MUST rename the save file to use the EXACT SAME name that your save file uses.
Now the player with the edited save should be able to go into Anno and pick to host a MP game and when they pick to load a save, the edited save should appear WITHOUT any red exclamation mark and the text at the bottom should NOT say "Unknown Profile" but rather their profile name. If so, congratulations. You've successfully hacked the save to allow achievements and medals to work.
If the red exclamation does appear, you most likely made a mistake in editing. Go back to your backups and retry the process. Be sure to be VERY methodical in your editing.
Remember that when in multiplayer games, all players must successfully save the game in order for you to resume play at another time with achievements and medals working for all players. Even though Anno has built-in downloading of save files for those players who don't have the save file, achievements and medals will not work using this method.
Takeaway: If a player suddenly drops from the game, do NOT attempt to use the autosave the game creates after the drop. Doing so will disable achievements and medals for the other player. You MUST go back to an earlier save that all players successfully saved before any players dropped. Or if you wish to use the autosave so as to not lose even a minute of playtime, you MUST do the save game "hack" described on this page.
There are also other things you can do by editing the XML sections of the save file. Most are fairly self explanatory. Changing these settings appears to work just fine but this has only briefly tested.