XXX4Fans
everlaster from patreon
everlaster

patreon


Development status

Hi.

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

Here's a chart showing the % of code that comes from the common library:


full resolution image here

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:


full resolution image here

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

Thank you for all your work! 💖

Mrspirit

maybe 1 step back for 10 steps forward ! Keep on going :)))

Pan-da!


Related Creators