[4.3.0, 4.4.0 preview] Editor pauses for about 10 seconds when using BSP's, PIE, or Building Geometry

Hi. I have large landscape with many foliage. Objects count in my level: 44450, memory used by Editor: 2Gb.

My PC: inte i5 4570, Nvidia GTX 660, 8 Gb Ram, Windows 8.1 64 bit.

I move or change size of any BSP, or add new BSP, or PIE/simulate, or “Build geometry”. Then Editor don’t respond for about 10 seconds. It infuriates. How to get rid of this?

Thanks.

Text after my action from my “Output Log”:

If action with BSP:

LogInstancedFoliage: Map Rebuilt - Update all BSP painted foliage!
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_42) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_10) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_11) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_12) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_13) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_15) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_17) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_3) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_128) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_0) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_1) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_2) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_24) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_26) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_28) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_29) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_33) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_40) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_43) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_44) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_45) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_46) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_47) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_48) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_49) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_50) Not registered. Aborting.
LogSkeletalMesh: UPhysicsAssetInstance::InitInstance : Could not find root physics body: CharacterMesh0 
Cmd: UpdateLandscapeEditorData

If PIE:

BlueprintLog: New page: Pre-PIE auto-recompile
LogPlayLevel: [PIE] Compiling PersistentLevel_LevelScript before PIE...
LogBlueprint:Warning: [compiler] Warning Unable to find variable with name 'RadialForce1' for  Get RadialForce1 
LogBlueprint:Warning: [compiler] Warning [2060,66] Compile of PersistentLevel_LevelScript successful, but with 1 Warning(s) [in 3 ms]
LogPlayLevel: PIE:  Blueprint regeneration took 101 ms (1 blueprints)
PIE: New page: PIE session: Example_Map (17 Jul 2014 05:10:49)
LogNavigation:Warning: ARecastNavMesh: Unable to serialize navmesh when build is in progress or navmesh is not up to date.
LogBlueprint:Warning: FMemberReference::ResolveMember (GetOwner) bSelfContext == true, but no scope supplied!
LogBlueprint:Warning: FMemberReference::ResolveMember (K2_GetActorLocation) bSelfContext == true, but no scope supplied!
LogBlueprint:Warning: FMemberReference::ResolveMember (GetVelocity) bSelfContext == true, but no scope supplied!
LogBlueprint:Warning: FMemberReference::ResolveMember (AddActorLocalRotation) bSelfContext == true, but no scope supplied!
LogBlueprint:Warning: FMemberReference::ResolveMember (K2_GetActorLocation) bSelfContext == true, but no scope supplied!
LogBlueprint:Warning: FMemberReference::ResolveMember (GetOwner) bSelfContext == true, but no scope supplied!
LogBlueprint:Warning: FMemberReference::ResolveMember (K2_GetActorLocation) bSelfContext == true, but no scope supplied!
LogBlueprint:Warning: FMemberReference::ResolveMember (GetVelocity) bSelfContext == true, but no scope supplied!
LogBlueprint:Warning: FMemberReference::ResolveMember (AddActorLocalRotation) bSelfContext == true, but no scope supplied!
LogBlueprint:Warning: FMemberReference::ResolveMember (K2_GetActorLocation) bSelfContext == true, but no scope supplied!
LogPlayLevel: PIE: StaticDuplicateObject took: (0.579198s)
LogPlayLevel: PIE: World Init took: (0.000732s)
LogPlayLevel: PIE: Created PIE world by copying editor world from /Game/Maps/Example_Map.Example_Map to /Game/Maps/UEDPIE_0_Example_Map.Example_Map (0.580193s)
LogWorld: Game class is 'Game_C'
LogSkeletalMesh: UPhysicsAssetInstance::InitInstance : Could not find root physics body: CharacterMesh0
LogWorld:Warning: *** WARNING - PATHS MAY NOT BE VALID ***
LogWorld: Bringing World /Game/Maps/UEDPIE_0_Example_Map.Example_Map up for play (max tick rate 0) at 2014.07.17-02.10.57
LogWorld: Bringing up level for play took: 8.171125
LogPlayerController: Spawned spectator SpectatorPawn_3 [server:1]
LogGameMode: RestartPlayer 259
LogPlayerController: ClientRestart_Implementation Player_C_2
LogPlayerController: ServerAcknowledgePossession_Implementation Player_C_2
LogBlueprintUserMessages: false
PIE: Info Play in editor start time for /Game/Maps/UEDPIE_0_Example_Map 8,21
LogParticles: Destroying 0 GPU particle simulations for FXSystem 0x0000003FA6F21DA0

