Jump to content
  • 0

[WIP] Mator Smash


Question

Posted

kWdBG.jpg

 

Mator Smash

VIDEO TUTORIAL - For v0.0.7

GamerPoets Video - For v0.4.1

 

 

Mator Smash is now available on Nexus Mods. 

Nexus Mods Mod Page

 

 

As of v1.0.0, Mator Smash has a "Quick Patch" button

As of v0.5.1, Mator Smash will copy records with "errors" in them (such as unresolved/unexpected references)

As of v0.5.0, Mator Smash has new algorithm features and is more stable.

As of v0.4.1, Mator Smash merges redundant plugins properly.

As of v0.4, Mator Smash now produces complete record prototypes

As of v0.3, Mator Smash supports Fallout 4 and Skyrim SE

As of v0.2.2, Mator Smash allows you to modify tags on plugins from within the program.

As of v0.2.1, Mator Smash has Smash Settings for Skyrim for every Bash Tag Wrye Bash offered for Oblivion.

 

Changelog:

 

  Reveal hidden contents

 

 

 

Purpose
Mator Smash is an application built on the xEdit framework developed to replace the primary functionality of Wyre Bash - the creation of patch files to combine (or merge) conflicting overrides to overcome Bethesda's "Rule of One". 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 "Rule of One", 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've 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
I began development of Mator Smash as a standalone application built on top of the xEdit API 10/18/2015. Here's the GitHub repository. Check out the design folder in the repository for various files relating to my design process. I'll be live streaming most of my development on livecoding.tv. I'll be streaming mainly on weekends 9:00AM-9:00PM PST. Because of major code reuse from merge plugins standalone, smash will be entering public beta very soon.

Mator Smash is currently available as a proof of concept script (which is slow and lacking in features/a clean user experience). You can download v0.9.4 of that script here. This script can currently correctly patch a massive number of different types of records. FAR MORE than Wyre Bash or any other currently available solution, and more than any solution that has ever existed for Skyrim or any other game.

 

Implemented Features

  • Dynamic, flexible settings: Smash settings are comprised of a tree which has information on how records/subrecords should be handled. This will allow users to control how a patch is created on a per-subrecord basis. This will make smash relevant regardless of the nature of the mods being patched, or the game the mods come from. Each node (record/subrecord) will have the following data associated with it-
    • Process: Whether or not smash should process this node and perform conflict resolution for it if a conflict is found.
    • Preserve Deletions: If a mod deletes an element inside of this node, that deletion will be preserved in the generated patch.
    • Treat as single entity: If a mod overrides any subrecord in this node, the entire node will be replaced with that mod's version of it.
    • Chaining: Linking allows you to copy multiple side-by-side elements when any one of those elements changes.
    • Override Deletions: Allows a plugin to restore deleted elements.
    • Force Value: Forces values from a particular plugin to be used, and only allows plugins which require this plugin to perform further conflict resolution on affected records.
  • Tags: As of v0.2.1, all Bash tags that were offered with Wrye Bash for Oblivion are now available for Skyrim.  Smash will automatically detect tags and apply smash settings to the plugins that have them, assuming you have smash settings that correspond to the tags.
  • Managed smashed patches: Patches you build will be tracked in the program, so you can quickly and easily rebuild them when your load order changes. You can also have multiple patches for your load order, if you feel that is desirable.
  • Multi-language support: I built a really clean, extensible, and easy to use language system when I developed Merge Plugins Standalone. Smash will use the same language system to support multiple languages out-of-the-box. As a translator, all you have to do is make a text file to create a translation and have users install it in their lang folder. The rest is handled by the program.
  • Fast and easy setting creation: Select some plugins to build a setting to specifically handle the conflicts they are capable of creating in a load order.  Toggle or set flags for multiple nodes at once.  Select similar nodes in a setting tree.  Conflict resolution has never been quite so powerful, flexible, and easy.

 

Planned Features

Smash is now pretty much feature complete.  Further development energy will be spent on porting it to a zEdit application mode, zSmash, which will include a new, streamlined workflow.

  • +1 3

Recommended Posts

  • 0
Posted

If you didn't make custom profiles then I can almost guarantee the patching is incorrect. Smash cannot be left to make decisions on its own, yet.

When its told to use specific records on q good even plugin it works pretty well.

I can probably come up with some unofficial patch settings the next time that I am in the chat with mator. Also, the number of itpo records is going to be high. There is a script included in the beta xedit to remove them.

 

There are a few things that probably should be added soon.

 

Last used settings. When the script is ran it will auto load the previous settings.

 

Change all to x. Changes all the profiles to a given profile.

 

And something in the settings file that will automatically set the plugins settings to a specific setting profile.

  • 0
Posted (edited)

I don't even understand what are you talking about.

What does "to use specific records on q good" mean?

What does "change all to x" mean?

 

