Jump to content

[WIP] zEdit


Mator
 Share

Recommended Posts

xzOWb.png
 
zEdit
Current Release: Alpha v0.3.0

 
 
What is zEdit
zEdit is a new GUI/frontend for the xEdit framework built with Electron. The goal is to do everything xEdit does and more through the power and flexibility of JavaScript, HTML, and CSS.
 
I posted a survey to get ideas for zEdit here (and elsewhere) a few weeks ago.  GamerPoets made a video going over the survey results, which you can view here.

 

v0.3.0 Release Notes
This release includes a new application mode for cleaning plugins (zClean), advanced record search/filtering functionality, a referenced by view, tab icons and dynamic labels, and more.

 

v0.2.0 Release Notes
This release brings documentation, record copying functionality, extension management, and more.

 

v0.1.1 Release Notes
This is a hotfix release which fixes several bugs and UX issues that were reported to me shortly after v0.1.0 was released. This release should finally fix all of the issues with FO4/SSE load order handling.

 

v0.1.0 Release Notes

This release includes a bunch of fixes and new features. The release is pretty solid and includes really some exciting new systems.

This release adds support for zEdit Modules. Modules are packages of JavaScript code and HTML templates which are loaded by zEdit on startup. zEdit modules are like mods for zEdit. Developers can create new context menu items, new modal views, respond to application events, and more.

The release also adds support for custom application and syntax themes. I included a dark theme which I put together myself as well as a bunch of syntax themes which were included with CodeMirror.

Finally, this release includes a core module - the zEdit Unified Patching Framework (or UPF for short). UPF is similar SkyProc/SUM, but better. You can find an example UPF patcher here. UPF offers:

  • Generic progress modal display while patchers execute
  • The ability to build multiple patchers into a single patch plugin file
  • A single Manage Patchers modal where a user can adjust the settings of their patchers, disable patchers, and build patch plugins. Patchers can register tabs here with an HTML template and an angular controller.
  • The ability to use all features of ES6 JavaScript in your code, including functional programming, classes, file system access through NodeJS, and more.
  • Full access to xelib, a javascript wrapper around XEditLib which provides a high performance API to the XEdit framework. That means faster execution than xEdit scripts, no jvInterpreter weirdness, a simplified API with no redundant functions, and many totally new functions which make many tasks much easier.
  • A highly structured patcher format which makes creating patchers faster and less repetitive.

Here are a few screenshots of UPF in action:

jdsmith2816 is currently working on porting the ReProccer to use UPF. He has Armors, Alchemy, and Projectile patching done and mostly tested, and is currently working on the last part of the patcher, patching Weapons.


v0.0.1 Release Notes


Today I released an alpha of zEdit to start getting direct feedback and ideas from the community. This release is nowhere near feature complete, and will have its fair share of bugs. You have been warned!
 
I have written some very extensive release notes on the release page on GitHub. I don't expect anyone to actually read all of it, but they're there so you can check to make sure whether or not I know something is broken before letting me know.
 
This alpha release already has a few things xEdit doesn't:
  • You can choose the game mode from the start screen (no need to rename the executable)
  • You can have multiple record view tabs
  • You can reorder your load order from within the application when you start a new session
  • You can search for records by name
  • You can create user scripts using the full functionality of ES6 (functional and object-oriented programming, yay!)
  • Special forms for editing certain fields such as colors, enumerations, and multi-line text.

More functionality is on its way.
 
EDIT: Builds updated to fix a problem with a missing dependency, causing the XEditLib.dll missing error. If you downloaded in the first 30 minutes this was posted redownload the application or download and install the dependency into its folder.

 




Plans
I started working full time a few weeks ago, so I have less time to work on zEdit. This caused the v0.2.0 release to take considerably longer than initially planned (from 1-2 weeks to 1 month). New releases will likely be monthly/biweekly going forward. zEdit development will continue, but it will be slower. This would be a good time for any developers who are interested in the project to make a commitment to contribute to zEdit more often!


Conclusion
You can report issues here or on the GitHub repository and you can track my progress on zEdit's public Trello board. You can get updates on zEdit and chat with me or other developers on the Modding Tools Discord Server. If you're a developer and interested in contributing, send me a message and we can find something for you to work on.
 
 
Thanks, and enjoy zEdit!
- Mator

Link to comment
Share on other sites

7 hours ago, Beermotor said:

Congrats on the release milestone!  I had no idea you were this close to a testable alpha. :)

I'm at work on a Mac right now, but I'm certainly going to take it for a spin when I get home.

Thanks!  Yeah, I work fast.  I put this release together by working on the application for the entire month of August, with 556 commits to zEdit and 105 commits to xedit-lib.

Link to comment
Share on other sites

