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 (edited)
  On 1/19/2015 at 10:16 PM, hishutup said:

I'll give this a try with a couple installs that I have laying around.

Cool!  Looking forward to hearing from you on how that goes!

 

 

  On 1/19/2015 at 10:21 PM, phazer11 said:

Nice to see you found the xEdit forum Mator. Glad to see you're still working on Smash.

Yep, fireundubh told me to use it, so I'm using it.  :)

Smash kind of went to the back burner so I could work on Merge Plugins v1.8, but that's basically done now so Smash is now the center of my attention again!

Edited by Mator
  • 0
Posted
  On 1/19/2015 at 11:49 PM, Kelmych said:

I'll do some testing with both Skyrim and Fallout 3. I've been primarily working with FO3 lately, so I'll likely concentrate on using it there.

I haven't done any testing with Fallout 3 because I don't have it, so I can't provide any guarantees for functionality.  You may have to adjust record/subrecord exclusion settings (probably not, but maybe).

  • 0
Posted

Hi & welcome here at the STEP forums, Mator!

 

As you can probably guess, I've been super busy in RL lately - not much time for testing, but I promise I'll try my best when I can squeeze it in.

 

I've also updated the Nexus Forums Mator Smash thread OP, including your rapid pace of updates since 0.8 earlier today!

  • 0
Posted
  On 1/20/2015 at 3:46 AM, keithinhanoi said:

Hi & welcome here at the STEP forums, Mator!

 

As you can probably guess, I've been super busy in RL lately - not much time for testing, but I promise I'll try my best when I can squeeze it in.

 

I've also updated the Nexus Forums Mator Smash thread OP, including your rapid pace of updates since 0.8 earlier today!

Thanks keith! :D

  • 0
Posted

OK, right when I started it up and before I started patching I saw that you have very flexible system. That is cool and all but for some plugins, I know exactly what records I want included/forwarded but I dont know what the syntax is. Maybe have a system where one can see a tree of all the records so I can check/tick exactly what records I want.

 

[spoiler=Incomplete example because xEdit is tied up]

For example, Aceeqs, Fantasy Soundtrack Project contains some nice music but there is an optional file which is "Unique Towns and Locations" the it edits ___ and ___ so I only care about the ____ and ____ sub-records respectively and all the other don't matter

 

 

 

Do you understand what I'm saying because it is hard to explain?

 

 


 

So I decided to shove the entire STEP Core and Extended as well as the WAO part in the Weather and Lighting pack so that I can fully observe what Smash does and doesn't. It might look quick but geez is takes a long time. Could it be a MO thing? Would it be possible to do a caching system for some of the plugins that are NEVER edited.

 

Well, this looks like its going to take awhile because I'm almost and hour in... 

 


 

I'm at the hour and 15min mark and the text in the log looks like it is stuttering but it may the weather records but it doesnt seem like it.

I am now regretting shoving the entire LO down Smash's throat. :/

  • 0
Posted
  On 1/21/2015 at 2:48 AM, hishutup said:

OK, right when I started it up and before I started patching I saw that you have very flexible system. That is cool and all but for some plugins, I know exactly what records I want included/forwarded but I dont know what the syntax is. Maybe have a system where one can see a tree of all the records so I can check/tick exactly what records I want.

 

[spoiler=Incomplete example because xEdit is tied up]

For example, Aceeqs, Fantasy Soundtrack Project contains some nice music but there is an optional file which is "Unique Towns and Locations" the it edits ___ and ___ so I only care about the ____ and ____ sub-records respectively and all the other don't matter

 

 

 

Do you understand what I'm saying because it is hard to explain?

 

 


 

So I decided to shove the entire STEP Core and Extended as well as the WAO part in the Weather and Lighting pack so that I can fully observe what Smash does and doesn't. It might look quick but geez is takes a long time. Could it be a MO thing? Would it be possible to do a caching system for some of the plugins that are NEVER edited.

 

Well, this looks like its going to take awhile because I'm almost and hour in... 

 


 

I'm at the hour and 15min mark and the text in the log looks like it is stuttering but it may the weather records but it doesnt seem like it.

I am now regretting shoving the entire LO down Smash's throat. :/

 

If you're running on your entire load order please do the following:

 

Disable all debug booleans in the constants section of the script (it's at the very top)

Don't click Show Details while the script is running

 

Doing those two should cut down on execution MASSIVELY.  Like it should reduce it by 70% or more.

  • 0
Posted
  On 1/21/2015 at 3:40 AM, Mator said:

If you're running on your entire load order please do the following:

 

Disable all debug booleans in the constants section of the script (it's at the very top)

Don't click Show Details while the script is running

 

Doing those two should cut down on execution MASSIVELY.  Like it should reduce it by 70% or more.

That really sped things up :/

 


 

Ok, it finished and it does a lot incorrectly, actually a majority BUT I  did leave everything default and just jumped in with out really doing anything other than hitting smash.

Maybe it would be best to skip the official plugins, I'll give that a try. Cant skip em'.

I'll try some really specific things then

 

As a side thing, would it be possible to add like a random plugin naming thing because that wouldn't cause trouble because it is at the end of an LO plus it would be hilarious.

My patch is called Hulk Smash because why not.

 


 

I tried it with mods that edit pretty much the same groups. Yet again, I left everything on default and went with it

Here is the hulk smash plugin. If you want me to patch the LO so you compare then I can do that.

Here is the LO smashed

PuRXEQF.png

 

There are more than a few things wrong. Here are some images. 

22iiFjg.png

I9gfFUo.png

JhDg6Xo.png

rC2e3Yc.png

 

 

This one has a few thing correct but others that are wrong.

GNAM and Static Attenuation are fine but everything else is incorrect.

J5EOjzs.png

 

 

Here are some records that have no need to be patched...

o3IrQ7w.png

Ku9269m.png

KDvufsE.png

  • 0
Posted

None of those issues are ones that I'm not aware of.  This is very WIP right now, there's a lot of work that still needs to be done to get things working correctly.

  • 0
Posted
  On 1/21/2015 at 5:58 AM, hishutup said:

I understand its a WIP...

I guess I should ask, what are you looking for in having other people test it?

Exactly what you did, reporting issues.  I'm also looking for ideas on features and people's perspectives.  The thing is I already got a lot of feedback from a lot of people (on the thread on Nexus Mods and the thread on AFK Mods), so right now I'm in the stage of "I've got all this feedback, know about all these issues, and now I need to fix things/develop some stuff."

 

I guess the issue here is I need an issue tracker and don't have one, so I'm getting multiple reports of the same issues from different users.

  • 0
Posted
  On 1/21/2015 at 4:13 PM, hishutup said:

I guess I will wait until those big issues are taken care of because they make looking for other issues difficult.

Yeah, I gotta do work! :D

  • 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.