Blueprint Compilation Manager - The Good, The Bad and the Ugly

Hello everyone.

This topic is related to the new Compilation Manager that arrived with 4.17. Since it’s a new feature, it expected to have bugs and what. I already have an aswerhub post about it but I thought it’s okay to post my thoughts / problems in here aswell. So let’s start.

The Good

  • It definitely reduces the launch-compile time. This is a great addition for big projects.
  • Child Blueprints are not compiled meaninglessly when a Parent Blueprint has changes. Again great for big-parent blueprints that holds all the data, compiling them are much faster.
  • Many bugs are fixed related to false cast errors and whatnot.

The Bad

  • When a Parent BP and a Child BP got edits and needs to be compiled, just compiling Parent BP is no longer enough. We have to open and compile all edited blueprints now. Back then “File” - >“Refresh All Nodes” would make a compile on both Parent and Child Blueprints. It would be great if this new Manager could check if a BP’s children needs to be compiled or not.

The Ugly

  • Engine crashes with an “Out of Memory” crash log if you edit a Struct that is used by many blueprints. Since editing a Struct marks all its BP users as “Needs to be Compiled” after making a change on it, Manager is unable to put BPs in order to compile and attempts to do it all at once. Currently I got 3+ BigParents, their children as 3+ SmallParents as their children and 30+ Child blueprints as those smallparents’ children. I got many structs that are used by ALL of these blueprints and they become marked for compile if I touch a struct and Unreal crashes while compiling.

Solution with Manager on: Go from smallest child BPs and compile them individually, then go to their parents to do the same, then to their parents. Doing it the other way around crashes the Engine.
Solution without Manager: From Project Settings, disable the manager, compile, then enable it back.
Very Bad Solution: Make the changes, close the Engine, save without compiling and let Launch-Compile do the compiling. This gives struct-variable errors across the project so I wouldn’t suggest doing this.

That’s all for now! Thanks for your time and reading!

Thanks for taking the time to report these bugs!

I’d really like to get a copy of your project in order to investigate the crashes you’ve found. It would probably be easiest if you started an answerhub thread - but you can also message me a link here if that works for you!

I’ll investigate the differences in struct editing that you mentioned.

Hello Dan, I will be able to create a dropbox link for download tomorrow with a video to showcase all the happenings!

https://answers.unrealengine.com/questions/677951/bugs-related-to-blueprint-compilation-manager.html

Here is answerhub link aswell.

Mhm… I think I gonna use this thread to add my issue with Compilation Manager.

Repro and workarounds included :slight_smile:
https://answers.unrealengine.com/questions/678150/bp-compilation-manager-worldcontextobject-is-null.html

The Compilation Manager did weird things to my project. Any small blueprint change resulted in compile times up to 5 minutes +… after turning it off, back to 5-10 seconds on longer blueprints.

You should definitely share your project. It would help a ton for them as it was when I did so. ^^

I am guessing a little bit here, but the cause of your performance regression should be fixed in 4.18. The old compiler would try to skip unneeded dependency compilation and in 4.17 the compilation manager would not. In 4.18 there’s a filter pass in the compilation manager that removes recompilation of dependencies if a blueprints public interface was not changed since the last compile.

Internally, even when we recompiled all dependencies, we saw big performance wins, but that result was not as universal as I thought.

Ah, didn’t know there was a thread already on this. Hopefully a 4.17.3 hotfix is warranted. But in 4.18 the issue persists. Just tested it. Some BPs just outright crash to desktop.

Did you try to clean up the cache? It often helps me with “weird issues” in various engines. I’m asking because I never experienced such issue and I don’t see many people talking about this.

I’d just nuke entire project’s cache, all the subfolders. Maybe even UE4 cache hidden in user folder on C:
I’d say it have like 10% chance of helping you… still worth trying! :wink:

>Ah, didn’t know there was a thread already on this. Hopefully a 4.17.3 hotfix is warranted. But in 4.18 the issue persists. Just tested it. Some BPs just outright crash to desktop.

Can you share a test case with us? Or your whole project? You can PM me a link to download a project or asset bundle.

To clarify, i’m interested in the crash. Can you provide a callstack and/or logs?

I thought I would note that I get unusually long compile times in my project when compiling my CharacterBP in 4.18.1. After adding only a handful of features it’s taking several (3-5) seconds to compile. Seems not normal as I have had several projects with much more complex BP that compile much faster.

This is even more of an issue in 4.19, where, if we disabled Compilation Manager, the darn BP stays dirty… And if we leave it on, compile times take 50-75% longer on average

Thought it worth mentioning that I found the compiling manager to be incredibly powerful until I tried to play multiplayer. Client joining the server in Play in New Window crashes the whole editor to desktop.

Not sure I have any way of pinpointing the problem - I am using various shared structs and parent/child actors - but just my two cents that this is an awesome tool and looking forward to checking it out again in the future!

Summoning @Dan.OConnor for clarification on these new issues!

How do I turn off the Compilation Manager?