Forums » General
How the "Disable plugins" feature works
In your Options → Advanced → Game: Bottom of menu, there is an option that lets you enable or disable plugins from loading. Since its come up a few times in the bugs forums and in-game, I'm going to walk through how this system works and why you need to do a FULL RESTART before making a bug report even if you change this option. If you want to tl; dr, then just take my word for it - even if I don't get everything 100% accurate, it's going to be close enough, and aligns with things Incarante's said here on the forums.
When you first change this option, it writes to your config.ini file in the [Vendetta] heading the following value: plugins=# where # is 1 for yes, 0 for no. Yes means the plugins will be loaded, No being that plugins will not be loaded. At this point, plugins have not been removed, nothing has happened at all other than this one change. the only noticeable impact would be after you reloaded the game interface (either via the ReloadInterface() function in the game console, or with the /reload command that some plugins implement as a shortcut to that function). This triggers a process that refreshes the plugin sandbox.
Now, this does not actually remove the plugins!. When you reload the interface, only a part of the game code is actually affected. It kills timers, clears certain data, initiates some cleaning, before the game restarts the loading process involved with the game interface (or external interface like Neoloader, which itself usually then loads the interface), and then it loads plugins if that config option allows it to.
Your game is not starting from a fresh slate! There is a LOT of data that 'sticks around'. old plugins *normally* get dislodged and cannot interact with your game post-reload, but only a part of them can actually be removed (due to how lua itself works, if I understand correctly?). Technically, this even extends to the interface itself, since the interface is loaded in a manner almost exactly like how plugins are loaded. All of this 'ghost' data might not be able to interact directly with the freshly loaded interface, but it CAN interact with the stuff that a reload doesn't affect - the out-of-sandbox parts of the game.
The only effective way to truly 'unload' a plugin is to have never run it in the first place.
Think of the game's "sandbox" for the interface and plugins as a virtual workspace where all the tools (plugins) are set up and ready to use. When you "reload" the sandbox, you're essentially sweeping the workspace and setting up fresh tools. However, imagine some tools leave behind invisible traces, like a sticky residue or a faint outline, even after you've swept up. These traces can subtly affect the new tools when you bring them in.
Now, when you report a bug, it's crucial that the workspace is absolutely clean—no traces, no residue, nothing that could impact the game experience as the developers experience it. The only way to guarantee this is to completely shut down the game and restart it. Reloading the workspace while the game is still running doesn't fully clean up the traces, which means bugs might stick around, reappear, or even be the reason there are bugs in the first place, making troubleshooting impossible.
Being able to reload is great for plugin developers, as it can simulate a fresh enough experience for the kind of development we do; we make a change, we reload the game to test that change, and repeatedly iterate. However, there's a very real limit of what a reload can do for you as a player, and when reporting these bugs, you *must* be reporting from a clean slate of the game. Otherwise, we're all just wasting Incarnate's time.
tl; dr, reloading the game isn't good enough for a bug report. turn off plugins and fully restart the game!
When you first change this option, it writes to your config.ini file in the [Vendetta] heading the following value: plugins=# where # is 1 for yes, 0 for no. Yes means the plugins will be loaded, No being that plugins will not be loaded. At this point, plugins have not been removed, nothing has happened at all other than this one change. the only noticeable impact would be after you reloaded the game interface (either via the ReloadInterface() function in the game console, or with the /reload command that some plugins implement as a shortcut to that function). This triggers a process that refreshes the plugin sandbox.
Now, this does not actually remove the plugins!. When you reload the interface, only a part of the game code is actually affected. It kills timers, clears certain data, initiates some cleaning, before the game restarts the loading process involved with the game interface (or external interface like Neoloader, which itself usually then loads the interface), and then it loads plugins if that config option allows it to.
Your game is not starting from a fresh slate! There is a LOT of data that 'sticks around'. old plugins *normally* get dislodged and cannot interact with your game post-reload, but only a part of them can actually be removed (due to how lua itself works, if I understand correctly?). Technically, this even extends to the interface itself, since the interface is loaded in a manner almost exactly like how plugins are loaded. All of this 'ghost' data might not be able to interact directly with the freshly loaded interface, but it CAN interact with the stuff that a reload doesn't affect - the out-of-sandbox parts of the game.
The only effective way to truly 'unload' a plugin is to have never run it in the first place.
Think of the game's "sandbox" for the interface and plugins as a virtual workspace where all the tools (plugins) are set up and ready to use. When you "reload" the sandbox, you're essentially sweeping the workspace and setting up fresh tools. However, imagine some tools leave behind invisible traces, like a sticky residue or a faint outline, even after you've swept up. These traces can subtly affect the new tools when you bring them in.
Now, when you report a bug, it's crucial that the workspace is absolutely clean—no traces, no residue, nothing that could impact the game experience as the developers experience it. The only way to guarantee this is to completely shut down the game and restart it. Reloading the workspace while the game is still running doesn't fully clean up the traces, which means bugs might stick around, reappear, or even be the reason there are bugs in the first place, making troubleshooting impossible.
Being able to reload is great for plugin developers, as it can simulate a fresh enough experience for the kind of development we do; we make a change, we reload the game to test that change, and repeatedly iterate. However, there's a very real limit of what a reload can do for you as a player, and when reporting these bugs, you *must* be reporting from a clean slate of the game. Otherwise, we're all just wasting Incarnate's time.
tl; dr, reloading the game isn't good enough for a bug report. turn off plugins and fully restart the game!