Unity 6.1.4, NGO 2.3.2
Using Client>Server Topology
When a client connects to the server I’m seeing two copies of the Player object get created on the client side only.
From looking at logs it seems this may be a bug with NetworkSceneManager.
For context I’m testing this on a local machine, doesn’t matter if it’s in builds or running Play Mode Scenarios, guessing it might be NetworkSceneManager jumping the gun on (re?)syncing because the initial scene load/sync happens near instantaneously vs. network latency giving it an opportunity to realize the 2nd sync isn’t needed.
For now I’ll be hacking around this by checking on state of Player object post instantiation and Destroying it if it’s not networked.
Logs below:
1st Player object Awake():
IdleMMO.NetworkedEntities.Players.Player:Awake () (at C:/Users/ben/Documents/Tahoma Eternal/tahoma-eternal/Assets/Scripts/Game/Players/Player.cs:32)
UnityEngine.Object:Instantiate<UnityEngine.GameObject> (UnityEngine.GameObject)
Unity.Netcode.NetworkSpawnManager:InstantiateNetworkPrefab (UnityEngine.GameObject,uint,System.Nullable`1<UnityEngine.Vector3>,System.Nullable`1<UnityEngine.Quaternion>) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Spawning/NetworkSpawnManager.cs:863)
Unity.Netcode.NetworkSpawnManager:GetNetworkObjectToSpawn (uint,ulong,System.Nullable`1<UnityEngine.Vector3>,System.Nullable`1<UnityEngine.Quaternion>,bool) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Spawning/NetworkSpawnManager.cs:840)
Unity.Netcode.NetworkSpawnManager:CreateLocalNetworkObject (Unity.Netcode.NetworkObject/SceneObject) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Spawning/NetworkSpawnManager.cs:891)
Unity.Netcode.NetworkObject:AddSceneObject (Unity.Netcode.NetworkObject/SceneObject&,Unity.Netcode.FastBufferReader,Unity.Netcode.NetworkManager,bool) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Core/NetworkObject.cs:3217)
Unity.Netcode.SceneEventData:SynchronizeSceneNetworkObjects (Unity.Netcode.NetworkManager) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/SceneEventData.cs:1137)
Unity.Netcode.NetworkSceneManager:HandleClientSceneEvent (uint) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/NetworkSceneManager.cs:2388)
Unity.Netcode.NetworkSceneManager:ClientLoadedSynchronization (uint) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/NetworkSceneManager.cs:2283)
Unity.Netcode.SceneEventProgress:<SetAsyncOperation>b__37_0 (UnityEngine.AsyncOperation) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/SceneEventProgress.cs:272)
UnityEngine.AsyncOperation:InvokeCompletionEvent ()
2nd Player object Awake():
IdleMMO.NetworkedEntities.Players.Player:Awake () (at C:/Users/ben/Documents/Tahoma Eternal/tahoma-eternal/Assets/Scripts/Game/Players/Player.cs:32)
UnityEngine.Object:Instantiate<UnityEngine.GameObject> (UnityEngine.GameObject)
Unity.Netcode.NetworkSpawnManager:InstantiateNetworkPrefab (UnityEngine.GameObject,uint,System.Nullable`1<UnityEngine.Vector3>,System.Nullable`1<UnityEngine.Quaternion>) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Spawning/NetworkSpawnManager.cs:863)
Unity.Netcode.NetworkSpawnManager:GetNetworkObjectToSpawn (uint,ulong,System.Nullable`1<UnityEngine.Vector3>,System.Nullable`1<UnityEngine.Quaternion>,bool) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Spawning/NetworkSpawnManager.cs:840)
Unity.Netcode.NetworkSpawnManager:CreateLocalNetworkObject (Unity.Netcode.NetworkObject/SceneObject) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Spawning/NetworkSpawnManager.cs:891)
Unity.Netcode.NetworkObject:AddSceneObject (Unity.Netcode.NetworkObject/SceneObject&,Unity.Netcode.FastBufferReader,Unity.Netcode.NetworkManager,bool) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Core/NetworkObject.cs:3217)
Unity.Netcode.CreateObjectMessage:CreateObject (Unity.Netcode.NetworkManager&,ulong,uint,Unity.Netcode.NetworkObject/SceneObject,Unity.Netcode.FastBufferReader,ulong[],ulong[]) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Messaging/Messages/CreateObjectMessage.cs:215)
Unity.Netcode.CreateObjectMessage:CreateObject (Unity.Netcode.NetworkManager&,Unity.Netcode.NetworkSceneManager/DeferredObjectCreation&) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Messaging/Messages/CreateObjectMessage.cs:204)
Unity.Netcode.NetworkSceneManager:ProcessDeferredCreateObjectMessages () (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/NetworkSceneManager.cs:3196)
Unity.Netcode.NetworkSceneManager:HandleClientSceneEvent (uint) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/NetworkSceneManager.cs:2394)
Unity.Netcode.NetworkSceneManager:ClientLoadedSynchronization (uint) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/NetworkSceneManager.cs:2283)
Unity.Netcode.SceneEventProgress:<SetAsyncOperation>b__37_0 (UnityEngine.AsyncOperation) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/SceneEventProgress.cs:272)
UnityEngine.AsyncOperation:InvokeCompletionEvent ()
This then triggers this warning :
[NetworkManager] Trying to spawn Player(Clone) with a NetworkObjectId of 6 but it is already in the spawned list!
UnityEngine.Debug:LogWarning (object)
Unity.Netcode.NetworkSpawnManager:SpawnNetworkObjectLocallyCommon (Unity.Netcode.NetworkObject,ulong,bool,bool,ulong,bool) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Spawning/NetworkSpawnManager.cs:1117)
Unity.Netcode.NetworkSpawnManager:SpawnNetworkObjectLocally (Unity.Netcode.NetworkObject,Unity.Netcode.NetworkObject/SceneObject&,bool) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Spawning/NetworkSpawnManager.cs:1107)
Unity.Netcode.NetworkObject:AddSceneObject (Unity.Netcode.NetworkObject/SceneObject&,Unity.Netcode.FastBufferReader,Unity.Netcode.NetworkManager,bool) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Core/NetworkObject.cs:3263)
Unity.Netcode.CreateObjectMessage:CreateObject (Unity.Netcode.NetworkManager&,ulong,uint,Unity.Netcode.NetworkObject/SceneObject,Unity.Netcode.FastBufferReader,ulong[],ulong[]) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Messaging/Messages/CreateObjectMessage.cs:215)
Unity.Netcode.CreateObjectMessage:CreateObject (Unity.Netcode.NetworkManager&,Unity.Netcode.NetworkSceneManager/DeferredObjectCreation&) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/Messaging/Messages/CreateObjectMessage.cs:204)
Unity.Netcode.NetworkSceneManager:ProcessDeferredCreateObjectMessages () (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/NetworkSceneManager.cs:3196)
Unity.Netcode.NetworkSceneManager:HandleClientSceneEvent (uint) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/NetworkSceneManager.cs:2394)
Unity.Netcode.NetworkSceneManager:ClientLoadedSynchronization (uint) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/NetworkSceneManager.cs:2283)
Unity.Netcode.SceneEventProgress:<SetAsyncOperation>b__37_0 (UnityEngine.AsyncOperation) (at ./Library/PackageCache/com.unity.netcode.gameobjects@91cf39ffcce4/Runtime/SceneManagement/SceneEventProgress.cs:272)
UnityEngine.AsyncOperation:InvokeCompletionEvent ()