De-Isolation Tutorial

Revision as of 16:21, 1 March 2007 by imported>Dev akm (formatting)

by dev_akm

DRAFT

An Advanced Modding Tutorial for TES4Gecko and Wrye Bash

Normally, when people make changes to a plugin, they just open it up in the CS and do it. But what if you want to avoid having your changes wiped out by the next release of that plugin? Here is a simple scenario where it makes a lot of sense to take advantage of mod "de-isolation" to preserve your changes in a separate plugin.

Consider this question:

I'm thinking of changing Oscuro's Oblivion Overhaul to add the War Scythes (which were left out at the last minute before the release of OOO 1.3) to some of the leveled lists, but I also know that a new version of OOO is coming out soon. Is there any conceivable way to have the changes transfer over to the new OOO (1.32) when it gets released? Some creative way of merging the old and the new or something? I don't really want to go and take the time to make the changes if I'll just end up having to do them again when the new one comes out.

Yes, there is a way. It's called de-isolation. This will keep your changes in a separate plugin so it won't be lost when OOO 1.32 comes out.

Start by making a copy of OOO, called something like OOO_scythes.esp. As long as you're just altering things that already exist in OOO, make all your changes there. If you need to add anything new to it, then hold back on making those changes until later in the process.

Once you have the changes done, make a backup copy of your changed plugin just in case something goes wrong, then use TES4Gecko to Ignore everything except the changed entries (you can use TES4Gecko compare to help here). You can quickly Ignore large blocks of stuff by simply doing group-level ignores on record groups you know you don't need.

When you're done, save the plugin, and you'll see all the Ignored entries vanish.

Next, fire up Wrye Bash, right-click OOO_scythes.esp, select Add Master from the context menu, and pick any other ESM file you can find (since OOO is currently an ESP only). After doing that, re-select your mod, look in the dependencies window (small pane in lower-right of screen), find the master record you need to change, right-click it, select Change To, and go find Oscuro's_Oblivion_Overhaul.esp

This will make your OOO_scythes.esp dependent on the main OOO ESP and will make your changed scythe records override the normal ones.

Alternately, you can accomplish the last part in a different way if it makes more sense to you. In Wrye Bash, right-click the Oscuro's_Oblivion_Overhaul.esp, select Copy To ESM, and then use that new ESM for the Add Master step, then right-click your mod again and select ESPify Masters.

When you play, you'll of course want to put your OOO_scythes.esp after OOO in the load order, but that's really all there is to doing it.

This way a single OOO_scythes.esp can, for example, be used with either the FULL or LITE versions of the Oscuro's_Oblivion_Overhaul.esp, and it will almost certainly be completely compatible with future versions of OOO -- only minor adjustments would be needed if future versions of OOO make new changes to those specific items (or the leveled lists you added them to), but at least you don't have to worry about changes anywhere else in OOO.

Now, if you want to add some new content as well, and you want to make sure it doesn't have a problem when the next version of OOO comes out, then you'll need to take a few more steps after this.

The first thing to do, starting from where we left off, is to use TES4Gecko to split Oscuro's_Oblivion_Overhaul.esp into an ESM/ESP pair. This will create two new files, called OUTPUT_Oscuro's_Oblivion_Overhaul.esm and OUTPUT_Oscuro's_Oblivion_Overhaul.esp. The ESM created this way is clean and can safely be used in the CS since it only contains the new records added by OOO.

First, rename the OUTPUT_Oscuro's_Oblivion_Overhaul.esm to Oscuro's_Oblivion_Overhaul.esm. Next, in Wrye Bash, use ESMify Masters to make your plugin dependent on Oscuro's_Oblivion_Overhaul.esm instead of the ESP. Now, launch the CS and select your OOO_scythes.esp as the active file. You'll get a few error warnings about missing targets, but it's safe to click "Yes to all" when see get this. It won't cause any problems.

Proceed to add whatever new content you want, saving changes as you go. Once you're done, quit from the CS and switch back to Wrye Bash. Once again, use the ESPify Masters on your plugin to redirect its dependency to Oscuro's_Oblivion_Overhaul.esp and you're done!

Now, if you know you're going to be adding some new stuff even before you start, then you can simplify the process a bit by using TES4Gecko to split OOO before making any changes. By using the OUTPUT_Oscuro's_Oblivion_Overhaul.esp as your active file in the CS, you can make all the changes and additions you want right there (you should probably rename it to OOO_scythes.esp first, though, just to be safe). Once you're done, you can then use the same process detailed above to Ignore the records you don't need. Since it will already be dependent on Oscuro's_Oblivion_Overhaul.esm, you don't need to do the Add Master step.

You will still need to run the ESPify Masters command to redirect your dependency to Oscuro's_Oblivion_Overhaul.esp after you're done working in the CS. If you discover that you need to make a few more changes after testing in-game, don't forget to use the ESMify Masters command before opening your plugin back up in the CS.

One other possibility worth considering if you're only making changes and not adding anything new. Once you've finished making all your changes and chopping the plugin down to only include the records you changed, you can make it into a patch file. To do this, all you have to do is change the file extension to .ESU instead of .ESP. This allows TES4Gecko to recognize the file as a patch and you can use the Apply Patch function to add your changes back into OOO after the update is released.