So much to do, so little time

TL;DR: Many things planned. Become a patron so I can get them done sooner.

The Elder Scrolls Online has recently turned 5 years old and it looks like a bright future is still ahead of us. New players and add-on authors are flocking to the game and there is no end in sight. That’s why I decided to rectify some of the past mistakes we made and also plan to create some tools that will help authors become more productive and save them countless hours while they work on their add-ons.

The following projects are a non-exhaustive excerpt of my to-do list in no particular order.

LibStub Deprecation

Originally ESO didn’t differentiate between regular add-ons and libraries. That’s why the authors that were around during beta decided to port LibStub over from WOW and include library code as part of other add-on’s source code. This unfortunately means that an arbitrary number of older versions of the library code could be executed on login. In cases were an old version includes a bug in its initialization code, it would also affect all future versions. Which did happen on several occasions and would either require all authors to update the library included in their add-ons, or users to manually delete the faulty versions in case they used add-ons that haven’t been updated.

I made my first attempt to change this back in 2016, but it didn’t gain much traction and was quickly forgotten. Ever since I have secretly continued to pave the way and my plan finally started to come together last year after ZOS has introduced a feature to let the game handle versioning of libraries and load them from folders nested inside other add-ons. That way only the newest code will run and bugs in older version won’t cause any more problems. It also opens doors for libraries, as they are now basically the same as regular add-ons and can use all the same features that are available to them (XML files, named UI controls, saved variables, dependencies etc.).

Starting with Elsweyr, libraries will also be shown in a separate list at the bottom of the add-on manager if they specify that they are indeed a library.

Debug/Chat messages

Over the years, most add-on authors (including myself) have been abusing debug functions to show messages in chat. This caused more than one incident where debug messages where accidentally left in a published add-on. For this reason I have created two new libraries and an add-on to allow authors to properly separate debug messages from regular chat messages and inspect them.

LibChatMessage will offer a simple and clean interface for printing messages in chat

. It also has options to keep a history of chat messages and prefix them with timestamps. These are two features that other add-ons like pChat already offer, so I decided to disable them by default and you will have to configure them yourself if you wish to use them.

LibDebugLogger is already released and stores a lot of useful information that can be used by authors to determine why a problem occurs. The next version will include additional details, like output made via the in-game debug utilities and certain game alert messages. Sending this file to an author when reporting a problem will hopefully go without saying in the future.

DebugLogViewer will act as a frontend for LibDebugLogger and can be used by authors and players to view and control which messages are shown. When it is active, it will also suppress the in-game error pop-up and chat debug output, as those will be displayed in a less intrusive way.

Authors are advised to check them out once they are released and decide for themselves if they want to switch to LibChatMessage for their chat messages, or leave it as is and have it redirected by the DebugLogViewer.

LibAddonMenu 3

The current LibAddonMenu has a few limitations that authors have complained about ever since I took it over from Seerah. In order to fix them, it is necessary to rewrite core parts of the library, which is on my list since 2015. There are also some cool new features (setting profiles, sub panels, tabs, dynamic controls) I wish to implement, that will give authors more flexibility in how their menus are structured and make it easier for players to configure their add-ons. Aside from that, the documentation is also in dire need of an overhaul.

Minion 4

Seeing how Minion hasn’t received any notable updates in quite some time, at the end of last year I decided to take matters into my own hands. Thankfully Dolby agreed to accept my help and since then I have been working on and off on fixing bugs and adding new features to it. One feature I am especially excited about is the introduction of add-on dependency handling. Minion 4 will be able to recognize and automatically install libraries that are required for an add-on to run.

In addition, Minion will become open source once the new version is up and running. That way other interested parties will be able to help improve and fix it going forward and hopefully keep it in good shape for many years. It will still take some time to finish everything, but rest assured that it is coming!

VSCode ESOLua Extension

For the longest time I have been using Eclipse to develop my add-ons and also created an autocompletion for ESO to be used with it. Sadly the LDT plug-in used to write Lua code has been abandoned a while ago and the autocompletion is hitting its limits too, due to the growing size of the game API.

