From 8ea4b173a351f9d8cf8ee9980c3613ae79015f32 Mon Sep 17 00:00:00 2001 From: Marek Sorokin Date: Mon, 27 Oct 2025 13:54:38 +0100 Subject: [PATCH] online fix --- Game/Scripts/Enemy/SteamEnemyController.cs | 29 +++++++++++++++++++--- Game/Scripts/Networking/NetworkIdentity.cs | 8 ++---- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/Game/Scripts/Enemy/SteamEnemyController.cs b/Game/Scripts/Enemy/SteamEnemyController.cs index d9d0f88..0752118 100644 --- a/Game/Scripts/Enemy/SteamEnemyController.cs +++ b/Game/Scripts/Enemy/SteamEnemyController.cs @@ -69,7 +69,6 @@ namespace MegaKoop.Game.Enemy private void Awake() { - EnsureIdentity(); spawnPosition = transform.position; baseMoveSpeed = moveSpeed; @@ -134,14 +133,22 @@ namespace MegaKoop.Game.Enemy return; } - if (identity.NetworkId == 0) + if (identity.NetworkId != 0) { - identity.SetNetworkId(nextEnemyNetworkId++); + return; } + + if (!ShouldAssignLocalNetworkId()) + { + return; + } + + identity.SetNetworkId(nextEnemyNetworkId++); } private void OnEnable() { + EnsureIdentity(); networkManager = SteamCoopNetworkManager.Instance; pooledInstance ??= GetComponent(); pendingDespawn = false; @@ -232,6 +239,22 @@ namespace MegaKoop.Game.Enemy return networkManager.IsHost; } + private bool ShouldAssignLocalNetworkId() + { + var manager = SteamCoopNetworkManager.Instance; + if (manager == null) + { + return true; + } + + if (!manager.IsConnected) + { + return true; + } + + return manager.IsHost; + } + private void SyncNavMeshAgentState(bool simulate) { if (navMeshAgent == null) diff --git a/Game/Scripts/Networking/NetworkIdentity.cs b/Game/Scripts/Networking/NetworkIdentity.cs index b96b5a1..a1bfae2 100644 --- a/Game/Scripts/Networking/NetworkIdentity.cs +++ b/Game/Scripts/Networking/NetworkIdentity.cs @@ -14,13 +14,10 @@ namespace MegaKoop.Game.Networking { // Note: Auto-increment removed in favor of deterministic ID generation // IDs should be assigned via SetNetworkId() before or during Awake - if (assignOnAwake && networkId == 0) + if (networkId != 0) { - Debug.LogWarning($"[NetworkIdentity] {name} has assignOnAwake=true but no ID assigned. " + - "Use DeterministicIdGenerator or manually call SetNetworkId()."); + Register(); } - - Register(); } private void OnDestroy() @@ -32,7 +29,6 @@ namespace MegaKoop.Game.Networking { if (networkId == 0) { - Debug.LogWarning($"[NetworkIdentity] {name} has no network id and won't be tracked."); return; }