Performance and Bandwidth Tips

Some tips for optimizing the performance and bandwidth usage of Actor replication.

Windows
MacOS
Linux

Replicating actors can take time. The engine does its best to make this as efficient as possible, but there are a few things you can do to make this job easier.

When gathering actors for replication, the server will check a few things like relevancy, update frequency, dormancy, etc. You can tweak any of these checks to affect performance. When thinking about making this process as efficient as possible, it's best to prioritize in this order:

  • Turning off replication (AActor::SetReplicates( false ))

    • When is actor is not replicating, it's not on the list in the first place, so this is the biggest win, to make sure actors that don't need to replicate are marked as such.

  • Lower NetUpdateFrequency value

    • The less an actor updates, the less time it takes to update. It's best to make this number as low as possible. This number represents how often per second this actor will replicate to clients.

  • Dormancy

  • Relevancy

  • NetClientTicksPerSecond

Don't mark properties to replicate if they aren't absolutely necessary. It's best to try and derive state from existing replicated properties when possible.

Try to take advantage of the quantization functionality that already exists. e.g. FVector_NetQuantize. These will greatly reduce the size needed to replicate this state over to clients, and if used properly, shouldn't cause any noticeable artifacts.

FNames are not generally compressed, so when you are using them as parameters to RPCs, keep in mind that they will generally send the string each call. This can be a lot of overhead.

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback