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

I have seen Mator's general plan but does anyone know if he has a timeline published somewhere to tell us when to inform him about bugs/curiosities? Usually, there is a deadline for any input prior to the release of the next version, so .. any idea?

  • 0
Posted
  On 6/1/2015 at 8:56 PM, thommaal said:

I have seen Mator's general plan but does anyone know if he has a timeline published somewhere to tell us when to inform him about bugs/curiosities? Usually, there is a deadline for any input prior to the release of the next version, so .. any idea?

All development has been pushed back.  Focus has shifted to developing merge plugins as a standalone application using the TES5Edit API which will serve as a precursor/sample codebase for developing Mator Smash as a standalone application.

  • 0
Posted

So what's the new ETA then? I thought Smash would be significantly bigger deal then special program to merge plugins, considering the current version works just fine.

  • 0
Posted

The application is pretty neat and does significantly more than the script.

To give you an idea of the timeline, its near the end of pre alpha.

 

Its up to mator on what info he is willing to release.

  • 0
Posted
  On 6/2/2015 at 7:35 AM, hishutup said:

Its up to mator on what info he is willing to release.

Of course; and just in case someone got the wrong idea: My question was not meant to push Mator but to find out when it's time to give what kind of feedback and when it's time to let him work in peace.

 

Looks like it's time for the latter. When a focus shifts, feedback on previous plans is more likely pointless and the time he spends to answer it a time-consuming distraction.

 

 

  On 6/2/2015 at 3:30 AM, Mator said:

All development has been pushed back.  Focus has shifted to developing merge plugins as a standalone application using the TES5Edit API which will serve as a precursor/sample codebase for developing Mator Smash as a standalone application.

Thanks for the update, Mator. Smash is already quite the useful tool.

 

  • 0
Posted (edited)
  On 6/2/2015 at 7:30 AM, Octopuss said:

So what's the new ETA then? I thought Smash would be significantly bigger deal then special program to merge plugins, considering the current version works just fine.

 

The ETA is largely dependent on the amount of time I can put in now that I have a full-time summer job.  It's not a situation I've been in before, so I can't really say much with certainty.

Smash is a big deal, but prior to developing something new that I don't fully understand, I decided to make something that I already understand.  The transition from script to standalone application is not trivial.  Attempting to do Mator Smash as a standalone application right from the get-go would be a far more inefficient way of doing things than the way I'm doing them now.  Code reuse will be high, so in a way I am working on Mator Smash right now, just not directly.

 

Also, the Merge Plugins standalone application is kind of a big deal.

 

  On 6/2/2015 at 8:54 AM, thommaal said:
Thanks for the update, Mator. Smash is already quite the useful tool.

 

I'm doing my best to get things done as fast and efficiently as possible.  Please bear with me - I'm a single programmer trying to redefine the way we all play and mod the bethesda games.  That's no easy feat!

 

 

Regards,

-Mator

Edited by Mator
  • +1 2
  • 0
Posted

Error in unit 'smash' on line 895 : Undeclared Identifier 'ebi'

This is the error I got while trying Smash. I am using xEdit 3.1 NOT 3.1.1 As mentioned in my thread in the xEdit forum, I am currently unable to use the newest xEdit. Would this be the reason for this error? Forgive my ignorance, I am only user aware of xEdit and haven't any real knowledge of the programs rhymes or reasons.

  • 0
Posted
  On 6/20/2015 at 9:12 PM, Descivii said:

Error in unit 'smash' on line 895 : Undeclared Identifier 'ebi'

 

This is the error I got while trying Smash. I am using xEdit 3.1 NOT 3.1.1 As mentioned in my thread in the xEdit forum, I am currently unable to use the newest xEdit. Would this be the reason for this error? Forgive my ignorance, I am only user aware of xEdit and haven't any real knowledge of the programs rhymes or reasons.

 

You didn't install the version of mteFunctions included with the download for Mator Smash or you replaced it with a different version.  Redownload the archive from the OP and make sure to replace your mteFunctions.pas file with the one from the archive (in your Edit Scripts folder).

  • 0
Posted (edited)

Hi,

 

I've been using and know (able to use, ...) Tes5Merged Patch as a pre Bashed Patch plugin (deleted Leveled Items, Cleaned Masters) + Wrye Bash ReBuild Bashed patch, ... so the well known method. (but Tes5Merged Patch still a little bit new for me). But this whole process took me just some minutes and after makeing other SkyProc plugins...

 

I have heard about Mator Smash before, but didn't read topics and more infos about it.

 

1.) Is it good to load my whole plugin list via Tes5Edit and run Mator Smash script? Enabled every plugins, leave everything by default in Mator settings, and creating the Mator Smash patch file?

 

(I've done it, but to be honest I am do not really understand that tool yet, as how I know Tes5Edit and Wrye Bash)

 

TL2hi8N.jpg

 

9QrH0Qa.jpg

 

BvtUTQ6.jpg

 

mEdFE19.jpg

 

O5Ogizf.jpg

 

I am not sure at all, wheter it is okay or not like that way? Or this is a little bit more complicated than how I think about that? :)

 

