Doubling

From Morrowind Modding Wiki
Jump to: navigation, search

What follows is an extremely abridged summary of the long answer given in Wrye Matching.

Background: Reference Ids

  • So, you start Morrowind, load your last saved game, and find yourself in Balmora. There on the bridge is the same MCA character. There at your feet is the potion that you just dropped. Over there is the door that you opened. And it occurs to you... How does Morrowind keep track of all this stuff? How does it know this potion is supposed to be here? How does it know that door needs to be open?
  • The answer is reference ids -- every object that you see in the game world has an unique numerical id attached to it, defining it. When you load a set of mods (as you do when Morrowind starts up), Morrowind first recreates the world in a "virgin" (i.e. unchanged state). Then, when you load a savegame, it reapplies all the changes that you made -- killing bandits, filling quests, opening doors, moving NPCs, etc. It makes those changes by matching the reference ids stored in the savegame against the reference ids as calculated for the virgin gameworld (i.e. for the the set of loaded mods).
  • Unfortunately this matching/updating process can go wrong sometimes. Doubling is the most obvious such problem. But other problems can happen, e.g., changes meant for a bar door might be applied to an NPC. These mismatches might be invisible, might cause weird behavior, or might cause CTDs. As people have found in the past, if enough of them pile up (e.g., after repeatedly changing the mod list), you will get corrupted unplayable games.
  • Note that all of these problems are caused by mismatches between reference ids! E.g. from your loaded mod list, Morrowind determines that the referenceid number for that door should be 345672-05, but your savegame thinks that the reference id for the door should be 345672-07, or maybe 345674-05. So the secret to avoiding doubling, etc. is simply preventing such mismatches. Well, easier said then done, unfortunately!
  • So, a little more background... Each reference id is actually two numbers: the ObjectIndex and the ModIndex. For each mod, the objectindex is unique, i.e., there's only one "1292" objectindex in each mod. The modindex, on the other hand is simply the order of the source mod in the load list. Morrowind.esm loads first, so it has modindex == 1. Tribunal and Bloodmoon if loaded, are usually numbers 2 and 3 respectively. Okay, but how about objects that don't really belong to a particular mod? E.g. an arrow that you bought and dropped on the ground? Simple enough, these objects belong to the savegame itself, and are given the special modindex of 0.
  • That's the basic story. There are a lot of exceptions and complications (e.g., spawnpoints), but that's the basics, so let's go on...

Reasons for Reference Mismatching

  • If you change the mod load order -- either by adding new mods that want to load before your current mod, or by resaving a mod (which changes its modification date, and thus load order), then the ModIndex numbers will be mismatched.
  • Also, if a mod has had new references added, then many of its objectIndexes of existing references will be changed. This is because TESCS completely renumbers all references when the mod is saved.
  • There are quite a few technicalities and qualifications here, but that's the gist of it.

Morrowind Repair Work

  • If the load order changes, Morrowind tries to correct ModIndex numbers. If only the load order has changed (i.e., exactly the same files with the same names are present), then it seems to do a pretty good job of adapting.
  • But if new mods are added or if old mods are given new names, it gets confused and its repair often fails.
  • Note that the effect of this failure may not be immediately apparent, and the effects may oscillate under certain conditions -- e.g., doors may disappear and reappear with each new load change.

Doubling Prevention/Repair

  • Wrye Mash - By maintaining load order, proper mod updating and master updating, Doubling can be prevented. It will also to a more limited degree repair existing doubling. Careful use of Mash's reference removers will fix additional doubling problems.
  • Enchanted Editor - The old school solution to doubling was to use the Enchanted Editor to simply wipe out the contents of cells. Unfortunately this "reset the world" approach often wipes out much more than is desired, and in addition fails to fix many other problems that Mash fixes.
  • In-Game Editing - To a limited degree, objects can also be deleted and reset from within the game.