Unreal Engine Livestream - Networking in UE4: Server Optimizations - Jan 17 - Live from HQ

Join us for our weekly Unreal Engine livestream. This week we’ll be joined by Ryan Gerleve and Dave Ratti to discuss general server optimization in UE4, as well as techniques and solutions to improve your Actors’ performance in a networked environment. In addition to this, they’ll provide insight into the Replication Graph and answer any questions you may have.

Thursday, Jan 17 @ 2:00PM ET - Countdown


Dave Ratti - Technical Lead
Ryan Gerleve - Lead Network Programmer
Tim Slager - Community Manager - @kalvothe](http://www.twitter.com/kalvothe)
Amanda Bott - Community Manager - @amandambott](http://twitter.com/amandambott)

Have questions on the topic? Toss them in the comments below and we’ll try to answer them on the livestream!

What Never Was


Baroque Room



Ohh great!! Can’t wait!

Perfect cannot wait!

Hi, I’m kind of new on UE4 but I work a lot with web, docker, aws and k8s, and I have a lot of questions:

  1. to ship a production server or a docker image, is there a ideal base image like alpine, ubuntu or debain?
  2. are other important stuff to optimizations like char encoding encoding or network setup in the image?
  3. when you should consider multiple servers like using k8s is there a metric for concurrent users or latency?
  4. Is there a place to find more materials about using containers to ship UE servers?

how do you stream

  1. Are there any plans to refactor GameplayCues to use some modern engine facilities ? (AssetManager).

  2. Any particular reason why, replication of variables/dispatching of RPC is single threaded ?

  3. If there is a lot, and I mean a lot of replicated properties, does all of them must be iterated at the end of tick to see if the changed, or is there way to tell engine, “look I’m sure it didn’t changed and I will tell you when it does”.

Your countdown timer is for 2am. :wink:

great topic for a stream… so much information one needs for networking in Unreal… looking forward to it !

lol & the countdown IS set to 2 am ^^^ @VictorLerp @Kalvothe

wow can I join your coding team I wanna learn to code that’s my dream please

  1. How can we force relevancy for actors in Replication Graph for specific connections, regardless of net cull distance - while still benefiting from the priority-based replication?

I’ve created nodes which add actors to relevancy, but they are still culled by Net Cull Distance regardless. Currently the only way around this is to force replication graph to set DistancePriorityScale to zero for the objects entire class. They are still culled by spatial nodes, but no longer benefit from priority-based replication.

Also, there are several legacy network relevancy conditions that exist in actors that replication graph still doesn’t support (such as objects the player ‘owns’ always being relevant to them regardless of culling) - will this stuff come back?

What happened to the stream is it going to happen? it said 2.00 a.m and then 2.00 p.m. Has it been postponed?

great!!! :slight_smile:

I believe what you are looking for is Net Dormancy for the actors that dont need to be updated. This stream covers this technique pretty well!


anyone have any idea where to find this timer value in the engine https://youtu.be/mT8VUVuk-CY?t=4328 ? to change from 32bit float to higher precision?

NetDriver.h - line 385 is probably a good place to start.

Did this video come out before the network PushModel? I’d be curious about tips/suggestions/etc regarding using the push model along side relevancy and dormancy. A lot of the internal engine classes use the pushmodel presumably to avoid the overhead of checking for replication changes.

Also, an unrelated question about dormancy and ForceNetUpdate();

How does dormancy interact with relevancy? Surely actors can’t be completely skipped by the network/replication logic when dormant if there are still moment to moment relevancy changes occuring, such as cull distance.

Does ForceNetUpdate(); circumvent the normal relevancy checks? (cull distance, etc)? Meaning when you ForceNetUpdate();, are you forcing replication to players potentially outside your relevancy bubble?

If not, and if the actor is then dormant, when a client comes into range of a dormant actor, how are they getting accurate state?