Hello! I’m writing to ask about expected use-cases for the “Batched Ticking” feature recently added to the engine. My team has previously explored the concept of “Aggregated Ticks” (from this Unreal Fest talk by Rare) and they sound like similar features, but may have different goals. My initial evaluation of “Batched Ticks” is that it solves different problems or may be earlier in development. Tick functions are not batched by type, but instead by tick group and prerequisite. It seems I-cache and D-cache performance are not directly impacted with “Batched Ticks”.
Are “Batched Ticks” intended to solve similar performance problems that “Aggregated Ticks” addresses? Are there future plans to invest in this optimization area? Is the “Batched Tick” feature intended to solve something else?
Thank you for your atten
Steps to Reproduce
Discussion below.
Yes the batched tick system (tick.AllowBatchedTicks) was designed to deal with similar issues as is discussed in that talk, but it was designed to be simpler to enable and not require any type-specific setup. In some cases it is just as fast as the manual aggregation approach, but manual aggregation can have better cache coherency. It’s hard to predict which method will be better for a specific game as it depends on your exact setup.
For the cases we were looking at inside Epic, it made more sense to update objects of specific types using Mass which has the best cache coherency but requires more work to set up. But, we still had many other types of objects that needed to tick (many of them blueprints) so type-based sorting didn’t help at all. Turning on the batched ticking still helped with cache coherency because it will often tick components of the same actor right next to each other (if they are registered at the same time), and the task overhead is significantly reduced.
Batched ticking in 5.5 should be good to use for simple actor/component ticks, but it does have a few subtle issues that were fixed in 5.6. 5.6 has a lot of other ticking/update improvements that we did to get the Witcher 4 tech demo running at 60fps. Some of the tech talks on the full schedule (specifically The Road to 60 fps) talk about the improvements.
TLDR is that the correct approach totally depends on your game, but batched ticking is easy to turn on and experiment with before trying other approaches.
Awesome, thank you for the details Ben! I’m glad to have your thoughts on this topic as the author of the batched tick changes.
This is helpful for our team as we evaluate the right solution for our workload. I’m looking forward to checking out the improvements in 5.6.