If not, so it is good, it is how should we use I have some other question:

 

2.) Still needed, good, better to make a Tes5Merged Patch before Mator ones? Or this is absolutely unnecessary?

 

3.) I guess in this case, I can disable any plugins which was created after Bashed Patch? (ASIS; Dual Sheat Redux)

 

4.) After the patch is created I can run those Patches the same as before?

 

5.) Does it matter what title I give this Mator patch .esp? (Mator; MatorSmash, etc...)

 

Sry, as I said I do not really know that tool yet!

I'm sure it is must be very useful, and more clever than Wrye Bash and we will use this tool later, ... but do not really found as much infos about it, then the other ones.

 

I use STEP Extended + REGS + SR-LE. I know I guess tools which are mentioned and required by STEP and Skyrim Legendary. At this moment I don't really know why should we use that tool instead of Wrye Bash, but I am sure it has sense, etc, etc, ...

 

Thank you for any support! And sorry! :unworthy:

Edited by kranazoli
  • 0
Posted (edited)
  On 9/17/2015 at 9:57 AM, kranazoli said:

1.) Is it good to load my whole plugin list via Tes5Edit and run Mator Smash script? Enabled every plugins, leave everything by default in Mator settings, and creating the Mator Smash patch file?

 

(I've done it, but to be honest I am do not really understand that tool yet, as how I know Tes5Edit and Wrye Bash)

 

I am not sure at all, wheter it is okay or not like that way? Or this is a little bit more complicated than how I think about that? :)

 

If not, so it is good, it is how should we use I have some other question:

Depends on who you talk to. I think it's fine, but hishutup thinks it's a bad idea because you'll get records patching that you don't want to be patching. Smash is blind - if it sees a conflict in a record/subrecord that is not excluded, it will resolve it.

 

  On 9/17/2015 at 9:57 AM, kranazoli said:

2.) Still needed, good, better to make a Tes5Merged Patch before Mator ones? Or this is absolutely unnecessary?

Unnecessary and harmful because the TES5Merged Patch makes mistakes that smash doesn't. Same with a bashed patch.

 

  On 9/17/2015 at 9:57 AM, kranazoli said:

3.) I guess in this case, I can disable any plugins which was created after Bashed Patch? (ASIS; Dual Sheat Redux)

You should use smash as you'd use a Bashed patch, so replacing the bashed patch. You should use neither a Bashed patch nor a TES5Edit Merged patch.

 

  On 9/17/2015 at 9:57 AM, kranazoli said:

4.) After the patch is created I can run those Patches the same as before?

Yes. Treat a smashed patch the same way you'd treat a bashed patch.

 

  On 9/17/2015 at 9:57 AM, kranazoli said:

5.) Does it matter what title I give this Mator patch .esp? (Mator; MatorSmash, etc...)

No, it doesn't matter at all. The script recognizes the Mator Smash ESP by its author field, so the filename is irrelevant.

 

  On 9/17/2015 at 9:57 AM, kranazoli said:

Sry, as I said I do not really know that tool yet!

I'm sure it is must be very useful, and more clever than Wrye Bash and we will use this tool later, ... but do not really found as much infos about it, then the other ones.

 

I use STEP Extended + REGS + SR-LE. I know I guess tools which are mentioned and required by STEP and Skyrim Legendary. At this moment I don't really know why should we use that tool instead of Wrye Bash, but I am sure it has sense, etc, etc, ...

 

Thank you for any support! And sorry! :unworthy:

Development of Smash has been put on hold until a standalone application for it can be made. The speed of development when using smash as a script (interpretted code) was too slow to iterate effectively, so I decided to drop it until I had completed Merge Plugins Standalone so I could then make a standalone application for it similar to Merge Plugins Standalone. Mator Smash Standalone will be up to 360x as fast as the script (based on benchmark comparison of a similar recursive traversal method for GetChildRecords). If it ends up being as fast as I expect, it should complete in around 10 seconds regardless of the size of your load order.

 

The script can be used for certain things, and you can talk to hishutup to get his thoughts on this. He uses STEP as well, so he should be able to provide you with some very relevant thoughts and advice on using smash with your load order.

Edited by Mator
  • 0
Posted (edited)

Hi,

 

"Depends on who you talk to. I think it's fine, but hishutup thinks it's a bad idea because you'll get records patching that you don't want to be patching.

Smash is blind - if it sees a conflict in a record/subrecord that is not excluded, it will resolve it."

 

First and foremost, thank you, your read my "stupid" and long questions and also thank you for the answer.

Be sure, I am not a half God Skyrim Guru like you guys. :)

 

So far, os could I could understand what is the issue, problem with Tes5Edit Merged Patch (as a pre Wrye Bash patch) and Wrye Bash.

 

But for me, using Wrye Bash at this time, with its lots guide, every guide use that tool yet (STEP; Skyrim Legendary) plus extra YT video guides and so on, made me that I can use WB easily, can manage my mods, etc... And I really love that I almost do not have to do anything. Just run it, read the STEP or Legendary WB guide, some click and my Wrye Bash patch has done, or rebuild again within 1 minutes, without I should care everything. I mean that, so called some kind of user friendly, automated, ... Easy to use.

 

