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.