working fine on fallout new vegas, but got a error when testing with fallout 4

here's the log

Loading Unofficial Fallout 4 Patch.esp (1/37)
Exception loading Unofficial Fallout 4 Patch.esp
FormID [0001D971] in file Fallout4.esm refers to master file Fallout4.esm which has not been assigned a global load order
Fatal Error: <Exception: >

 

Link to comment
Share on other sites

8 hours ago, kawaksallas said:

working fine on fallout new vegas, but got a error when testing with fallout 4

here's the log

Loading Unofficial Fallout 4 Patch.esp (1/37)
Exception loading Unofficial Fallout 4 Patch.esp
FormID [0001D971] in file Fallout4.esm refers to master file Fallout4.esm which has not been assigned a global load order
Fatal Error: <Exception: >

I'll look into it!

Link to comment
Share on other sites

Hi Mator. This looks very cool! My (rather minor) gripe with xEdit has been the UI & lack of complete official documentation. The functionality has always been great, but it took a long time, and a ton of searching out various 3rd party resources to learn what it can do. It's an invaluable tool, but convincing others to use it is like pulling teeth. Looks like this addresses those concerns, and I may be able to finally convince people to clean their darn plugins! Yay! I don't know what your relationship is with the xEdit team. From what I gather, they are making progress with the curveballs Bethesda's been throwing in regards to SSE headers, .esl's, CC content, etc. So I was wondering if you are going to be keeping this updated with the changes that the xEdit team makes? Thanks! :)

Edit: BTW, I watched the Gamerpoets video. Good job!

Link to comment
Share on other sites

17 hours ago, RavenMind said:

Hi Mator. This looks very cool! My (rather minor) gripe with xEdit has been the UI & lack of complete official documentation. The functionality has always been great, but it took a long time, and a ton of searching out various 3rd party resources to learn what it can do. It's an invaluable tool, but convincing others to use it is like pulling teeth. Looks like this addresses those concerns, and I may be able to finally convince people to clean their darn plugins! Yay! I don't know what your relationship is with the xEdit team. From what I gather, they are making progress with the curveballs Bethesda's been throwing in regards to SSE headers, .esl's, CC content, etc. So I was wondering if you are going to be keeping this updated with the changes that the xEdit team makes? Thanks! :)

Edit: BTW, I watched the Gamerpoets video. Good job!

I will be pulling major releases of xEdit into XEditLib, which is what zEdit uses to interface with the xEdit codebase. 

And yes, the xEdit team is highly focused on the data structures - the decoding and encoding of Bethesda Plugin Files.  This is great because I honestly have a fairly limited understanding of that stuff, I mostly build on top of their work (standing on the shoulders of giants, so to say).

A note: zEdit does not currently include any plugin cleaning features, but they will be introduced in the next version!

Link to comment
Share on other sites

@Mator will it be possible to do everything Snip used to, with zEdit ?

I never used it personally, but the problem with it was (past tense) for a long time it was being used by people because it made copying parts of a plugin into their own easier than anything else .. (or at least in my ignorance thats the general impression I got of how it was being used). The trouble was it was duplicated for use with newer games than it was originally designed, and gave resulting plugins corruption which caused all manner of mayhem and complex issues, Fallout 3 community was riddled with corrupt mods, and the same problems started occurring in early Skyrim modding where the authors were hiding the fact that Snip had been used (hiding the fact because deservedly it had such a bad rep being used irresponsibly on games it had not been developed for). Sharlikran fixed a heap of the most popular Skyrim problem mods on Sharlikrans Compatability Patches page. Hopefully, any duplicated mods on Skyrim SE nexus took those patches into any new copy pasta mods derived from the original corrupt ones.

I believe the corruption issues have since been resolved with the tool, but it still has not been further developed, so is still not recommended for use as far as I know ..

.. Will zEdit be capable of replacing that utility?

Link to comment
Share on other sites

5 hours ago, alt3rn1ty said:

.. Will zEdit be capable of replacing that utility?

I never used Snip, so I don't know exactly what it did.  Currently, zEdit supports several methods of copying records which are pretty easy to use.  You can copy any selection of groups or records in the tree with Ctrl + C, and paste them into a selection of files with Ctrl + V.  You can paste as override via Ctrl + Shift + V.  The "Copy into" modal is more similar to xEdit's copy & paste functionality, and can be accessed by pressing Ctrl + Alt + C.  All of these options are also available from the right-click context menu (where the hotkeys are also listed), and are documented on the Views/Edit View/Tree View documentation page.

