From ba150ac5d3a3ba60ef1530a58896de74b66e32c1 Mon Sep 17 00:00:00 2001 From: "Dominik G." Date: Sun, 12 Oct 2025 14:18:12 +0200 Subject: [PATCH] Fixed --- .../Networking/SteamCharacterNetworkBridge.cs | 25 +++++-------------- .../Networking/SteamLocalInputSender.cs | 2 +- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/Game/Scripts/Networking/SteamCharacterNetworkBridge.cs b/Game/Scripts/Networking/SteamCharacterNetworkBridge.cs index 32f06b2..6c5322d 100644 --- a/Game/Scripts/Networking/SteamCharacterNetworkBridge.cs +++ b/Game/Scripts/Networking/SteamCharacterNetworkBridge.cs @@ -157,7 +157,6 @@ namespace MegaKoop.Game.Networking networkManager = SteamCoopNetworkManager.Instance; } - bool isHost = networkManager != null && networkManager.IsHost; ulong localSteamId = SteamBootstrap.IsInitialized ? SteamUser.GetSteamID().m_SteamID : 0UL; if (!localOverrideSet && autoAssignOwnerToLocalPlayer && ownerSteamId == 0 && localSteamId != 0) @@ -170,7 +169,7 @@ namespace MegaKoop.Game.Networking isLocalPlayer = ownerSteamId != 0 && ownerSteamId == localSteamId; } - isAuthority = isHost; // Host drives authoritative simulation. + isAuthority = isLocalPlayer; // Each player has authority over their own character. } private void ConfigureController() @@ -218,7 +217,7 @@ namespace MegaKoop.Game.Networking private void HandlePlayerInputMessage(NetworkMessage message) { - if (!isAuthority) + if (isAuthority) { return; } @@ -253,29 +252,17 @@ namespace MegaKoop.Game.Networking public void SendLocalInput(Vector2 moveInput, bool jump) { - if (networkManager == null || identity == null) + if (networkManager == null || identity == null || !isAuthority) { return; } - var message = new PlayerInputMessage(identity.NetworkId, moveInput, jump); - byte[] payload = PlayerInputMessage.Serialize(message); - if (!networkManager.IsConnected || networkManager.IsHost) + if (!networkManager.IsConnected) { - // If we are host, feed directly. - HandlePlayerInputMessage(new NetworkMessage(NetworkMessageType.PlayerInput, payload, SteamUser.GetSteamID().m_SteamID)); + return; } - else - { - CSteamID lobby = networkManager.ActiveLobby; - CSteamID lobbyOwner = lobby != CSteamID.Nil ? SteamMatchmaking.GetLobbyOwner(lobby) : CSteamID.Nil; - if (lobbyOwner == CSteamID.Nil) - { - lobbyOwner = SteamUser.GetSteamID(); - } - networkManager.SendToPlayer(lobbyOwner, NetworkMessageType.PlayerInput, payload, EP2PSend.k_EP2PSendUnreliableNoDelay); - } + networkManager.SendToAll(NetworkMessageType.PlayerInput, PlayerInputMessage.Serialize(new PlayerInputMessage(identity.NetworkId, moveInput, jump)), EP2PSend.k_EP2PSendUnreliableNoDelay); } } } diff --git a/Game/Scripts/Networking/SteamLocalInputSender.cs b/Game/Scripts/Networking/SteamLocalInputSender.cs index 7c0a362..749b0d7 100644 --- a/Game/Scripts/Networking/SteamLocalInputSender.cs +++ b/Game/Scripts/Networking/SteamLocalInputSender.cs @@ -44,7 +44,7 @@ namespace MegaKoop.Game.Networking return; } - if (!characterNetwork.IsLocalPlayer || characterNetwork.IsAuthority) + if (!characterNetwork.IsLocalPlayer) { return; }