Networking Profiling Questions

TLDR : Networking problems and profiling shenanigans

Context

We are developing a VR multiplayer lan game and we are having replication errors. Our replicated actors (including our pawns) are jittery and it looks like packet loss / network saturation. In order to better understand the profiling tools, I have created myself a simple debug stress test project from the fps template with an automatic set of actions and netprofile. I would like some help in understanding the results I got.

How to reproduce

  • Download the following project : NetworkProfiling_423 - Google Drive

  • Set the amount of players to 3 or 4

  • Press Play

  • A netprofile command will start in the background, then the 3rd player will fire for 5 seconds, wait 5 seconds, fire for 5 seconds, wait for 5 seconds, fire for 5 seconds, wait for 5 seconds, the netprofile command will end and the game will close.

  • Open the networkprofiler.exe

    • It should the executable should be located at : [Unreal Engine Install Directory]\Engine\Binaries\DotNET
    • I recommend the version from 4.26, as I had bugs in the 4.23 and 4.25 versions
  • Open the “.nprof” file that was generated located in the project folder under “Saved\Profiling”

    • Alternatively, you can open the 2 files that are already there that I generated on my machine.

You should see graphs in the application.

Questions

1 - The client that fires gets permanently slower then the others. Even though the spawning occurs on the server.

  • Ownership shenanigans?

2 - The update rate of is half of what it should be

  • When I test it, the update on the client is half of the framerate of the server (Before the firing happen). And with a Net Update Frequency of 100 I would expect the update rate on the clients to be at least the framerate of the server.

3 - Even though the number of bytes exchanged is small (550kb over 35 seconds), the update rate in game falls slow (3 update per sec)

  • I would expect either the number of kb to be really high or to not have network saturation but the numbers I see (about 16 kb/s) seems really reasonable to me. So I’m not sure what is going on.
  • Part of me think firing 150 bullets is somewhat high but the impact is much higher than I would expect. Also, part of me think about strategy games and MOBAs and MMOs and 150 replicating actors doesn’t seem that high. So I’m not sure what is going on.

4 - 127.0.0.1:17777 which I assume is the server give me nothing in a lot of categories :

  • Actor Count
  • Property Bytes
  • Property Bytes/s
  • Events
  • Actor Count
  • Property Count
  • Property Count/s
  • Export Bunch Count
  • Export Bunch Count/s

Is it normal?

5 - There seems to be a limit/plateau on data per seconds ON CLIENTS

  • Can be observed on :

    • Outgoing Bandwidth Bytes/s (10 000)
    • Property Bytes/s (5000)
    • Actor Count/s (1250)
    • Property Count/s (500)
    • Send Bunch Count/s (1000)
    • Send Bunch Bytes/s (800)
    • Game Socket Send Bytes/s (900)
  • Is that an

    • Engine limitation?
    • Cvar limitation?
    • Lan limitation?
  • Is there a way to break it?

6 - What is Ack Count?

7 - In a lot of categories ON SERVER, the number of something is increasing but the per seconds is decreasing

  • Can be observed on :

    • Outgoing Bandwidth Bytes VS Outgoing Bandwidth Bytes/s
    • RPC Count VS RPC Count/s
  • This is not happening on clients

Outro

Any help on those questions would be greatly appreciated. Hope you have a great day and thanks for making it this far.