What is a reasonable amount of BPS In/Out for network traffic?

Hey guys, I’ve been grinding away in the networking mines, and yesterday something just clicked, it all started to make sense and my game is finally close to being Multiplayer Ready.

HOWEVER, I have zero frame of reference for how much network traffic I should have in my game. Is this a lot? Am I going to be running into performance problems? I’ve been using Reliable functions rather liberally, but I’ve tried to minimize calls as much as possible, but I’m not sure it’s enough.

I’m also hoping that this question can find other people in the future that have the same question I do, as there’s not really a place to go for “target performance stats” as far as I’m aware.

Anyway, thanks for reading, here’s a screenshot of my stat net graph.

327364-image-2021-01-16-123410.png

Net Tick averages around 0.17ms, maxes out around .4ms when wild stuff is going on.

I haven’t seen the max BPS go above 6000, which I think is good as long as people aren’t playing on dial-up? But I donno, this is all so new to me.

Love you guys, good luck dev’in.

Hi TheCuddlyRoman

I took a quick look and nothing major jumps out. It really depends on the target specs of the hardware and how many users are going to be connecting to a single session.

I would watch how many reliable events you have. Only events that ABSOLUTELY must be called should be reliable and never have anything reliable on tick (or somewhere where it’s going to be repeatedly called).

When it comes to network applications, I would find a way to stress-test the application (launch multiple instances) and automate some of the logic so you can see how the server handles performance in different scenarios. It is time-consuming but it’s better to work out some of these problems before release.

Good luck!

Alex

Awesome, thanks Alex!

I also noticed there was an option to “Enable Network Emulation” in the Play section of project settings, so the multiple instances behave as if there is latency, and that seems to give me a good idea of what needs to be optimized, but it’s only for latency, not for actual bandwidth.

There are built in elements inside the PlayerState class such as “ping” which you can query to track users responses to and from the server.

I would also recommend you check out the replication graph introduced in 4.20. This is designed to work with applications with larger user basis. This way you can track exactly which data is replicating from the server and the time for such processes to execute. You can then identify specific actors which could be causing any potential problems. You can also control when actors go dormant to ensure they are only transmitting data when they are required.

I am sure there is an EPIC video out there where they break down the replication graph used in Fortnite or a similar game. (It’s been a while since I have used it).

Hope this helps.

Alex

Wow I had no idea about those!! That’s awesome, thanks dude. Seriously.