

I’ve added calls to Super in our code and removed a zillion or so tickfunctions and the associated perf hit as a result. The ::TickComponent function does check bIsActive and skip a lot of the work if it’s not, but it shouldn’t be ticking at all. This means that inactive FModComponents continue to tick, cluttering up the tick lists. The problem is that void UFMODAudioComponent::Activate(bool bReset) and void UFMODAudioComponent::Deactivate()įail to call Super::Activate() and Super::Deactivate(), which is where ticking gets turned on and off by default.


I will look into forcing the component to perform necessary updates at the start of playback if it doesn’t already.Ĭould someone shed some light on whether this would cause issues and would steps could be taken to resolve them?Īs it happens, I’ve been looking at this myself for Earthfall. If the game tick falls below this, the physics engine will still simulate 10 FPS. There were a lot of components in actors that were ticking despite not having Auto Activate on and not being told to play.Īgain I am unsure if this would break anything since I know some UE4 components like to tick all the time just to maintain correct positioning. The time-step is the simulation-time elapsed between two steps of the. I have asked more audio capable coworkers to have a listen and see if they notice anything.įor us this reduced the number of ticks in our main level from over 1100 to about 300. I am unsure if this will break anything with FMOD or cause any issues with the sounds maybe being out of place for the first frame of playback starting but I haven’t noticed any issues. The tick function after modification looks like this: Super::TickComponent(DeltaTime, TickType, ThisTickFunction) I modified this by adding an else to the end of the if to turn off the component tick. UPROPERTY(Category Service, EditAnywhere, AdvancedDisplay) uint32 bCallTickOnSearchStart : 1 / if set, next tick time will be always reset to service's. The tick function in the component currently looks like this: Super::TickComponent(DeltaTime, TickType, ThisTickFunction) I am unsure if this is something to do with the way UE4 handles components and keeping them up to date but I found that the tick is never set to false if the component starts inactive (bAutoActivate = false). If there is a case when you need to tick every frame, do it. If not, make use of timers, timelines, or custom events. Take a look at your ticks and ask yourself if you need to check the code every frame, all the time. The component tick is set to false after playback is stopped but this isn’t true on load. The Tick event is not necessarily bad, but can often be replaced with a better alternative. So as part of optimising our game I dug around in FMOD wondering why so many components were ticking.
