Jump to content


Photo

[WIP] Mator Smash



  • Please log in to reply
245 replies to this topic

#1 Mator

Mator

    Thane

  • Mod Authors
  • PipPipPipPipPipPip
  • 446 posts

Posted 19 January 2015 - 05:12 PM

kWdBG.jpg

 

Mator Smash

VIDEO TUTORIAL - For v0.0.7

LIVE STREAM OFFLINE 10/25/2015, 3:22PM

 

 

 

Alpha

Mator Smash Standalone Alpha is available:

Download v0.4 here

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:

 

 

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.
    • Ignore deletions: If a mod deletes a subrecord inside of this node, that deletion will not 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.
  • 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

  • Plugin setting recommendations: Used a particular smash setting with a particular plugin and got a good result? Recommend other users to use the same setting with that plugin! Recommendations will be built into a dictionary file that will be shared between all users.
  • Shared smash settings: Mod author, or hardcore patcher? Share your smash settings with other users so they can benefit from your research and hard work! Settings will be distributed from a backend to users who request them. Submitted smash settings will be reviewed by other patchers prior to being published to users.

Edited by Mator, 12 February 2017 - 07:18 PM.

  • 2

#2 hishutup

hishutup

    Daedric Prince

  • Super Moderators
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2,563 posts

Posted 19 January 2015 - 05:16 PM

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



#3 phazer11

phazer11

    Chatroom Supervisor

  • Super Moderators
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3,250 posts

Posted 19 January 2015 - 05:21 PM

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



#4 Mator

Mator

    Thane

  • Mod Authors
  • PipPipPipPipPipPip
  • 446 posts

Posted 19 January 2015 - 06:23 PM

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!

 

 

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, 19 January 2015 - 06:23 PM.

  • 0

#5 Kelmych

Kelmych

    Dragon King

  • Super Moderators
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3,668 posts

Posted 19 January 2015 - 06:49 PM

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.

#6 Mator

Mator

    Thane

  • Mod Authors
  • PipPipPipPipPipPip
  • 446 posts

Posted 19 January 2015 - 07:10 PM

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

#7 keithinhanoi

keithinhanoi

    Jarl

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 569 posts

Posted 19 January 2015 - 10:46 PM

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

#8 Mator

Mator

    Thane

  • Mod Authors
  • PipPipPipPipPipPip
  • 446 posts

Posted 19 January 2015 - 10:52 PM

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

#9 hishutup

hishutup

    Daedric Prince

  • Super Moderators
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2,563 posts

Posted 20 January 2015 - 09:48 PM

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.

 

Incomplete example because xEdit is tied up

 

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. :/



#10 Mator

Mator

    Thane

  • Mod Authors
  • PipPipPipPipPipPip
  • 446 posts

Posted 20 January 2015 - 10:40 PM

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.

 

Incomplete example because xEdit is tied up

 

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

#11 hishutup

hishutup

    Daedric Prince

  • Super Moderators
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2,563 posts

Posted 20 January 2015 - 11:42 PM

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



#12 Mator

Mator

    Thane

  • Mod Authors
  • PipPipPipPipPipPip
  • 446 posts

Posted 21 January 2015 - 12:33 AM

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

#13 hishutup

hishutup

    Daedric Prince

  • Super Moderators
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2,563 posts

Posted 21 January 2015 - 12:58 AM

I understand its a WIP...

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



#14 Mator

Mator

    Thane

  • Mod Authors
  • PipPipPipPipPipPip
  • 446 posts

Posted 21 January 2015 - 10:57 AM

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

#15 hishutup

hishutup

    Daedric Prince

  • Super Moderators
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2,563 posts

Posted 21 January 2015 - 11:13 AM

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


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users