PIE Auto-compile all BP causes long loadtime

Hi I’m beginning to realize what is causing my 20seconds delay for every PIE session.

BlueprintLog: New page: Pre-PIE auto-recompile
LogPlayLevel: [PIE] Compiling BP_AIControllerInfantry before PIE...
LogPlayLevel: [PIE] Compiling BP_CoverNode before PIE...
LogPlayLevel: [PIE] Compiling BP_CoverZone before PIE...
LogPlayLevel: [PIE] Compiling BP_AIThreatObject before PIE...
LogPlayLevel: [PIE] Compiling BOTFUNC_UpdateGoal before PIE...
LogPlayLevel: [PIE] Compiling BTD_HaveCover before PIE...
LogPlayLevel: [PIE] Compiling BTT_CheckCurrentCover before PIE...
LogPlayLevel: [PIE] Compiling BTT_CheckDestinatioNCover before PIE...
LogPlayLevel: [PIE] Compiling BTT_FindCoverNode before PIE...
LogPlayLevel: [PIE] Compiling BTT_UpdateCoverScores before PIE...
LogPlayLevel: [PIE] Compiling BP_AIDebugHUD before PIE...
LogPlayLevel: [PIE] Compiling BP_PCPlayerController before PIE...
LogBlueprint:Warning: [compiler] Warning Unable to find variable with name 'UpdateUI UseBar' for  Get UpdateUI UseBar 
LogBlueprint:Warning: [compiler] Warning Unable to find variable with name 'UpdateUI UseBar' for  Get UpdateUI UseBar 
LogBlueprint:Warning: [compiler] Warning Unable to find variable with name 'UpdateUI UseBar' for  Get UpdateUI UseBar 
LogBlueprint:Warning: [compiler] Warning [0875.26] Compile of BP_PCPlayerController successful, but with 3 Warning(s) [in 38 ms]
LogPlayLevel: [PIE] Compiling AITestMap-2 before PIE...
LogPlayLevel: [PIE] Compiling PC_FPS_Hud before PIE...
LogPlayLevel: [PIE] Compiling BP_BaseInfantry before PIE...
LogPlayLevel: [PIE] Compiling BP_InfantryPawn before PIE...
LogPlayLevel: [PIE] Compiling BOTFUNC_UpdateEnemy before PIE...
LogPlayLevel: [PIE] Compiling BTD_HeadingToCover before PIE...
LogPlayLevel: [PIE] Compiling BTT_MoveToGoal before PIE...
LogPlayLevel: [PIE] Compiling BTT_ShootWeapon before PIE...
LogPlayLevel: [PIE] Compiling BTT_TargetEnemy before PIE...
LogPlayLevel: [PIE] Compiling BTT_UpdateCoverReg before PIE...
LogPlayLevel: [PIE] Compiling BP_PCHUD before PIE...
LogPlayLevel: [PIE] Compiling BP_PlayerChar before PIE...
LogPlayLevel: [PIE] Compiling BP_AIBaseChar_Infantry before PIE...
LogPlayLevel: [PIE] Compiling ASP_AnimBP before PIE...
LogPlayLevel: [PIE] Compiling Default1PArms_AnimBP before PIE...
LogPlayLevel: PIE:  Blueprint regeneration took 19476 ms (27 blueprints)
PIE: New page: SIE session: AITestMap-2 (Dec 3, 2014, 2:42:32 AM)
LogPlayLevel: PIE: StaticDuplicateObject took: (0.057551s)
LogPlayLevel: PIE: World Init took: (0.000828s)
LogPlayLevel: PIE: Created PIE world by copying editor world from /Game/Maps/AITestMap-2.AITestMap-2 to /Game/Maps/UEDPIE_0_AITestMap-2.AITestMap-2 (0.058691s)

Apparently the BP attempts to recompile everything at every PIE. Is there a way to prevent this? Or a buttom to pre-compile everything. 20 seconds load time for PIE is very long.

“LogPlayLevel: PIE: Blueprint regeneration took 19476 ms (27 blueprints)” <— this is where the Evil is.

Is there a solution to this?

I’ve yet to receive any feedback to this issue perhaps I can summarize the question to better help the support team:

  1. It’s there a reason why all these un-dirtied BP is force to compile every time PIE starts?

  2. It’s there a way to compile all these ‘somehow’ dirtied BP so I don’t have to wait 30 seconds for every PIE?

+1, I’d like to know the answer to this question too.

Edit: Not sure if you’ve already see this but Edit->Editor Preferences->Level Editor-Play has an option ‘auto recompile blueprints’,

In my case recompiling the character blueprint is what triggers the issue. I understand that my character BP is referenced in many places and all those blueprints are marked dirty too but I hope there is a better way to handle this; recompiling (nearly) every BP in the game for just touching the character BP makes testing even small changes tedious. What’s worse once this happens even once, thereafter it recompiles all scripts at PIE every single time regardless of whether any blueprint was actually modified!

BP is referenced in many places and all those blueprints are marked dirty too but I hope there is a better way to handle this

+1

I manage to figure out a semi-solution.

  1. You can off auto-compile at PIE . so they ask you if you would like to compile. Apparently you can just compile the dirtied blueprint and ignore the rest.

  2. Using Interface ( instead of casting ) significantly reduces dependencies.