Better support for disabled plugins

,

Totally agree with everything you have said. I would also add the following.

  1. When a Blueprint Data Stucture is yanked out, that the symbol table be completely cleaned, if one goes into the affected Blueprints, and manually removes the nodes, that were referencing the BP Data Structure. Yes I know there is a option that comes up, to do this automatically, but if one says cancel on that window, and one wishes to do it manually. What can ocurr, is that the nodes are removed, but the “symbol table” entries are still present, hence error messages keep coming up, even though there are no nodes visible in any function, macro, etc.

  2. That when a “compile” of a Blueprint, does have an error in it, do not blow away whatever resources, etc, that the blueprint is holding, in the level, that is currently in the editor. Simply do not run the construction script, for the blueprint that just had the error during the compile. I have now went to the point, of having a “Blueprint compile” level, that has nothing in it, if I think, that a blueprint has a of having an error during the compile. So if the “compile” fails, do not invoke the construction script of the blueprint in the level.

I’m not trying to be negative, just trying to give some suggestions, to make UE4 better.

,

I agree I should, just don’t have the time now, and have a laundry list of things I would like to see addressed, when I’m finished with this submission to the marketplace. Your post just caught my eye, and I thought I would add a bit to it.

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 guess you should create separate threads about your issues, they won’t get much attention in my thread I think.

Hi everyone,

I ran some tests over the past few days using both 's Victory plugin as well as the Paper 2D plugin that is included in the Engine. I made essentially the same project in each test, using versions 4.6.1, 4.7.6, 4.8.3, 4.9.2, 4.10.2, and 4.11 Preview 3.

For the tests involving the Paper 2D plugin, I created a new empty Blueprint project, added an Actor Blueprint, then in the Event Graph I pulled off of the Event Begin Play node and added an Add PaperFlipbookComponent node, then compiled and saved the Blueprint.

Then I disabled the Paper 2D plugin and restarted the Editor. Once the Editor restarted, I attempted to open the Blueprint I had created. I saw the following results.

4.6.1: Editor crashed when trying to open the Blueprint.
4.7.6: Same as above.
4.8.3: Blueprint opened, but the Add PaperFlipbookComponent node indicated an error.
4.9.2: Same as above.
4.10.2: Same as above.
4.11 P3: Same as above.

For the tests involving 's Victory plugin, I created a new empty code project, added the Victory plugin, added an Actor Blueprint, then in the Event Graph I pulled off of the Event Begin Play node and added an Accessor Get Character Skeletal Mesh node, then compiled and saved the Blueprint.

76134-victory.png

Then I disabled the Victory plugin and restarted the Editor. Once the Editor restarted, I attempted to open the Blueprint I had created. I saw the following results.

4.6.1: Blueprint opened, but the Accessor Get Character Skeletal Mesh node indicated an error.
4.7.6: Same as above.
4.8.3: Same as above.
4.9.2: Same as above.
4.10.2: Same as above.

So there are a couple concerns. I never saw a warning at all when compiling the Blueprint, and I never experienced a crash when attempting to open the project in the Editor. Would you be able to provide any more information regarding what specific nodes you may be using from the Victory plugin?

Hi , thanks very much for making the tests and the detailed description :slight_smile:

Regarding the warnings, I think it was like this in 4.6 or 4.7: If a node from a plugin was connected to the execution chain and the project was opened without the plugin, there was an error. If you then disconnected the node from the execution chain, that error was gone and instead there was a warning. So for blueprints with nodes from a plugin inside, I know that I just disconnected the whole execution (like just disconnecting the wire from EventBeginPlay) and then the errors were gone and there were warnings instead, so everything would compile fine and the game would work.

Then in a later version (4.8 I think) the errors would persist, even if the node was disconnected from the execution chain, so for compiling your BPs, you would actually have to delete all the nodes from the plugin.

I wonder why you don’t see the crash I see. Maybe it’s really about where the nodes are used and what exact nodes are used.

I know that for example I use the “ViewportSetMousePosition” node in the event graph of my PlayerPawn, more exactly I use it in an InputAxis Event. That player pawn is set in the GameMode and the game mode is set in the Map, so maybe these references are also causing the editor to crash when the level is loaded.

Other nodes I use are a lot of “VictorySetCustomConfigVarString” and “VictoryGetCustomConfigVarString”, and I use these mostly in a widget blueprint.

Another node I use is “CreateTextureRenderTarget2D” in the event graph (EventBeginPlay) and construction script (just floating around, not connected to execution chain) on an actor that is placed in the level that is loaded on startup. Having a node that does not exist any more in construction script might also cause the crash.

I think I use a lot of other nodes too (like the random int node from the victory plugin), but they are spread across the whole project (almost 30.000 nodes) so it’s quite impossible to find them all. That’s why it’s also almost impossible to remove these nodes before I remove the plugin.

Thanks for the additional information, . I’ll play around with my test projects a bit more this week and see if I can spot what is going on.

Hi,

I ran some additional tests and was able to determine that the change you noticed with the warnings turning into errors did go into effect in 4.8. Prior to 4.8, the Blueprint would compile with a warning that the function could not be found. From 4.8 on, that warning became a compile error, preventing the Blueprint from being used until the error was resolved.

I checked with some of the Engineers that work on the Blueprint functionality in the Engine, and we were able to pinpoint where the change was put into the Engine. It appears that when an undefined node (with the warning message you were seeing prior to 4.8) was called in a Blueprint during PIE, an infinite loop would be detected and PIE would be terminated. We changed the warning to an error so that any instances of undefined nodes in a Blueprint would have to be cleaned up before it would compile successfully. Unfortunately it is a change that we are unlikely to revert, which I realize is not what you wish to hear given the number of nodes you currently have in your project. However, if you are using an Engine that you built from source code, I can let you know exactly what change was made and you can change it back for your own version of the Engine if you wish.

The bad news is that I still have not been able to reproduce the crash that you described. I will keep working on that, including continuing to increase the complexity of Blueprint setups that I am trying. If you have any additional information that may help reproduce the crash, it would be very much appreciated.