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 3/29/2017 at 2:25 PM, Palada said:

Sorry for the noob question, but is this supposed to replace Wrye Bash bashed patch? is it already stable enough to do so?

Please read the OP.  :)

  • 0
Posted
  On 3/29/2017 at 7:18 PM, Mator said:

Please read the OP.  :)

Thanks, im getting used to it, but i dont know if i should turn any mod off like after running the bashed patch

  • 0
Posted
  On 3/30/2017 at 4:17 AM, Palada said:

Thanks, im getting used to it, but i dont know if i should turn any mod off like after running the bashed patch

The functionality is there but it isn't working.  Will be working in the next update.  :)

  • 0
Posted
  On 3/30/2017 at 5:54 AM, Mator said:

The functionality is there but it isn't working.  Will be working in the next update.  :)

Awesome, its sooo fast i had goosebumps xD

  • 0
Posted

Not sure if this is the right place:

 

getting these from SSEEdit:

 

[00:59] Background Loader: <Warning: File [4D] SmashedPatch.esp with Group GRUP Cell Children of WhiterunDrunkenHuntsman "The Drunken Huntsman" [CELL:000165B7] is missing an overriden record for WhiterunDrunkenHuntsman "The Drunken Huntsman" [CELL:000165B7]
[00:59] Background Loader: <Warning: File [4D] SmashedPatch.esp with Group GRUP Cell Children of FalkreathDeadMansDrink "Dead Man's Drink" [CELL:0003A184] is missing an overriden record for FalkreathDeadMansDrink "Dead Man's Drink" [CELL:0003A184]

 

Any ideas on whats happening and how to fix? Thanks!

 

Logs: https://www.dropbox.com/s/2scqud9yh493kxy/033117-MS-Logs.7z?dl=0

  • 0
Posted (edited)

Twizzor: It looks like the CELL was removed as an ITM from the smashed patch even though it had children.  That seems odd because the ITM removal code isn't supposed to remove a record if it has children.

 

A quick fix you can do is to just copy that CELL record as override from one of your master files to the Smashed Patch (it doesn't matter which one, all versions of the record in your load order are the same).  That should fix the error.  I'll see if I can recreate the error on my end given the logs you've provided.  If I can recreate it then maybe I can figure out why it's happening and prevent it in the future.

Edited by Mator
  • 0
Posted
  On 3/31/2017 at 4:37 PM, Mator said:

Twizzor: It looks like the CELL was removed as an ITM from the smashed patch even though it had children.  That seems odd because the ITM removal code isn't supposed to remove a record if it has children.

 

A quick fix you can do is to just copy that CELL record as override from one of your master files to the Smashed Patch (it doesn't matter which one, all versions of the record in your load order are the same).  That should fix the error.  I'll see if I can recreate the error on my end given the logs you've provided.  If I can recreate it then maybe I can figure out why it's happening and prevent it in the future.

 

Yep did the trick. Thanks for the quick response and let me know if you need anymore info from me!

  • 0
Posted

I have similar errors as Twizz0r reported, but with Skyrim Classic, Oldrim or whatever we're calling it these days:

 

[02:09] Background Loader: <Warning: File [46] Smash.esp with Group GRUP Cell Children of SolitudeJail01 "Castle Dour Dungeon" [CELL:00056E88] is missing an overriden record for SolitudeJail01 "Castle Dour Dungeon" [CELL:00056E88]

[02:09] Background Loader: <Warning: File [46] Smash.esp with Group GRUP Cell Children of ThalmorEmbassy01 "Thalmor Embassy" [CELL:0007C98B] is missing an overriden record for ThalmorEmbassy01 "Thalmor Embassy" [CELL:0007C98B]
 
Copying the CELL records from USLEEP to the smashed patch seems to have fixed the errors.
 
I'm not quite sure which logs to upload, but if you let me know which ones you need, I'd be happy to upload them.
  • 0
Posted

Good to know Satur9.  I think I have enough information.  I just have to figure out why the current code isn't working properly for certain cells.

  • 0
Posted (edited)

Hey Mator,

 

I'm getting fails:

 

Exception copying record WeatherPineForest [REGN:0002A72D] : Assertion failure (E:\dev\git\smash\lib\xedit\wbImplementation.pas, line 4179)
Exception copying record WeatherMountains [REGN:0004D7FD] : Assertion failure (E:\dev\git\smash\lib\xedit\wbImplementation.pas, line 4179)
Exception copying record WeatherJaphetsFolly [REGN:00069E2B] : Assertion failure (E:\dev\git\smash\lib\xedit\wbImplementation.pas, line 4179)

 

etc...

 

pretty sure my load order is ok (MO2 and LOOT don't complain and i see noting out of whack). No issues with missing masters either.

 

any ideas?

 

Logs/fails/Jsons: https://www.dropbox.com/s/l4s7glr1f50bdck/smash.7z?dl=0

 

Thanks!

Edited by twizz0r
  • 0
Posted
  On 4/4/2017 at 5:14 PM, twizz0r said:

Hey Mator,

 

I'm getting fails:

 

Exception copying record WeatherPineForest [REGN:0002A72D] : Assertion failure (E:\dev\git\smash\lib\xedit\wbImplementation.pas, line 4179)

Exception copying record WeatherMountains [REGN:0004D7FD] : Assertion failure (E:\dev\git\smash\lib\xedit\wbImplementation.pas, line 4179)

Exception copying record WeatherJaphetsFolly [REGN:00069E2B] : Assertion failure (E:\dev\git\smash\lib\xedit\wbImplementation.pas, line 4179)

 

etc...

 

pretty sure my load order is ok (MO2 and LOOT don't complain and i see noting out of whack). No issues with missing masters either.

 

any ideas?

 

Logs/fails/Jsons: https://www.dropbox.com/s/l4s7glr1f50bdck/smash.7z?dl=0

 

Thanks!

 

These errors went away...maybe it  was sth in my load order.

  • 0
Posted

Clarification please.

 

Previously in threads (here or on AKFMods; after going through both today I lost track) you stated that the game and official DLCs should not be selected when creating a "Smash Patch".

 

Currently with v0.4.1, I can't get the "OK" button to enable on the initial "Plugins Selection" window (prior to Smash splash screen) unless I select the game and DLC ESM files for Fallout New Vegas.  Later this seemed to hold true when actually selecting plugins for the patch itself after creating an "Smash.All" setting.

 

Has that advice about ESMs changed?

 

-Dubious-

  • 0
Posted
  On 4/8/2017 at 6:00 AM, dubious said:

Clarification please.

 

Previously in threads (here or on AKFMods; after going through both today I lost track) you stated that the game and official DLCs should not be selected when creating a "Smash Patch".

 

Currently with v0.4.1, I can't get the "OK" button to enable on the initial "Plugins Selection" window (prior to Smash splash screen) unless I select the game and DLC ESM files for Fallout New Vegas.  Later this seemed to hold true when actually selecting plugins for the patch itself after creating an "Smash.All" setting.

 

Has that advice about ESMs changed?

 

-Dubious-

You have to load the master plugins, but you don't need to add them to a smashed patch in the program.  I still don't think it's good practice to patch them, but there are certain very specific circumstances where it may be necessary.  More research is needed.

  • 0
Posted (edited)

Thanks.  I've put together a "quick start" guide for other games in general: primarily focused on building the "Smash.All" settings for new games and supplementing with later information not covered in the tutorial video.  In your "copious spare time" :lol: , do let me know if I got anything wrong.

 

-Dubious-

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