As easy to use Mator Smash just how I tried to describe. Load my whole plugin list, click apply script, waiting, patching done, and everyone is happy.

 

But if it is require more manual procedure, so I must say I would need more user guide + videos to understand how should I properly use Mator Smash tool and forget Wrye Bash. Change to Mator from Wrye Bash.

 

A little bit polishing my knowledge:

:)

 

Is that order fine? (if I choose Mator Smash)

 

0.) Deactivate my Tes5Merged patch and Bashed Patch

1.) Deactivate any plugins which were created after Bashed Patch, every single SkyProc plugin

2.) Use Mator Smash, how I can handle at this moment yet and creating patch file

3.) Activate Mator Smash patch file and continue to finish my other patches

 

And use that Mator Smash patch instead of Wrye Bash patch.

 

If it is more or less okay, there's immediately one thing I miss:

 

- Wrye Bash merge plugin feature.

 

If I use Mator ones as I described above, I didn't notice Mator Smash merged unnecessary plugins and save my load order. Reducing my esp files, ...

 

In conclusion, what do you recommend for me:

 

1.) I still continue using Wrye Bash how I've been doing it for a long time; or

2.) Change Mator Smash

 

Ps: I guess, from what I wrote more or less you know about my Skyrim modding knowledge.

The most important thing for me, stability and reliability.

 

Edit: How long the Mator Smash process take does not matter for me. It is nothing compare to DynDOLOD. ;)

 

Thank you!

Edited by kranazoli
  • 0
Posted (edited)
  On 9/17/2015 at 4:41 PM, kranazoli said:

First and foremost, thank you, your read my "stupid" and long questions and also thank you for the answer.

Be sure, I am not a half God Skyrim Guru like you guys. :)

No question is stupid!  :)

I'm nowhere near as good as people make me out to be.  I just work really hard and pretty much never play the game itself.  (which seems fairly common in modding) :P

 

  On 9/17/2015 at 4:41 PM, kranazoli said:

As easy to use Mator Smash just how I tried to describe. Load my whole plugin list, click apply script, waiting, patching done, and everyone is happy.

 

But if it is require more manual procedure, so I must say I would need more user guide + videos to understand how should I properly use Mator Smash tool and forget Wrye Bash. Change to Mator from Wrye Bash.

Yeah, it's not really there yet for "one-click and done" to be a valid procedure to follow.  You could do it, but it might not resolve things the way you want it to.  It's a beta project for a reason.  ;)

 

I'd recommend experimenting with it, but not using it on a full large load order with a single button click like Wrye Bash.  It's not quite polished enough for that yet.

 

  On 9/17/2015 at 4:41 PM, kranazoli said:

0.) Deactivate my Tes5Merged patch and Bashed Patch

1.) Deactivate any plugins which were created after Bashed Patch, every single SkyProc plugin

2.) Use Mator Smash, how I can handle at this moment yet and creating patch file

3.) Activate Mator Smash patch file and continue to finish my other patches

 

And use that Mator Smash patch instead of Wrye Bash patch.

Sounds fine by me.  Again, results may vary, it's beta.  ;)

 

  On 9/17/2015 at 4:41 PM, kranazoli said:

- Wrye Bash merge plugin feature.

 

If I use Mator ones as I described above, I didn't notice Mator Smash merged unnecessary plugins and save my load order. Reducing my esp files, ...

 

In conclusion, what do you recommend for me:

 

1.) I still continue using Wrye Bash how I've been doing it for a long time; or

2.) Change Mator Smash

In terms of merging plugins, I'd recommend using my Merge Plugins script (or Merge Plugins Standalone, which is in alpha) for that.  Smash may eliminate unnecessary plugins at some point in time in the near future, but it doesn't do that yet.

 

  On 9/17/2015 at 4:41 PM, kranazoli said:

Ps: I guess, from what I wrote more or less you know about my Skyrim modding knowledge.

The most important thing for me, stability and reliability.

 

Edit: How long the Mator Smash process take does not matter for me. It is nothing compare to DynDOLOD. ;)

 

Thank you!

If stability and reliability are your top priorities, I wouldn't recommend using smash in its current state.  Just be a bit patient, it'll be in standalone application form before you know it!  :)

 

 

  On 9/17/2015 at 6:42 PM, Octopuss said:

There's still no rough estimate when the standalone version could be available?

You want a rough estimate?  Ok, I'll give you a very rough timeline of some events:

 

Merge Plugins Standalone Public Beta - September 22

MXPF Release - October 2

Merge Plugins Standalone Release - October 9

mteFunctions refactor - October 9

Mator Smash Standalone Alpha - October 16

Mator Smash Standalone Public Beta - November 6

FO4Edit Work Begins - November 10

Mator Smash Standalone Release - November 20

Edited by Mator
  • 0
Posted

As rough estimates go, they're pretty specific.  ::D:

 

I'm always looking forward to what you bring to the gaming table, some of the best tools around are because of your work.

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