UNetConnection: unintended bandwidth throttling

The issue is the logic for claming `BandwidthDeltaTime` in `UNetConnection::Tick` to 1.0f / DesiredTickRate with DesiredTickRate typically at 120 Hz independent of a actual framerate.

A proposed fix can be found on UNetConnection: prevent unintended bandwidth throttling; clamp hitch window to 100 ms by NorbertNemec · Pull Request #13731 · EpicGames/UnrealEngine

Steps to Reproduce

  • run any network-heavy demo at 30 FPS
  • observe the variable UNetConnection::CurrentNetSpeed, which is supposed to defined the current throttling in bytes/second
  • observe that the traffic is actually throttled at about 1/4 of that value

Hi,

I can confirm that your pull request has been received in our internal tracker, and it will be routed to the appropriate subject matter expert for review as soon as possible.

In the meanwhile, I’ve linked to this EPS thread on our internal tracker, so the SME may reach out here if they have any further questions on the PR.

Thanks,

Alex

Several months later, the problem persists and continues causing issues. Back then, my PR was quickly rejected without much explanation. I can only assume that this was due to the fact that it was implemented without an option to preserve the buggy behavior. I have therefore created a much more conservative solution that keeps default behavior unchanged and only offers a CVar that can be changed to fix the bandwidth trottling issue:

UE UNetConnection: implement alternative clamping logic for BandwidthDeltaTime by nonemec-havok · Pull Request #14403 · EpicGames/UnrealEngine

Please consider this solution with the same priority as the original approach and give me clear feedback if there still are reasons to reject it.