Better support for disabled plugins

I remember back in 4.6 or 4.7, when I disabled a plugin that I use in my project, it would just mark the nodes from that plugin with a warning that the plugin does not exist any more.

Then later in 4.8 I think, there were no longer warnings but errors on the nodes, so I had to actually delete these nodes to be able to play the game in the editor.

Now in 4.10, the editor just crashes on startup and shows me the crash reporter and the log is telling me errors like that for every single BP where the plugin was referenced:


[2016.01.19-17.14.33:420]  0]LoadErrors:Error: Error /Game/Assets/Building/Building1 : Can't find file for asset. /Script/VictoryBPLibrary

and then crashes with


[2016.01.19-17.14.33:660]  0]LogWindows:Error: === Critical error: ===
Assertion failed: TargetFunction [File:D:\BuildFarm\buildmachine_++depot+UE4-Releases+4.10\Engine\Source\Editor\BlueprintGraph\Private\K2Node_CallArrayFunction.cpp] [Line: 138] 

And in 4.11P3, the crash reporter is not even showing up any more, but the project is just shutting itself down during startup.

So from version to version, it just got worse.

So now, I would have to create a copy of my project, manually find and remove all references to the plugin in all blueprints, delete all nodes from the plugin and then disable the plugin. That’s way too much work, because I have no clue where in what function these nodes are. Thanks to the BlueprintStats plugin I know that I have almost 30.000 nodes in my project, and manually looking through all of these to find the nodes I used from plugins, that just won’t work.

So I would really like to see this being improved, back to how it was in 4.6 or 4.7.

Hi,

I am going to be doing some checking on this tomorrow. Unfortunately I do not usually use plugins personally, so I was not aware that this behavior was degrading over the last few Engine versions.

If I could make a request… Would you be able to create a post about this on the AnswerHub? It is easier for us to track the issue there, and easier for other users to find the issue if they are looking for a report about it. I certainly don’t mind working on this with you here on the Forums, but AnswerHub would be the preferred location. If you do create a post on the AnswerHub, could you please post a link here so I can make sure to assign myself to the post?

Have you noticed this degradation in behavior with multiple plugins, or is it only with the VictoryBPLibrary that you have seen this happening?

Hi , thanks for your answer.

I have created a post on the answerhub, just copy and pasted everything from here: Better support for disabled plugins - Plugins - Epic Developer Community Forums

I only use Ramas victory plugin, so I never tried to remove other used plugins from the project.

This is quite common, I’ve seen it on all versions I’ve used.
UE4 comes with a load of plugins enabled by default, I disable all of them qhen creating or updating a project and things will crash even though I don’t call any node from any of them. That happens because UBT adds pre-compiles for the plugins to your project when files are generated, but never remove them when you disable a plugin.
Then
UEditor crashes at startup or sometimes Editor run, but you can’t package your game because UBT complains about missing functions from the plugins you disabled…

To fix that what I do is shift+delete every binary data folder in project (binaries, intermediate folders in both plugins folder and project folder), ‘saved’ folder, etc. Leaving just the Config, Content, Plugins and Source folders + the .uproject.
Then I regenerate VS project and wait for UBT to recreate all the PCH.h.cpp files; then I’m able to open project in editor again without design work loss; some blueprints prints error logs but if they’re using dead nodes though.
Those nodes you’ll have to clean up, but at least there’s no need to recreate the project MAP from scratch again… after that can package the game without references to the unused editor plugins as well.

Thanks Bruno, sounds interesting. Do you think that works with a BP-only project like mine?

Yes, you only have to get rid of the pre-compiled data and the compiled libs.
Make a copy of project, delete everything but leave the Config,Content,Plugin,Source folders.

Inside Plugins there’s Binaries and Intermediate folders, have to delete them too.

I always do that after disabling editor plugins for new generated projects.

I’ve just tested it. I’ve created a copy of my project, but only copied the Content and Config folder and the uproject file. I want to remove the plugins, so I don’t need to copy the plugins folder. I still get the same crash as before.

Is ‘VictoryBPLibrary’ still inserted inside of your .uproject file?
And yeah, deleting a blueprint library without disconnecting the used nodes first is bad idea lol

There is nothing about plugins in the .uproject file.

And as I said, there is no way I could manually go through almost 30.000 nodes to find and remove nodes from the plugin. So I first need to remove the plugin, and then clean the BPs up after I see where nodes are no longer valid. And that worked in previous engine versions.

If you identify the culprit blueprints and remove them from content folder maybe project runs again.
Would be interesting if they add a tool to cleanup these blueprints before editor startup though.

Hi,

Thanks for making the AnswerHub post. I’ll focus most of my attention there, and return here with a summary of the results to make sure the posts in both locations get wrapped up.

You know what would be cool ? If I could disable plugin on server and/or client :wink: