Skip to content

[Steam Audio UE] BUG: SimulationUpdateInterval NEVER RESETS in SteamAudioManager::Tick() #539

@Aper-mesa

Description

@Aper-mesa

Bug

SimulationUpdateTimeElapsed never resets, causing SimulationUpdateInterval to have no
effect after first trigger

Plugin version: 4.8.1

Description

FSteamAudioManager::Tick() accumulates SimulationUpdateTimeElapsed but never resets it after
the interval threshold is crossed. As a result, SimulationUpdateInterval only throttles the
reflection/pathing simulation for the first interval window. After that, the elapsed time remains
permanently above the threshold and the simulation runs every single frame, regardless of what
value SimulationUpdateInterval is set to.

Root Cause

SteamAudioManager.cppFSteamAudioManager::Tick():

SimulationUpdateTimeElapsed += DeltaTime;
if (SimulationUpdateTimeElapsed < SteamAudioSettings.SimulationUpdateInterval)
    return;

// SimulationUpdateTimeElapsed is never reset here ← bug
if (ThreadPool && ThreadPoolIdle)
{
    // ... run reflections / pathing
}

SimulationUpdateTimeElapsed is only zeroed in ShutDownSteamAudio(), not after each
successful simulation update.

Fix

Add a reset immediately after the interval check passes:

  SimulationUpdateTimeElapsed += DeltaTime;
  if (SimulationUpdateTimeElapsed < SteamAudioSettings.SimulationUpdateInterval)
      return;

  SimulationUpdateTimeElapsed = 0.0f;  // ← reset so the interval is respected every cycle

  if (ThreadPool && ThreadPoolIdle)
  {
      // ... run reflections / pathing
  }

Impact

  • SimulationUpdateInterval is completely non-functional as a CPU throttle after the first
    trigger, causing unnecessary per-frame reflection/pathing simulation.
  • Any runtime quality setting that exposes SimulationUpdateInterval to the player will appear
    to have no effect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions