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
  On 1/21/2016 at 8:15 AM, hishutup said:

From what I've seen the standalone is bearly functional, lots of functionality is missing.

Possibly but boy, the functions that are in there are really good.

  • 0
Posted
  On 1/21/2016 at 8:24 PM, EssArrBee said:

Is the automatic tagging read from the record header or the LOOT masterlist? 

Would also like to know this - but holy cow this is a big step for Smash.  I'm working on a new mod build out and I'm going to be using Smash in place of Bash to see what kind of results I get.

 

My last playthrough was with a conflict resolution patch, which was fine, but lots of manual repetitive TES5Edit work.  Hopefully this can get *most* of those patches right now.

  • 0
Posted
  On 1/21/2016 at 8:42 AM, Mator said:

Hishutup:

"Barely functional"?  I mean, sure, I haven't completed all of the planned features, but this seems borderline insulting.  What the **** are you talking about?

Exactly, its not finished, its alpha, I was letting grant know that many of the planned functions do not work.

I just poked around it the other day with ver 0.1.1 to see what the output would be but I couldnt even change the smash settings.

Thats why I didnt go complaining to you because I knew it would be "Barely functional" since most of the functions are not yet implemented.

  • 0
Posted (edited)
  On 1/21/2016 at 9:25 PM, hishutup said:

Exactly, its not finished, its alpha, I was letting grant know that many of the planned functions do not work.

I just poked around it the other day with ver 0.1.1 to see what the output would be but I couldnt even change the smash settings.

Thats why I didnt go complaining to you because I knew it would be "Barely functional" since most of the functions are not yet implemented.

That doesn't sound right to me.  It's mostly functional, the features that remain are all just extras that improve user experience.  Functionally, Smash is basically complete, asides from a few algorithm fixes.

 

https://github.com/matortheeternal/smash/issues

 

If you look at what's here there's almost nothing about Smash Settings or the Algorithm, the two core functionalities of the program.  If you're having problems you should say something because assuming it's barely functional is incorrect.  If you're finding bugs I want to track them so I can fix them!

 

 

  On 1/21/2016 at 8:24 PM, EssArrBee said:

Is the automatic tagging read from the record header or the LOOT masterlist? 

File header*.  Smash doesn't access the LOOT masterlist, and most likely never will.  I'm not a big fan of LOOT.  Smash will, however, have its own dictionary that it will access for the same purpose.  The main difference being smash's dictionary will be crowdsourced and will allow the recommendation of arbitrary smash settings.  I could make a smash setting specifically for a plugin X, and then submit it to the Smash Backend, and then make a recommendation that users use that setting with plugin X.

 

You might also be interested in this: https://github.com/matortheeternal/smash/issues/86

 

 

  On 1/21/2016 at 8:56 PM, Genius384 said:

Would also like to know this - but holy cow this is a big step for Smash.  I'm working on a new mod build out and I'm going to be using Smash in place of Bash to see what kind of results I get.

 

My last playthrough was with a conflict resolution patch, which was fine, but lots of manual repetitive TES5Edit work.  Hopefully this can get *most* of those patches right now.

It's been that way for awhile.  There are a fair number of people who have been using Smash to reduce manual repetitive TES5Edit patching work by 95%-99%.  The main difference between now and then is you can just use Bash tags, which are familiar.

Edited by Mator
  • 0
Posted
  On 1/21/2016 at 9:36 PM, Mator said:

File header*.  Smash doesn't access the LOOT masterlist, and most likely never will.  I'm not a big fan of LOOT.  Smash will, however, have its own dictionary that it will access for the same purpose.  The main difference being smash's dictionary will be crowdsourced and will allow the recommendation of arbitrary smash settings.  I could make a smash setting specifically for a plugin X, and then submit it to the Smash Backend, and then make a recommendation that users use that setting with plugin X.

 

You might also be interested in this: https://github.com/matortheeternal/smash/issues/86

I get that, but the LOOT masterlist is also a repo for bash tags. You're wanting to make a crowdsourced tag list, but one already exists. Smash could just ignore everything else. 

  • 0
Posted
  On 1/21/2016 at 11:19 PM, EssArrBee said:

I get that, but the LOOT masterlist is also a repo for bash tags. You're wanting to make a crowdsourced tag list, but one already exists. Smash could just ignore everything else. 

I found some of them to be wrong or leave out details, Im all for the separate library + user choice.

 

Mator, is everyone that adds tags to the dictionary going to be equal or are some people going to have raised suggestions like authors and whatnot?

  • 0
Posted

In this Bash Tag Zip there's another zip file inside the settings folder called "Bash Tags". What does this contain? tags for Skyrim or the Oblivion ones you mentioned?

