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

Sorry for the triple post; quick followup. I downloaded the newest version of AOS, and also copied the two AOS - Ordinator records (which are the exact two formIDs that I mentioned in my previous post) as overrides into a new AOS- Ordinator Patch Patch, in which I deleted the keywords and KSIZ entries. When I ran Merge Plugins Standalone, it gave me a merged plugin with KSIZ = 0, and this plugin crashed at main menu just like smashed patch did. Figured I'd let you know that it's an issue in Merge Plugins as well.

 

Sorry for probing the extreme edge cases :p

  • 0
Posted (edited)

Sorry for the quadruple post; quick followup. I investigated the other two plugins I was having problems smashing (Animated Weapon Enchants and Undeath). In both cases I tracked the CTDs to a single MGEF with KSIZ=0 after smashing:

 

AWE: 0005B450 (https://imgur.com/QjKgmDU)

 

Undeath: 0200C601 (https://imgur.com/kd1Cnuq)

 

In both cases deleting the KSIZ entry entirely from the smashed patch resulted in elimination of the CTD on main menu. Figured I'd post in case someone has a similar issue and reaches this thread.

Edited by Piranhaha
  • 0
Posted

Sorry, one last thing (I hate that there's a time limit to edit posts on this forum). I tried copying the records mentioned in my previous post (the MGEFs from AWE and Undeath) into a new override esp and deleted the KSIZ field in the new plugin. The idea was that I still need to tweak out some final (non-CTD-related) kinks in my smash rules and I didn't want to have to delete the KSIZs every time I rebuild the patch. However, the game still gave me a CTD even with the override patch enabled. In contrast, deleting the same KSIZs from the smashed patch itself results in a successfully loaded main menu and save file. So it seems like even if these records get overwritten by a correctly formatted record with higher priority, the game engine still reads the lower priority records as it loads and hiccups when it sees KSIZ=0. Looks like I'll have to delete the KSIZ from the smash every time.

 

I think this concludes my debugging :p

  • 0
Posted

KSIZ is the number of keywords.

If it is missing, the keywords are not loaded by the game afaik.

If it mismatches the real number of keywords, the game crashes.

  • 0
Posted
  On 1/21/2018 at 7:05 AM, zilav said:

KSIZ is the number of keywords.

If it is missing, the keywords are not loaded by the game afaik.

If it mismatches the real number of keywords, the game crashes.

Sure. The gist of all of my posts though is that when Mator Smash generates a smashed patch in which keyword deletions are preserved (e.g. KSIZ goes from n to 0), it sets the KSIZ as 0 instead of missing. KSIZ = 0 is apparently also an invalid condition because the generated plugin causes the game to CTD unless this KSIZ record is manually removed.

  • 0
Posted (edited)

Quick question; I can't figure out what I'm doing wrong here. 

 

I have a "misc tweaks" esp which contains some book entries, but I do not want these entries to get forwarded. Therefore in my smashed settings I don't have any BOOK records checked: https://imgur.com/AJxCl8A

 

I also have Book Covers Skyrim, whose records I do want forwarded into the smashed patch, so I have its graphical BOOK entries checked in the smashed settings: https://imgur.com/zqyuNTD

 

Why is it that when I build the smashed patch the Book Covers records don't get forwarded? https://imgur.com/vln9DY0

Edited by Piranhaha
  • 0
Posted (edited)

I seem to be having a problem with v0.5 saving a Smashed Patch

Saving: D:\Steam\steamapps\common\Skyrim Special Edition\data\SmashedPatch\SmashedPatch.esp.save
Failed to save: Cannot create file "D:\Steam\steamapps\common\Skyrim Special Edition\data\SmashedPatch\SmashedPatch.esp.save". The system cannot find the path specified
Failed to patch SmashedPatch, Cannot create file "D:\Steam\steamapps\common\Skyrim Special Edition\data\SmashedPatch\SmashedPatch_fails.txt". The system cannot find the path specified

For NewPatch I am renaming it to SmashedPatch, and the plugin name to SmashedPatch.esp (Just personal preference)

 

In the log everything seems to go fine apart from the saving

 

By default it tries to save into a folder Data \ SmashedPatch \ (Why not just save the plugin into Data \ ?)

 

There is no such folder, and it does not create one

 

My game install path is not protected in any way, system is C:\

 

It also seems to be appending .save to the end of the plugin name

Edited by alt3rn1ty
  • 0
Posted
  On 4/25/2018 at 12:15 PM, alt3rn1ty said:

I seem to be having a problem with v0.5 saving a Smashed Patch

Saving: D:\Steam\steamapps\common\Skyrim Special Edition\data\SmashedPatch\SmashedPatch.esp.save
Failed to save: Cannot create file "D:\Steam\steamapps\common\Skyrim Special Edition\data\SmashedPatch\SmashedPatch.esp.save". The system cannot find the path specified
Failed to patch SmashedPatch, Cannot create file "D:\Steam\steamapps\common\Skyrim Special Edition\data\SmashedPatch\SmashedPatch_fails.txt". The system cannot find the path specified

For NewPatch I am renaming it to SmashedPatch, and the plugin name to SmashedPatch.esp (Just personal preference)

 

In the log everything seems to go fine apart from the saving

 

By default it tries to save into a folder Data \ SmashedPatch \ (Why not just save the plugin into Data \ ?)

 

There is no such folder, and it does not create one

 

My game install path is not protected in any way, system is C:\

 

It also seems to be appending .save to the end of the plugin name

Smash is supposed to just save the plugin into Data when your patch destination directory is set to the game's data directory.

 

I think I found the issue and will upload a fix release soon.  Thanks for the report!

  • 0
Posted
  On 4/25/2018 at 5:54 PM, alt3rn1ty said:

:) No probs, will watch out for the update, grab and start trying things out again.

 

I have found so far its a fair bit more intuitive now since the last one I tried.

Updated, see the OP!

  • 0
Posted (edited)

Thank you - Thats solved saving it to data \

 

Still got a problem with the output plugin in the naming though, it gets named ...

 

<whateverpatchnameuserchose>.esp.save

 

Easily solved by renaming the plugin minus .save extension

 

 

pRTp934.png

 

 

Oh : HOLD THE PHONE - It might help if I let the program finish what its doing, the plugin does get saved by MatorSmash without the .save extension ( if I let it get there :) )

Edited by alt3rn1ty
  • 0
Posted

I have a request :

 

On the Profile Selection dialogue, could the selected Profile be made a bit more visually distinct from the non selected profile, my eyes are probably a bit worse than most these days, but your target audience no doubt will be my age one day too :)

 

The non selected if I am looking carefully, is a very light shade of green white, and the selected is a very light shade of blue white, I would imagine for someone slightly colour blind it would be worse, but on the few times I have loaded this new version now I find if I get distracted and come back to the screen, I am deselecting and reselecting to make sure I have the right one selected

 

b36dyK6.png

  • 0
Posted

In ..

Matorsmash \ Settings \ Skyrim \ Skyrim-SmashAllUpdate.zip <- I think this file is not required (it contains Smash.All.JSON, and Smash.ForceAll.JSON which have the same timestamp as the loose ones in the same folder)

  • 0
Posted
  On 4/25/2018 at 10:22 PM, alt3rn1ty said:

In ..

Matorsmash \ Settings \ Skyrim \ Skyrim-SmashAllUpdate.zip

Ah, I accidentally packed that with the release archive.  Thanks for pointing that out.

 

RE: color of active profile - I can make it a big more saturated, for sure.  Does this look better?

 

Aau5h.png

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