Question about Networking Profiling

Greetings everyone.

I am working on deepening my understanding of the networking limitations and how to profile them. I modified a first person template to record a net profile and then fire 3 times 50 replicated bullets. I also created an actor that is moved by the server and that displays how many times it moved (so that clients can measure how often it gets updated). When I record all of that and check the .nprof file. I get confused by some of what I see and would like to start a conversation about it, hopefully shedding light on this in the process.

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.