If you are supposed to create several custom rules somewhere on individual plugin basis, then the whole thing is probably useless for normal players and they (we) should probably stick with bashed patch for life.

(And after reading the first post a few times I think this is not a program for me. I don't understand the technical stuff about records onebit.)

Edited by Octopuss
  • 0
Posted
  Quote

What does "to use specific records on q good" mean?

I hate when auto correct changes the word to some that doesn't make sense. Its supposed to read "When its told to use specific records on a given plugin it works pretty well.

 

  Quote

What does "change all to x" mean

It was something I brought up with mator and wasnt directed toward you.

More/less what I meant was that a place to change all the settings/profiles to whatever the global is set at.

 

  Quote

If you are supposed to create several custom rules somewhere on individual plugin basis, then the whole thing is probably useless for normal players and they (we) should probably stick with bashed patch for life.

As I said,"Smash cannot be left to make decisions on its own, yet."

The term "yet" is on purpose.

 

I don't think the script is the point where all you have to do is click smash. It took me awhile to figure out some issues.

 

I would definitely let it go through a few versions because there is a lot of know issues. Its at the point of seeing how does the script behaves.

  • 0
Posted (edited)

I see. I thought Mator said a few weeks ago that the program was almost finished.

 

I honestly can't see myself trying to learn some programming or whatever to understand some cryptic chunks of ids those records are. I hope the final version won't be more difficult than creating bashed patch (it took me a few weeks to understand the stuff around tags, and I assume vast majority of regular players can't even understand that).

Edited by Octopuss
  • 0
Posted

Its not programming.

I kinda wish I had some settings to show you.

 

It does handle some scenarios very well but if your going to use it in a play through without going through and fixing what it did incorrectly then its definitely not ready.

 

When I used it he was working on and finishing regex.

The core part of the script is probably near completion and I would agree with that because you tell it exactly which records to patch/forward, it will do it.

 

Speaking of which I probably need to read through the script one of these days.

  • 0
Posted (edited)
  On 4/6/2015 at 5:22 AM, Octopuss said:

I've just tried 0.9.4 on my mediocre load order consisting of 140ish plugins.

Smashing complete.  1569 records smashed.

Completed in 624.559 seconds.

It's not even too slow.

 

The only thing I possibly don't like is how some of the text in drop down menus gets cut off. It says default with uns-something. Not like it's a big deal because I don't even understand what's all this about though :P

Ah, based on user reports I may have not destroyed smashing speed in the latest version.  It's always nice to realize you didn't actually break something you thought you broke.  o_o'

 

 

  On 4/6/2015 at 5:58 AM, hishutup said:

If you didn't make custom profiles then I can almost guarantee the patching is incorrect. Smash cannot be left to make decisions on its own, yet.

When its told to use specific records on q good even plugin it works pretty well.

I can probably come up with some unofficial patch settings the next time that I am in the chat with mator. Also, the number of itpo records is going to be high. There is a script included in the beta xedit to remove them.

 

There are a few things that probably should be added soon.

 

Last used settings. When the script is ran it will auto load the previous settings.

 

Change all to x. Changes all the profiles to a given profile.

 

And something in the settings file that will automatically set the plugins settings to a specific setting profile.

@Hishy: I wouldn't call it incorrect so much as "not 100% correct".  The latest default setting update includes regex and skips just about every record type that we've seen problems on so far.  Also, it seems that several issues that have been posted (by you and others) may be fixed in the current version.

 

Still nothing on the ITPO front and unsorted arrays are just being skipped right now in the default setting

- Last used settings.  Yep, good idea.

- Change all to X.  Yep, planned.

- Automatic settings.  From SNAM - Description is planned.

 

 

  On 4/6/2015 at 6:50 AM, hishutup said:

I don't think the script is the point where all you have to do is click smash. It took me awhile to figure out some issues.

 

I would definitely let it go through a few versions because there is a lot of know issues. Its at the point of seeing how does the script behaves.

I agree with this statement.  You can't just click smash and be done, you need to verify the changes in the smashed patch are to your liking.  You don't need to check every record in each category, but I'd check at least 5 (of varying conflict colors).

 

 

  On 4/6/2015 at 7:20 AM, Octopuss said:

I see. I thought Mator said a few weeks ago that the program was almost finished.

 

I honestly can't see myself trying to learn some programming or whatever to understand some cryptic chunks of ids those records are. I hope the final version won't be more difficult than creating bashed patch (it took me a few weeks to understand the stuff around tags, and I assume vast majority of regular players can't even understand that).

Well it's on 0.9.4, it will be public at 1.0.  That will take probably another 10 iterations to reach (depending on the size of each iteration).  I'd say it's getting closer, but there are still some large issues that need to be tackled.

 

The goal of the final version is for the user to be able to click "Smash" and be done (or something extremely close to this).  I want to get things as close to perfect as possible, and not require users to understand tags.

 

 

  On 4/6/2015 at 7:37 AM, hishutup said:

Its not programming.

I kinda wish I had some settings to show you.

 

It does handle some scenarios very well but if your going to use it in a play through without going through and fixing what it did incorrectly then its definitely not ready.

 

When I used it he was working on and finishing regex.

The core part of the script is probably near completion and I would agree with that because you tell it exactly which records to patch/forward, it will do it.

 

Speaking of which I probably need to read through the script one of these days.

I finished regex (really just support for a single wildcard * character in subrecord settings) in the current version in the OP, v0.9.4.

 

As hishy said, there's no programming necessary for using this script.

Edited by Mator
  • 0
Posted

I don't mind understanding some of the stuff I'm doing, but I believe anything significantly more complex than bash tags is a huge no. Some of the guys in here might have intimate knowledge of TES5Edit and all the voodoo inside plugins, but average player like myself doesn't, and most probably never will.

 

I understand the levelled lists just fine (for my needs I guess), but I don't think I'd ever be able to understand the stuff Smash does. It's apparently for people like Arthmoor, Zilav, Mator etc.

If the final version is supposed to be much more simple than this, I will be most happy and would actually have a chance to use it.

  • 0
Posted (edited)
  On 4/6/2015 at 6:14 PM, Octopuss said:

I don't mind understanding some of the stuff I'm doing, but I believe anything significantly more complex than bash tags is a huge no. Some of the guys in here might have intimate knowledge of TES5Edit and all the voodoo inside plugins, but average player like myself doesn't, and most probably never will.

 

I understand the levelled lists just fine (for my needs I guess), but I don't think I'd ever be able to understand the stuff Smash does. It's apparently for people like Arthmoor, Zilav, Mator etc.

If the final version is supposed to be much more simple than this, I will be most happy and would actually have a chance to use it.

Right now smash is in BETA.

 

That means it's not meant for use by the general public.  It should only be used by people who are willing to test it and who have an intimate knowledge of things like plugins and compatibilty patch creation.  You certainly could use it without this knowledge but there will be a chance of you messing up your game if you do so.  Using tools while they're in beta can give you a preview of what modding may be like in the near future, but isn't something that I would recommend for anyone who's not willing to get their hands dirty, report bugs, etc.

 

This isn't an "official release" topic, this is a topic for a beta of an automated compatibility patching solution.

Edited by Mator
  • 0
Posted

Its no biggie. These are things that exist and were never really discussed in THIS topic.

I dont lurk on the AFK forums very often but I know that Zilav, arthmoor and a few others post exclusively on there and have some good info. I should probably move my discussion over there because of activity.

 

Mator, I think you need a special settings profile for the Official DLC.

There are some minor things that sometimes get overridden with an ITM.

Although, I dont know how necessary it is to forward those special records.

  • +1 1
  • 0
Posted (edited)

So an update on this-

The next version will have massive GUI changes.  I'm going to be rolling out a version with a GUI close to what will be in the final product.  I'll also be making setting creation MUCH more user friendly by implementing a Checkbox Tree. 

Example of Checkbox Tree

 

This update will also include some updates to efficiency, primarily around skipping records/subrecords.  By utilizing either a tree or hashtable in memory I'll be able to determine whether or not to skip a record or subrecord much faster than the current implementation.

 

After this update, my focuses will return to fixing bugs and general efficiency.  Here's a look at the general plan for the future of Mator Smash:

v0.9.5: Massive GUI update, efficiency increase in regards to settings

v0.9.6: Bugfixing, general efficiency increases, and refactoring.  (investigation into extended uses of conflict status)

v0.9.7: Creation of additional features that are deemed necessary to provide easy, flexible, and functional patching to users.

v0.9.8: Bugfixing, refactoring.

v0.9.9: Creation of setting presets for various use cases.  Final bugfixing.

v1.0.0: Public release.

 

This will probably take between 3 and 8 weeks, depending on my free time and on how fast I can achieve my goals.  If anyone has any additional input regarding Mator Smash, sometime in the next few weeks would be a good time to share!

 

 

-Mator

Edited by Mator
  • +1 1
  • 0
Posted

ok so, I redid the lighting mod patches for WAO in a few hours thanks to this script but there was some work that needed to be done to get it to work EXACTLY how I wanted it.

After I patched them I ran the ITPO script to remove any Identically To Previous Overrides that were present which there are always a lot. After all that I'd give it a quick look over and then send to Umi to copy the groups and do some final editing.

 

NOTE: The regex is going to go away and the GUI is being overhauled to be much simpler than what I currently have set up for.

here is my setup but generally without the [18] WAO-NL.esp

 

1Fj7uj6

 

The delimiter for Smash is "#13" for some reason. I'll have mator switch to ";" or "," but just remember that separator for each entry. "*" is also used for regex which in this case mean all strings that start with anything before the *. 

 

WAO Unofficial Patches

WAO SoS

Lighting Mods

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines, Privacy Policy, and Terms of Use.