I am actually installing software to do some short "screen capture + voice over" videos, specifically to cover the new settings / features / "what was Jonathan thinking?!?" moments.
But I'll do a quick text-version justification of "why Preload", starting in lame story mode.
In the beginning was the extruder. It turned, and plastic came out (sometimes), and people thought that it was good.
Then, it was noticed that enough plastic wasn't coming out at the beginning, and too much plastic was coming out at the end of paths, and there sprang forth destring. And people thought that it was good.
And lo, it was observed that you would get a blob at the start of paths, and one at the end, while destring was happening. Thus came asymmetrical prime and retract values and speeds, and even the 'coast' function, and variable loop gaps, and attempts to adapt destring speeds to the path speed...etc. And people thought that it was...OK, at least as long as you didn't change your head speeds or layer thicknesses too much.
The thing is, if you drive some volume of plastic via your extruder, that plastic does not instantaneously come out of the nozzle. The flow coming out of the nozzle will speed up, finally getting to steady state (where the plastic pushed in by the extruder equals the plastic coming out of the nozzle), then when you stop the extruder it continues to ooze out, with the flow rate falling off until finally it is done. What I really really really wanted was for KISSlicer to handle all of that for me!
I did some modeling on this, and came up with an internal mathematical model of how this all functions, so KISSlicer can predict how much material is coming out of the nozzle at any given time. Given this model, KISSlicer can (and now does) drive the extruder, numerically model how much plastic is actually coming out of the nozzle, and vary the head speed to precisely match the plastic deposited. Of course, there has to be some number that controls how the flow out relates to the flow in (with some extra state variables that only KISSlicer needs to keep track of). The good news is that it boils down to one single number. The bad news is that it is dependent on both the extruder dimensions, and the material properties.
In the first version of Preload there was only 1 new parameter, a single preload value that was stored with the material profile. But it varied wildly depending on the printer in use, and it was impossible to use the same material profile on different printers, or different extruders with differing nozzle sizes on the same printer, let alone share material profiles with someone, even to get a decent starting point! So I had to split it into at least 1 number for the extruder configuration, and one number for the material properties.
The extruder properties that contribute to the equation are now found in the [Printer]->[Extruder Hardware] tab, and they are the nozzle diameter, nozzle length, and drive length. I could have combined them all into a single number, but the number would have been meaningless, and hard to measure, so I left them as 3 constituent parts. The nozzle diameter is known, the drive length is easy to measure, and the nozzle length can be looked up or estimated easily. I also have plans to use the nozzle diameter in the style settings later, so I really wanted that value distinct anyway. Note: you need all three of these values to be non-0 (and hopefully close to the real dimensions!) before preload can function.
The material properties are much harder to look up, which is why I did not release KISSlicer 1.6 beta until I had the Tuning Wizard and the PreloadVE experimental Wizard thing. Those tools make it relatively painless to get a decent preloadVE number for the material, *ONCE I FINALLY DOCUMENT WHAT YOU ARE SUPPOSED TO DO!!* That will be the subject of one of the first of those videos I mentioned. The short version is that I run the experimental version first, get a starting value, then run the Tuning Wizard with a specific model and style profile to find a nice value. That's it, about 30 minutes of print time per material that I need to characterize.
Once the preload is tuned well, suddenly the destring works well with smaller values, and can be driven faster (since there is really no load left on the filament). It also adapts to whatever flow rate you happen to be using, so it works well for fast or slow paths and thick or thin layers. No more tuning your destring parameters to look OK for perimeters, but not so great on solid surfaces (or vice versa).
OK, well, this post has gone on waaaaay too long, sorry about that. I'll get back to programming now, but hopefully you won't just ignore Preload completely. Yes, it is a complex concept. Yes it is extra work tuning your material profile. Yes it is one more thing that KISSlicer does differently for other slicers. But Preload is not just something I threw in to be different. I believe it closely follows how the system is actually working, and it can give great results.
thanks for your time,
Jonathan