[WIP] Mator Smash

Post » Tue Jan 20, 2015 2:41 pm

Purpose

Mator Smash is an xEdit Script developed to replace the primary functionality of Wyre Bash - the creation of patch files to combine (or merge) conflicting overrides to overcome Bethesda's http://www.gamesas.com/topic/775917-compatibility-and-you/. Wyre Bash used to provide this functionality in the days of Oblivion through the usage of bash tags, keywords that would be put in the description of the mod that would then tell Wyre Bash what types of records it should try patching. However, the current status is that Wyre Bash only provides this for a handful of record types for Skyrim, and this has been the case for quite a while now. There are several users (most notably Sharlikran) who have been working to update Wyre Bash's codebase to work with Skyrim, but it's been an uphill battle. As of now, it's not certain whether Wyre Bash will ever offer the same functionality it did in the days of Oblivion for Skyrim mods. That's where Mator Smash comes in.

Why is this necessary?

As per Skyrim's http://www.gamesas.com/topic/775917-compatibility-and-you/, any two mods that modify the same record but in different ways will conflict with each other in a way that can't be resolved asides from the creation of a compatibility patch. Because the number of Skyrim mods exceeds 40,000, there is no conceivable way to manually build enough compatibility patches to make every possible load order (or even a small fraction of them) work with each mod operating as intended. Mator Smash automates the most important part of the task of compatibility patch creation - the combining of conflicting edits. This is something that we modders have been needing for a very, very long time.

How does it work?

Warning: technical jargon ahead. Where Wyre Bash has separate procedures for the patching of individual record types, Mator Smash has a few generic procedures for the patching of ALL record types. This means that Mator Smash has, with very little development effort, achieved the capacity to patch more records than Wyre Bash has ever been capable of patching. This is achieved through a recursive traversal method which traverses override record structure, comparing subrecords between a master record, a source override record, and a destination override record. Upon the basis of this comparison, certain subrecords are written to the destination record while others are skipped and others are deleted from it.

Development Status

Mator Smash is currently in beta, v0.8.1. From what I can tell, Mator Smash can currently correctly patch a massive number of different types of records. FAR MORE than Wyre Bash or any other currently available solution. However, there are still some issues and additional features which need to be developed. I would be extremely wary of using a patch generated by Mator Smash in your load order unless you're using an inclusive patch setting and have reviewed the changes in the patch plugin thoroughly.

Testing is greatly appreciated. I need as many people testing and clarifying issues as possible right now, so I can work through the final steps of bringing Mator Smash to a version 1.0 which can be publicly released and used by modders everywhere.

Usage

Installation

1. Download the archive: http://puu.sh/eKT89.zip

2. Extract the Edit Scripts folder into the same folder as your xEdit executable, merging it with the existing Edit Scripts folder.

3. If you want to work with the Skyrim test plugins, you can create a mod from the data folder in your mod manager of choice or merge it with your Skyrim data folder.

How to use the script

1. Load the plugins you want to patch into http://afkmods.iguanadons.net/index.php?/topic/3750-wipz-tes5edit/ (or newer).

2. Right click anywhere in the plugin/record view and choose Apply Script. Choose Mator Smash v0.8 from the dropdown menu and click OK.

3. Wait for initial record processing, then set up the settings you want to use the current script execution.

4. Click Smash!

5. Wait for the script to complete. You can click on the Show Details button to view the log during the Script's execution, but that'll slow down the script's execution a little bit.

What are settings?

Mator Smash does away with Bash Tags and instead implements "Smash Settings". These are settings that tell Mator Smash how to patch a plugin. The setting tells the script what records to process or skip, and what subrecords to process or skip. This is where the words Inclusive and Exclusive come in. An inclusive setting is a setting that tells Mator Smash to only patch certain specific records/subrecords. An exclusive setting is one that tells Mator Smash to patch all records except certain specific records/subrecords. This is considerably more functionality than what was offered in Wyre Bash, which only offered inclusive settings that had to be specified by Bash Tags in a plugin's description.

Global vs. specific settings

In Mator Smash you can have a global setting as well as specific settings. You can think of these as two different filters that are applied consequtively. The global setting is applied to every plugin first, filtering out certain records/subrecords from being patched. Each plugin can then have a user-defined specific setting, which further filters out certain records/subrecords from being patched.

Creating and editing settings

Click on the gear in the lower right hand corner of the script window. This will bring up a form from which you can create, edit, copy, or delete settings. If you plan on making an Exclusive setting you should copy the default setting and add onto it the additional records/subrecords you want to exclude. This will make certain that you don't process any records that could cause issues for the script.

Testing

Included in the download are three Skyrim test ESP plugins. These are plugins for testing how the script handles various override situations, and a great way to investigate issues with the script. If you find an issue with how the script is handling a particular record, the best thing you can do is recreate the issue in the test plugins (without making them require any additional masters), and send your modified test plugins to me. This will allow me to investigate and resolve the error in an extremely timely manner.

Changelog

v0.8.1

- Fixed an issue with deletions in sorted arrays elements.

v0.8

- Added GUI and settings.
- Using rcore for unsorted arrays temporarily (this is correct for some situations, but not for others).
- Cleaned up code, added internal logging, all logs are saved to Edit Scripts\smash\logs\
- Added exception catching in rcore so a single failure won't mess up the entire script's execution.

User avatar
Life long Observer
 
Posts: 3476
Joined: Fri Sep 08, 2006 7:07 pm

Return to V - Skyrim