Synthesis-Collective / DynamicVariance

Bethesda LList probability editor and variant splicer
GNU General Public License v3.0
0 stars 0 forks source link

Interception Spawning #8

Open Noggog opened 3 years ago

Noggog commented 3 years ago

This would be the concept that we do not rely on the default Bethesda spawning systems provided by LLists. Rather, we attempt to intercept a spawning event, and do what we want from there. This opens up many more complex spawning scenarios/features that probably couldn't be offered by the stock Bethesda systems.

An example of what I mean can be found in my 2011 Oblivion mod Dynamic Leveled Lists: https://www.nexusmods.com/oblivion/mods/37904/

What it did was use a janky patcher to modify LLists to:

Rat would spawn, script would kick in and look at the originating LList. It would see the entries hiding at 10k, and do the probability calculations, do a roll, and then spawn the actual NPC to be seen in-game.

This opened up a dynamic spawning system, where as the player leveled up, the probability curves would follow more dynamically, and offer very small probability chances as well. You could now have a level 20 vampire spawn at a 0.01% chance for a level 1 player. You could spawn multiple -different- NPCs, instead of just the stock systems which spawn a "count" of the same NPC.

As such, this project could consider trying to intercept (hopefully in a way more mature way) the spawning systems, so that it can offer advanced features. Potentially, it could offer things in two "modes" where some features were off limits if the user only wanted the default LList systems to be used, rather than the interception spawning.

Noggog commented 3 years ago

Another aspect to this is that using typical LList systems can seemingly degrade into slow performance: https://www.reddit.com/r/FalloutMods/comments/89bg0c/fo4_heavy_stutter_caused_by_mods_that_edit_npcs/

I guess a LList with lots of items freezes the game as it has to inspect each entry? Doesn't seem like it would be that intensive to actually freeze the game, but perhaps it's doing more inspection than necessary or is unoptimized somehow.

Either way, hopefully an interception system will avoid this