- Home /
Many Network Transforms kills framerate
In an overly simple project to test the networking system we decided to spawn many objects to see where the limit of the networking system lies.
To our surprise we started seeing serious framerate degradation after ~8000 objects.
The objects are simple :
Network Identity
- Network Transform
(Child object is a cube)
Mesh Filter
Box Collider
Mesh Renderer
after spawning ~8000 of these the frame rate dropped to about 25fps even though their send rate is set at 0.
Having a look at the profiler the biggest probem seems to come from
NetworkTransform.FixedUpdate
NetworkTransform.Update
In a multiplayer environment (lets say open world) 8000 objects is not exactly that many.
Now, I'd be the first to say I am not a networking expert, and if for some reason all these objects should not have this specific transform it would be fantastic if someone could enlighten me :)
Does anyone have idea's how to fix this?
Unity Version 5.3.2f1
Answer by dansitnick · Apr 14, 2016 at 07:58 PM
This isn't a bug with a "fix" like you're saying. If I was trying to run a super high end game in 4k at 120fps on a Macbook, and it ran slowly, you wouldn't assume "There's some serious framerate degradation, how do I fix it?"
The "fix" you're looking for is this: Don't send 8000 objects over multiplayer.
If you're looking to run a smaller multiplayer game, like a shooter or a MOBA, you only need a few objects per player, since the level's objects don't need to be synched over the network. You should never need to send more than 50 objects at a time.
However, if you're actually looking to build an MMO, you don't need to know all locations of all players at once. You only receive the players if they're within a fixed distance. So if you're in a town, you should only receive the data of the other people in that town, you don't need the location of someone across the map.
Your answer
Follow this Question
Related Questions
Unity 5: RigidBody or No RigidBody? 1 Answer
[Unity3d 5.1] Multiplayer - Multiple match - dedicated server 1 Answer
Unet NetworkServer.Spawn() not working 5 Answers
UNET: Check if Server is hosted on IP Address 2 Answers
How to synchronize disable and enabling game objects over the network? 0 Answers