i been trying to understands this for a few days already but i still don’t get it
what is netUpdateFreq? if i set this value at 100 does that mean it replicates 100 times per second? and if so what happens when the fps of the host is below that? lets say 70fps, does that mean the variable replicates only 70 times per second?
how does this relate to dedicated server tickrate? i thought the server tickrate was the amount of times data is being sent per second, so if server tickrate = 30 it sends data only 30 times per second. What happens if i set a netUpdateFreq of 100 and a server tickrate of 20? is this variable replicated 100 or 20 times per second?
I’m not a super expert in the subject, but for what I’ve learned so far; NetUpdateFrequency is just the max number of tries per second an actor is going to try to send an update. I’m assuming it won’t try more than once per tick though. So if your “sender” is at 100 fps, and the “receiver” is at 20 fps, the way UE4 handles it would depend on the “Reliable” setting of the data sent over. Reliable means is going and try to figure out what to do with all 100 packages, Unreliable means is not going to bother to catch the missing 80.
Your server just can’t run the script more than once per tick, and 30 fps means 30 ticks per second, making that 30 ceiling of actual tries made. NetUpdateFrequency is just the max. but overall is most often than not be determined by the fps.
Which is why a high performance expensive to run game would wanna do multiplayer with a Dedicated Server.
A Dedicated server is just the back-end, so no graphics or sound or UI. So it can run at much higher framerates than any client of the game could.
I have given you an upvote for at least contributing.
My question though is that there is no reliable/unreliable setting for the replication of an actor or pawn. There is for a variable. Any idea why? I am trying to work it all out and if you have any useful links I would be grateful.
Reliable means it is going to re-send the packet if the packet was not acknowledged (aka lost). Unreliable gets sent just as frequently as reliable packets until the channel becomes saturated, then it starts to discard packets before they are even sent.
Variables work a little different from RPC’s. When a variable change on the server it will be updated on the client at a interval. This is why variables sometimes skip intermediate values since the server only send the most recent value. If the value is unchanged nothing is sent.
Thanks for the explanation Garner but I am quite happy with the concept of reliable/unreliable (tcp v udp) . It is the use made of them by the unreal engine that I am not totally clear on. I am now presuming that the actor replication is reliable by default but I am not really sure.
I had a problem that a client in a networked game would see a physics enabled pawn twitch about once per second and I wondered if it was dropped packets. I have since solved the twitch by changing how often the physics replication enforces a hard snap. This seems to have cleared it up so my problem was more to do with the character movement component I think, with the client being corrected by the server at intervals.
I would still like more detail on how exactly unreal engine goes about its business and what tools there are to trace and investigate behaviours. Maybe I will find it one day.
That is exactly the sort of thing. I suspect there a load of console commands that would help. I really should spend a week or two just finding out what is there really. Thanks for that one though. I will certainly give it a test. Much appreciated.