EDIT: Did some poking around, I think what zEdit currently offers with copying records is as good if not better than what TESVSnip offers.  It's not the same, but it should get the job done.  The "smart copy" feature (which fixes references between copied records) will make it even more useful.  Smart copy basically has the program fix references between copied records when copying them as new records.  So, e.g., if you copy an ARMO and an ARMA, and the ARMO references the ARMA, that reference would be fixed to point to the new copied "ARMA" record, rather than the old one.

Link to comment
Share on other sites

Sorry yes I should have found out a bit more detail first : According to the description on Github https://github.com/figment/falloutsnip

"In the word of the original author, TESsnip is a low level plugin editor that allows you to open esm/esp files, view the record structure and cut/copy/paste records and subrecords between different parents, including different esp's. You can also view and edit the data saved in a subrecord, in either hex or string format, as well as editing record headers."

My bold. I think the most convenient thing about it was the ability to copy / paste between plugins

 

Edit : Just seen your edit - I can see this making a lot of people smile.

Link to comment
Share on other sites

5 hours ago, Beermotor said:

@Mator I've had a cursory run through docs but I either overlooked it or forgot:  Is zEdit going to eventually be able to parse/use/translate/something xEdit scripts?

Nope.  zEdit has it's own scripting system (see the Automate Modal in the documentation), which runs JavaScript userscripts.  It is not feasible or sensible to introduce jvInterpreter pascal scripts to zEdit.

Link to comment
Share on other sites

11 minutes ago, fireundubh said:

Does zEdit currently provide more support for VMAD than xEdit?

The definitions aren't different I don't think, but I allow users to create VMAD, Script, and Script Property elements from the GUI.  Currently there's some kind of bug with adding a script to a VMAD which already has a script which I haven't isolated and fixed yet.

Link to comment
Share on other sites

Thanks.

Three things that most annoy me about VMAD handling in xEdit:

  1. Inability to add script properties
  2. Adding script fragments throws an error at first, although this works perfectly fine
  3. Editing the script name does not update the respective script name fields in child script fragments

A couple of things that annoy me about TERM handling in xEdit:

  1. Changing the Form ID of a TERM record does not update the Form ID in the script name (either in the record or in the file system)
  2. Changing the Editor ID of a TERM record does not update the Editor ID in the script name (either in the record or in the file system)

In my experience, working with terminals is the most painful activity in xEdit. If xEdit wasn't Delphi, I'd just write a GUI editor that visualizes terminals as a flow chart with menu item grouping.

With respect to the xEdit UI:

  • You can't expand/collapse field groups.
  • You can't toggle the visibility of unassigned fields.

Together, these make editing terminals and VMAD subrecords really inconvenient unless you have a super high-resolution 21:9+ display.

Hopefully, zEdit addresses, or can address, some of these frustrations.

Link to comment
Share on other sites

On 11/21/2017 at 10:17 PM, fireundubh said:

Thanks.

Three things that most annoy me about VMAD handling in xEdit:

  1. Inability to add script properties
  2. Adding script fragments throws an error at first, although this works perfectly fine
  3. Editing the script name does not update the respective script name fields in child script fragments
  1. Adding script properties works in zEdit to my knowledge.
  2. zEdit likely still throws the error.  I'm looking into a similar issue with editing Version Control information.
  3. I think that can be fixed in the definitions, I'll take a look.
On 11/21/2017 at 10:17 PM, fireundubh said:

A couple of things that annoy me about TERM handling in xEdit:

  1. Changing the Form ID of a TERM record does not update the Form ID in the script name (either in the record or in the file system)
  2. Changing the Editor ID of a TERM record does not update the Editor ID in the script name (either in the record or in the file system)

In my experience, working with terminals is the most painful activity in xEdit. If xEdit wasn't Delphi, I'd just write a GUI editor that visualizes terminals as a flow chart with menu item grouping.

I don't think changing things in the file system is in line with how xEdit usually operates.  A GUI editor is probably the best bet for this, and should be pretty easy to make because zEdit is HTML/CSS/JavaScript.  I've never worked with TERM records before, but if you make a list of requirements I should be able to build this.  You could also look into building it yourself, if you're interested.  :)

On 11/21/2017 at 10:17 PM, fireundubh said:

With respect to the xEdit UI:

  • You can't expand/collapse field groups.
  • You can't toggle the visibility of unassigned fields.

Together, these make editing terminals and VMAD subrecords really inconvenient unless you have a super high-resolution 21:9+ display.

Hopefully, zEdit addresses, or can address, some of these frustrations.

Expanding/collapsing field groups is already available in zEdit.  Toggling the visibility of unassigned fields isn't something I hadn't thought of, but I can do that fairly easily.  Will probably be able to build that today.

One of the big goals of zEdit is to address these sorts of issues.  I have created cards in the trello boards for zEdit and xEditLib to address all of these issues.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...