UNET NetworkServer.Spawn intermittently not called on clients

I’m having issues where roughly 50% of the time, a NetworkServer.Spawn() call on the server will not spawn the corresponding prefab on clients. After three 10 hours days straight of trying to resolve this issue, as well as trawling the forums for existing bug reports, I’m turning to the forums for the first time :slight_smile:

  • I’ve verified that my ClientScene.Prefab() call is being made.
  • The object being spawned has NetworkIdentity component at its root.
  • The object being spawned has a NetworkBehaviour child script at its root.
  • I’ve verified that the NetworkServer.Spawn() call is being made correctly with a non-null prefab on the Server side.
  • Once the Spawn call is made on the server, nothing appears on clients and I receive the following warning on clients “Did not find target sync message for X” where X is an integer.

It’s probably worth noting that I’m working in a prototype Scene of a much larger project and I’m using the build-in Unity classes (e.g NetworkManager) to obtain the initial connections.

I appreciate that code snippets would aid greatly, although the project itself is tens of thousands of lines, which would mean posting highly edited code for the sake of brevity. That could result in the editing out of the cause.

Any ideas are greatly appreciated!

For anyone that comes across this in the future:

The NetworkServer.Spawn call makes use of the QoS channel set as ‘0’ in your NetworkManager object. Ensure that this is set to an assured delivery channel (such as reliable sequenced) or override the channel used by the script performing the spawn call to point to an assured delivery channel.