Development status
Added 2024-11-07 14:11:21 +0000 UTCHi.
Something a bit different from the usual π§
First off, I haven't made much progress on breast morphs yet. I know that's probably somewhat disappointing to hear, but fret not, we'll get there. The next status/WIP post will be about breast morphs.
What I have been working on though is an effort to unify, standardize and modernize the codebases of all of my plugins (with a few exceptions, mentioned further down). I felt that this was important to do from start to end before continuing with other development work.
This started with a realization a few weeks ago that I have a bit of a blind spot in not knowing which plugins work with which versions of VaM, and whether changes that I introduce break backwards VaM compatibility. So I set up an array of VaM versions going back to v1.19 (which is old enough that you can't even download it with the latest updater), each version symlinking its Custom, Saves, AddonPackages, etc. folders to the latest VaM installation, and tested every single one of my plugins against each version until I had determined the minimum compatible VaM versions.
The overall result of this investigation can be viewed on my Hub profile page where I list all of my plugins and their compatible versions, as well as the current latest plugin versions, and which atom types they are meant to be used with: https://hub.virtamate.com/members/everlaster.2380/
Common plugin development library
Going back to edit the codebases of my old plugins led to another realization: there's a lot of duplicated code, and different implementations for doing the same things in different plugins, and a whole host of other issues relating to how my projects are configured and set up that unnecessarily differ between each project. At some level I've known this to be a problem for a long time, it's probably why I've been reluctant to regularly maintain and develop new features for my older plugins. But having now standardized the codebases, I'm now in a much better position to go back to those older plugins and give them the love they deserve.
Here's what I actually did: all of my plugins now share a library of common functions and resources. Effectively, this means
there is basically zero duplication: if there's something I can do in one plugin, I can just immediately make that a shared function and use it in any other plugin with little to no effort
it's much easier to jump from one project to another and quickly implement changes
for smaller plugins, up to 90% of their code comes from the common library, with the remaining 10% being code that's actually unique to the plugin
Here's a chart showing the % of code that comes from the common library:
Almost all of that shared code used to be duplicated in each plugin or implemented in some outdated or alternative way and not standardized, and in many cases the plugins didn't actually do things in a smart way at all and that's now fixed.
Snippets is not included here but it also uses the common library and benefits greatly from it.
Another fun chart is the lines of code in each plugin that are unique, vs lines of code that come from the common library:
Now, I haven't actually published this update to most of my plugins yet. I recently updated UXPlus, Preset Loaded Triggers, AutoGetDependencies and Audio Scrubber with an early version of this, alongside VaM version compatibility fixes. My goal is to eventually publish an update to all of my plugins that contains this modernization, plus some actual new features and/or bugfixes.
It's important that Naturalis also uses the library, since it's the main focus of development, and there's a potential for technical improvements in Naturalis to trickle down to other plugins through the common library. I'm roughly halfway through the process of adapting Naturalis to use it.
The two exceptions that don't use the common library are HairLetLoose and Lumination.
Plans for HairLetLoose
I'm planning to add an improved version of HairLetLoose as a new module in Naturalis v1.5 (the version after the current one that's still in alpha). The main improvements I'm envisioning are a hair profile system similar to Naturalis clothing adjustment profiles, and a reimplementation of the core functionality that uses g-forces instead of head angle to drive the hair physics parameters - this should allow more realistic long hair physics behavior during animations. It makes sense to have this integrated to Naturalis so that I can take advantage of the existing code around profile saving/loading and g-force calculation, and it's a natural continuation to making Naturalis a full body plugin.
Plans for Lumination...?
There's no concrete plan... But I have concepts of a plan π. The main issue I have is that the plugin can only be used with Subscenes, it would be much better if it just injected its functionality to all light atoms in the scene without requiring them to be parented to anything or even manually selected. Hopefully I will find the time to return to this plugin in the future.
Removing the public Trello boards
Many of you probably didn't even know I had public Trello boards for Naturalis and UXPlus, as it's been a while since I shared those. However, I'm no longer maintaining these and have made them private.
A while back I moved all of my notes for all plugins from Trello and disorganized text files into a project template in Notion (see https://notion.so/ - I love this app). I now have very detailed and easy tracking of all issues and ideas for improvements in every plugin. However this is too detailed and technical to share publicly, and I can't be bothered to maintain a separate board like Trello (I would forget to keep it up to date anyway).
Instead, what I'll do is just post about my plans in development posts like this one.
Alright that's it! Until next time.
-everlaster
Comments
Your work and professionalism is inspiring! Always a pleasure.
babul
2024-11-07 23:18:11 +0000 UTCThank you for all your work! π
Mrspirit
2024-11-07 21:43:45 +0000 UTCmaybe 1 step back for 10 steps forward ! Keep on going :)))
Pan-da!
2024-11-07 16:33:02 +0000 UTC