Depending on your engine version there may be an option to tell BSP not to auto build which causes many problems. I think they removed/moved it in 4.3 so not sure on which engine version this existed in. If you turn it off you will have to do your own “Build Geometry” from the viewport Build menu to update your brushes.

It’s talked about in the answer to this post:

“Try turning off update bsp automatically. This is located in Edit>EditorPreferences>Miscellaneous. There is a known bug with this specific feature that is causing slow and freeze issues.”

Thanks you.

Comment to RimmyD’s answer.

I turn off “Update BSP Automatically” and “Build geometry” from building menu (in UE4.3.0).

See my “Output Log” after moving BSP-box and “Build geometry” (it take 15 seconds):

MapCheck: New page: Map Check
Cmd: MAP REBUILD ALLVISIBLE
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_42) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_10) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_11) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_12) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_13) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_15) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_17) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_3) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_128) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_0) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_1) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_2) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_24) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_26) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_28) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_29) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_33) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_40) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_43) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_44) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_45) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_46) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_47) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_48) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_49) Not registered. Aborting.
LogActorComponent: UnregisterComponent: (/Game/Maps/Example_Map.Example_Map:PersistentLevel.Landscape1.SplineMeshComponent_50) Not registered. Aborting.
LogRenderer: Adding SpeedTree wind for static mesh Broadleaf_Desktop
LogSkeletalMesh: UPhysicsAssetInstance::InitInstance : Could not find root physics body: CharacterMesh0
Cmd: MAP CHECK DONTDISPLAYDIALOG
MapCheck: New page: Example_Map - Jul 17, 2014, 7:15:18 PM
MapCheck: Info ========== Map Check: 0 Error(s), 0 Warning(s), [111.537ms] ==========
LogEditorBuildUtils: Build time 0:00:15
Cmd: UpdateLandscapeEditorData

Hi ,

Can you post a copy of your dxdiag here? I have thus far been unable to reproduce this effect on my end. Thank you!

my dxdiag

Hi ,

Have you been able to reproduce this in a clean project with no additional content?

I have large landscape with many foliage. You may create own map with many foliage (average 230 000 foliage objects: grass, trees) and see this lag.

Well that is the problem for certain. When you have a large landscape with a lot of foliage being rendered all at once it will cause lag no matter what your system specs are. What you will want to do is use cull distance to only render the foliage you can see at that moment, which will reduce your draw calls immensely. I would also recommend level streaming for different areas of your map to prevent rendering a lot of unnecessary portions of the map at once. You can use the “move to level” landscape feature to move individual tiles of landscape to sublevels in the levels window to help you determine how you want streaming to occur.

Foliage in my level rendered NOT all at once, i use “Culling” and “Clustering”.

I understand, geometry is in conjunction with vegetation, and after build geometry engine corrects all vegetation. But the engine corrects all vegetation on a level that is not reasonable.

It would be wise not to update the all vegetation when compiling geometry and allow the user to correct himself vegetation after compiling geometry.

If i don’t right, sorry.

I can’t use level streaming because NavMesh don’t work with it.
“Move to level” landscape uncomfortable to use, thanks.

Unfortunately without some form of level streaming or other method to reduce the amount of data being rendered, the engine will run slowly as you have mentioned. You can potentially use static meshes instead of bsp’s to alleviate some of this (and eventually bsp’s should be converted to static meshes to reduce their resource cost anyways), but otherwise this delay more than likely will continue to increase as you put more information into the editor. Another option would be to lower the LOD on your meshes the further you move away from them until they are culled out completely to try and reduce the information present all at once. Turning off “update bsps automatically” in the Editor preferences window and realtime in the viewport may help alleviate some of the slow responsiveness. Finally, you can use sublevels to hold data such as lighting, static meshes, etc. so that you can turn those sublevels off when not working on them, reducing the amount of data being rendered while you are in the editor.

Yes, i know this things, anyway thanks. But this sublevels slowest the development process.