The rest of the tags look identical to those in the 0.2 release so I'm a little confused on their purpose. Those in the included zip that is, not bash tags in general.

  • 0
Posted (edited)
  On 1/21/2016 at 11:19 PM, EssArrBee said:

I get that, but the LOOT masterlist is also a repo for bash tags. You're wanting to make a crowdsourced tag list, but one already exists. Smash could just ignore everything else. 

I know that LOOT provides bash tags, but I'm 99% certain those aren't crowd-sourced, do you know what crowd-sourced means?  It means that anyone can, with minimal effort, make a contribution.  LOOT doesn't have the architecture for this, and if it did there wouldn't be one set of tags per plugin, there'd be different people saying different things.  Smash's dictionary will allow different people to say different things and will allow for far greater flexibility.  I don't really feel the need to argue this more because I already gave a clear justification as to why my approach will be better than what's currently offered through LOOT.

 

I don't like integrating with existing software solutions when I know I can do better with minimal effort.  A backend for the purpose of providing a dictionary of smash setting recommendations (or tags, w/e), has been planned since day 1 of work on the standalone.  I'm not going to change my plans.

 

  On 1/21/2016 at 11:22 PM, hishutup said:

I found some of them to be wrong or leave out details, Im all for the separate library + user choice.

 

Mator, is everyone that adds tags to the dictionary going to be equal or are some people going to have raised suggestions like authors and whatnot?

Everyone will be equal, but authors can of course actually tag their files themselves, so there's no issue there.

 

  On 1/21/2016 at 11:26 PM, GrantSP said:

In this Bash Tag Zip there's another zip file inside the settings folder called "Bash Tags". What does this contain? tags for Skyrim or the Oblivion ones you mentioned?

The rest of the tags look identical to those in the 0.2 release so I'm a little confused on their purpose. Those in the included zip that is, not bash tags in general.

That was an accident (including the zip in the zip).  I made and uploaded this ZIP file before the v0.2 release.  I wasn't necessarily planning to do a new release, but decided I should after uploading the tags.  Those bash tag smash settings are identical to the ones in v0.2.

Edited by Mator
  • 0
Posted

There were some additional CELL tags that aren't included in the WB Advanced Readme. I added the rest here: https://copy.com/exm982P9q0YvLHoT

 

There's probably a few more settings that aren't on that readme since it's Oblivion focused. I know that some of FNV stuff is missing for sure like WeaponMods, Deflst, and Destructible. Pretty sure WeaponMods won't matter for Skyrim. I'll make any that are missing as I find them. It's really not that hard. Smash settings are kinda easy to make and with just about every record being patchable it opens up the possibility for a lot more tags that may be needed and were never added to Wrye Bash.

  • 0
Posted (edited)
  On 1/22/2016 at 2:36 AM, EssArrBee said:

There were some additional CELL tags that aren't included in the WB Advanced Readme. I added the rest here: https://copy.com/exm982P9q0YvLHoT

 

There's probably a few more settings that aren't on that readme since it's Oblivion focused. I know that some of FNV stuff is missing for sure like WeaponMods, Deflst, and Destructible. Pretty sure WeaponMods won't matter for Skyrim. I'll make any that are missing as I find them. It's really not that hard. Smash settings are kinda easy to make and with just about every record being patchable it opens up the possibility for a lot more tags that may be needed and were never added to Wrye Bash.

Awesome, thank you.  :)

 

I believe there is indeed a few that I missed, some even from Oblivion.  I never used Bash tags before, so my understanding of how to carry things forward to Skyrim may not have been perfect.  But, as you yourself has said, it's really easy to make smash settings!  :D

 

  On 1/22/2016 at 2:59 AM, EssArrBee said:

When combining settings, there is sometimes a popup that asks about merging certain record types. https://puu.sh/mEQyY/fdca0d217a.png

 

Does this mean that record type will merge both settings, or only use the setting from which ever is chosen in the dropdown?

The window isn't quite complete, but it appears whenever there are conflicts between the settings you're combining.  The dropdowns gives you N + 1 options per each record type.  The "merge" option will have Smash combine the conflicting settings as best it can.  The other options tell smash to use one or another setting for that record.  If you click on the panel the drop-down box is in and have an option other than merge selected, the tree on the right will populate with what the current active setting for that record will look like.  You can select multiple record panels to populate the tree further.  I don't yet have tree previewing for the merge option figured out yet, but it'll come soon.  :)

 

Overall, I don't really like the look and feel of the window that much right now, but it's OK.  At the very least it does serve a purpose (reminding you of what the smash settings look like and giving you an idea of what the result of combining the settings will be).

Edited by Mator
  • 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.