When the FS_Materfield is ticking in PIE, it appears to create new “Add Noise Field” entities in TEDS every frame without ever cleaning up the old ones. Over time this causes the GameThread to slow down steadily as the Mass Entity editor subsystem has more and more entities to process. We’ve confirmed this on a completely empty level with just one Field System actor — no need to interact with anything, just pressing Play is enough to see the entity count climb in the TEDS Debugger. Disabling the component’s tick stops the growth immediately. This should only affects the editor.
[Attachment Removed]
Hi Xavier,
Sorry about the delay, and thank you for bringing this issue to our attention. I was able to repro it in all UE versions from 5.3 up to the latest source build. From my investigation, an FS_MasterField actor creates several new actor components every frame while active and ticking, and never cleans them up until the actor itself is destroyed. This not only happens with the “OnTick” and “OnTickWithDelay” activation modes, but also with others if “Use Lifespan” is enabled. The problem can also be detected by enabling “LogBlueprintComponentInstanceCalls 1” and “log LogBlueprint Log” on the console.
I just filed an internal bug report about this, here’s the tracking code: UE-371421. The link should become available once the engine devs mark it as public.
The simplest workaround for this is to enable/disable ticking on the Master Field as needed. Alternatively, if you want to have full control, you can create your own Field actor blueprint entirely, using FS_MasterField as a reference. The idea is that you first construct a field node graph/network by creating and configuring each desired node (you can do this only once). Then, you can call “Add Persistent Field” only once, or call “Add Transient Field” every frame that you want the field (resulting from the node graph) to be applied. Note that, unfortunately, there is currently no BP-like UI for creating these field node networks, so you must build them piece-by-piece using code. Here are some example available field nodes (C++ ActorComponent classes that can also be created and configured in BP):
- UUniformInteger
- URadialIntMask
- UUniformScalar
- UWaveScalar
- URadialFalloff
- UPlaneFalloff
- UBoxFalloff
- UNoiseField
- UUniformVector
- URadialVector
- URandomVector
- UOperatorField
- UCullingField
I hope this is helpful. Let me know if need any further assistance.
Best regards,
Vitor
[Attachment Removed]