Since Microsoft announced that they will finally bring support for detachable workbench parts to VSCode in 2019, I plan to switch over and create an extension that will provide all the features an add-on author can dream of: full autocompletion, code validation, refactoring utilities and whatever else will be useful. It will of course take some time to cover all of these, but in the long run it will save a lot more and make developing add-ons more enjoyable.

Kagrenac CLI

This tool will simplify a variety of common tasks that all add-on authors need to do in order to release their add-ons. Once completed, Kagrenac will be able to prepare projects from templates, validate the add-on structure to prevent some common mistakes, create zip archives and upload them to esoui. This will also be a big time saver for authors.

ESOUI Inspector

There are several developer add-ons that allow us to inspect one aspect or another of the game, but they all have some shortcomings. My plan is to revamp my sidTools into something that works similar to Chrome Dev Tools and gives authors a more holistic and structured approach to inspecting the game API and GUI.

Simple Notebook Tutorial 2019

A complete overhaul of the tutorial to bring it into the present and make use of changes that happened since I initially wrote it. I’d also like to fix some parts that have raised more questions than they answered and finish the missing chapters so it is finally complete.

Automatic Add-on Updates

I have left some of my own add-ons to collect quite some dust, but wish to change this and provide a new version for each major game update semi-automatically. This will become easily possible once Kagrenac is ready to upload new versions to esoui. Once I have finished to set this up, I’d also like to write a blog post on how I did it, so other authors can do the same.

AwesomeGuildStore

It has been in limbo for some time now, while I have been busy with other projects. Once Elsweyr is released, I plan to get it back on track. There are some changes in the game that will allow me to fix the item preview and I will also investigate ways to reduce the impact of server request timeouts, so I can finally get rid of the beta label.

As you can see, I will be pretty busy for quite a while. Most of these projects focus on providing tools for myself and other authors that will save a lot of time in the long run and make developing add-ons easier and more enjoyable for newcomers and veterans alike, but I promise I will also give my existing add-ons some love and update them.

If you want to support me in my endeavours, consider becoming a patron so I can spend more time working on these projects.

4 Replies to “So much to do, so little time”

  1. This was written in response to an unsupported add-on (Combat Cloud) and the fact that because it uses a text conveyance style not often used but loved very much. Users f the add-on attempt to fix its issues with the release of Elsweyr.

    https://www.esoui.com/downloads/fileinfo.php?id=281#comments

    “Thanks for the effort put in Mouko. I haven’t been on yet to try it.

    I think the reason people enjoy this add-on so much is because it uses a quick ‘up float’ style for text during combat. Very few add-ons have used this style to convey information and the ones that have, implemented this exact add-on (Combat Cloud) into thier own user interface add-on suite with a host of other combat text styles (scrolling, pop-up, etc). The issue becomes that those add-on suites become very bloated and when you want just one piece of a 20mb add-on that may host dozens of other user interface aspects, to go along with your other add-ons, it can crate slowdowns or freeze-ups during load times, hitches during gameplay. Even without performance issues, surfing several suites to find exactly what your looking for is becoming a burden in itself.

    Ultimately what needs to be done is something like Minion, which manages the download and updates of these add-ons, should strive be the host scripting executor and library dependency organizanizer as well. I get that authors want to have control of thier own scripts but as Minion 4 begins working to better support these updates with lib added, it’s become more apparent.

    Right now with Combat Cloud, someone needs to step in and continue just the compatibility updates as ESO goes through its own updates and like many unsupported add-ons, it’s just a matter someone understanding it’s importance, the scripting involved and offering thier own update.”

    Forgive me for not knowing if it’s been attempted but I think it’s a great idea and a lofty direction if Minion became more than a download manager and more of a central script manager. Something that would be worth payment for.

    1. If I understood correctly, you mean Minion should automatically install patches for abandoned add-ons when a user provided a patch? This is already the case, but it is only possible if the author has allowed patches for his add-on and someone follows the proper procedure to upload the patch to esoui.com.

Leave a Reply

Your email address will not be published. Required fields are marked *