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 :slight_smile:

Does anyone have idea’s how to fix this?

Unity Version 5.3.2f1

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.