From 940db1e51af3bfd7f320a35fef84235d6d8bdae4 Mon Sep 17 00:00:00 2001 From: Fernando Cortez Date: Thu, 14 Mar 2024 17:31:02 -0400 Subject: [PATCH 1/8] upgrade to NGO v1.8.1, conversion to universal Rpcs, utility assembly includes Unity.Collections --- .../DebugCheats/DebugCheatsManager.cs | 44 +++++++++---------- .../GameState/NetworkCharSelection.cs | 2 +- .../Character/ClientCharacter.cs | 8 ++-- .../Character/ServerCharacter.cs | 6 +-- .../Projectiles/PhysicsProjectile.cs | 2 +- .../Gameplay/GameplayObjects/TossedItem.cs | 2 +- .../Utils/NetworkOverlay/NetworkStats.cs | 12 ++--- .../SceneManagement/LoadingProgressManager.cs | 2 +- .../SceneManagement/SceneLoaderWrapper.cs | 7 ++- ...unity.multiplayer.samples.utilities.asmdef | 5 ++- Packages/manifest.json | 2 +- Packages/packages-lock.json | 2 +- 12 files changed, 47 insertions(+), 47 deletions(-) diff --git a/Assets/Scripts/Gameplay/DebugCheats/DebugCheatsManager.cs b/Assets/Scripts/Gameplay/DebugCheats/DebugCheatsManager.cs index 3fc874f39c..c85bdb4fe5 100644 --- a/Assets/Scripts/Gameplay/DebugCheats/DebugCheatsManager.cs +++ b/Assets/Scripts/Gameplay/DebugCheats/DebugCheatsManager.cs @@ -130,24 +130,24 @@ public void GoToPostGame() GoToPostGameServerRpc(); } - [ServerRpc(RequireOwnership = false)] - void SpawnEnemyServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void SpawnEnemyServerRpc(RpcParams serverRpcParams = default) { var newEnemy = Instantiate(m_EnemyPrefab); newEnemy.SpawnWithOwnership(NetworkManager.Singleton.LocalClientId, true); PublishCheatUsedMessage(serverRpcParams.Receive.SenderClientId, "SpawnEnemy"); } - [ServerRpc(RequireOwnership = false)] - void SpawnBossServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void SpawnBossServerRpc(RpcParams serverRpcParams = default) { var newEnemy = Instantiate(m_BossPrefab); newEnemy.SpawnWithOwnership(NetworkManager.Singleton.LocalClientId, true); PublishCheatUsedMessage(serverRpcParams.Receive.SenderClientId, "SpawnBoss"); } - [ServerRpc(RequireOwnership = false)] - void KillTargetServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void KillTargetServerRpc(RpcParams serverRpcParams = default) { ulong clientId = serverRpcParams.Receive.SenderClientId; var playerServerCharacter = PlayerServerCharacter.GetPlayerServerCharacter(clientId); @@ -171,8 +171,8 @@ void KillTargetServerRpc(ServerRpcParams serverRpcParams = default) } } - [ServerRpc(RequireOwnership = false)] - void KillAllEnemiesServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void KillAllEnemiesServerRpc(RpcParams serverRpcParams = default) { foreach (var serverCharacter in FindObjectsOfType()) { @@ -187,8 +187,8 @@ void KillAllEnemiesServerRpc(ServerRpcParams serverRpcParams = default) PublishCheatUsedMessage(serverRpcParams.Receive.SenderClientId, "KillAllEnemies"); } - [ServerRpc(RequireOwnership = false)] - void ToggleGodModeServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void ToggleGodModeServerRpc(RpcParams serverRpcParams = default) { var clientId = serverRpcParams.Receive.SenderClientId; var playerServerCharacter = PlayerServerCharacter.GetPlayerServerCharacter(clientId); @@ -199,8 +199,8 @@ void ToggleGodModeServerRpc(ServerRpcParams serverRpcParams = default) } } - [ServerRpc(RequireOwnership = false)] - void HealPlayerServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void HealPlayerServerRpc(RpcParams serverRpcParams = default) { var clientId = serverRpcParams.Receive.SenderClientId; var playerServerCharacter = PlayerServerCharacter.GetPlayerServerCharacter(clientId); @@ -222,8 +222,8 @@ void HealPlayerServerRpc(ServerRpcParams serverRpcParams = default) } } - [ServerRpc(RequireOwnership = false)] - void ToggleSuperSpeedServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void ToggleSuperSpeedServerRpc(RpcParams serverRpcParams = default) { var clientId = serverRpcParams.Receive.SenderClientId; foreach (var playerServerCharacter in PlayerServerCharacter.GetPlayerServerCharacters()) @@ -237,8 +237,8 @@ void ToggleSuperSpeedServerRpc(ServerRpcParams serverRpcParams = default) PublishCheatUsedMessage(clientId, "ToggleSuperSpeed"); } - [ServerRpc(RequireOwnership = false)] - void ToggleTeleportModeServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void ToggleTeleportModeServerRpc(RpcParams serverRpcParams = default) { var clientId = serverRpcParams.Receive.SenderClientId; foreach (var playerServerCharacter in PlayerServerCharacter.GetPlayerServerCharacters()) @@ -252,8 +252,8 @@ void ToggleTeleportModeServerRpc(ServerRpcParams serverRpcParams = default) PublishCheatUsedMessage(serverRpcParams.Receive.SenderClientId, "ToggleTeleportMode"); } - [ServerRpc(RequireOwnership = false)] - void ToggleDoorServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void ToggleDoorServerRpc(RpcParams serverRpcParams = default) { if (SwitchedDoor != null) { @@ -266,8 +266,8 @@ void ToggleDoorServerRpc(ServerRpcParams serverRpcParams = default) } } - [ServerRpc(RequireOwnership = false)] - void TogglePortalsServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void TogglePortalsServerRpc(RpcParams serverRpcParams = default) { foreach (var portal in FindObjectsOfType()) { @@ -288,8 +288,8 @@ void TogglePortalsServerRpc(ServerRpcParams serverRpcParams = default) PublishCheatUsedMessage(serverRpcParams.Receive.SenderClientId, "TogglePortals"); } - [ServerRpc(RequireOwnership = false)] - void GoToPostGameServerRpc(ServerRpcParams serverRpcParams = default) + [Rpc(SendTo.Server, RequireOwnership = false)] + void GoToPostGameServerRpc(RpcParams serverRpcParams = default) { SceneLoaderWrapper.Instance.LoadScene("PostGame", useNetworkSceneManager: true); PublishCheatUsedMessage(serverRpcParams.Receive.SenderClientId, "GoToPostGame"); diff --git a/Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs b/Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs index a56e4bc722..a3991d8bcd 100644 --- a/Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs +++ b/Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs @@ -105,7 +105,7 @@ private void Awake() /// /// RPC to notify the server that a client has chosen a seat. /// - [ServerRpc(RequireOwnership = false)] + [Rpc(SendTo.Server, RequireOwnership = false)] public void ChangeSeatServerRpc(ulong clientId, int seatIdx, bool lockedIn) { OnClientChangedSeat?.Invoke(clientId, seatIdx, lockedIn); diff --git a/Assets/Scripts/Gameplay/GameplayObjects/Character/ClientCharacter.cs b/Assets/Scripts/Gameplay/GameplayObjects/Character/ClientCharacter.cs index c59a048846..9ffa054b83 100644 --- a/Assets/Scripts/Gameplay/GameplayObjects/Character/ClientCharacter.cs +++ b/Assets/Scripts/Gameplay/GameplayObjects/Character/ClientCharacter.cs @@ -69,7 +69,7 @@ public class ClientCharacter : NetworkBehaviour /// /// Server to Client RPC that broadcasts this action play to all clients. /// /// Data about which action to play and its associated details. - [ClientRpc] + [Rpc(SendTo.ClientsAndHost)] public void RecvDoActionClientRPC(ActionRequestData data) { ActionRequestData data1 = data; @@ -79,7 +79,7 @@ public void RecvDoActionClientRPC(ActionRequestData data) /// /// This RPC is invoked on the client when the active action FXs need to be cancelled (e.g. when the character has been stunned) /// - [ClientRpc] + [Rpc(SendTo.ClientsAndHost)] public void RecvCancelAllActionsClientRpc() { m_ClientActionViz.CancelAllActions(); @@ -88,7 +88,7 @@ public void RecvCancelAllActionsClientRpc() /// /// This RPC is invoked on the client when active action FXs of a certain type need to be cancelled (e.g. when the Stealth action ends) /// - [ClientRpc] + [Rpc(SendTo.ClientsAndHost)] public void RecvCancelActionsByPrototypeIDClientRpc(ActionID actionPrototypeID) { m_ClientActionViz.CancelAllActionsWithSamePrototypeID(actionPrototypeID); @@ -98,7 +98,7 @@ public void RecvCancelActionsByPrototypeIDClientRpc(ActionID actionPrototypeID) /// Called on all clients when this character has stopped "charging up" an attack. /// Provides a value between 0 and 1 inclusive which indicates how "charged up" the attack ended up being. /// - [ClientRpc] + [Rpc(SendTo.ClientsAndHost)] public void RecvStopChargingUpClientRpc(float percentCharged) { m_ClientActionViz.OnStoppedChargingUp(percentCharged); diff --git a/Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs b/Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs index 619ec9217a..25ee97600b 100644 --- a/Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs +++ b/Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs @@ -188,7 +188,7 @@ public override void OnNetworkDespawn() /// RPC to send inputs for this character from a client to a server. /// /// The position which this character should move towards. - [ServerRpc] + [Rpc(SendTo.Server)] public void SendCharacterInputServerRpc(Vector3 movementTarget) { if (LifeState == LifeState.Alive && !m_Movement.IsPerformingForcedMovement()) @@ -213,7 +213,7 @@ public void SendCharacterInputServerRpc(Vector3 movementTarget) /// Client->Server RPC that sends a request to play an action. /// /// Data about which action to play and its associated details. - [ServerRpc] + [Rpc(SendTo.Server)] public void RecvDoActionServerRPC(ActionRequestData data) { ActionRequestData data1 = data; @@ -231,7 +231,7 @@ public void RecvDoActionServerRPC(ActionRequestData data) /// /// Called on server when the character's client decides they have stopped "charging up" an attack. /// - [ServerRpc] + [Rpc(SendTo.Server)] public void RecvStopChargingUpServerRpc() { m_ServerActionPlayer.OnGameplayActivity(Action.GameplayActivity.StoppedChargingUp); diff --git a/Assets/Scripts/Gameplay/GameplayObjects/Projectiles/PhysicsProjectile.cs b/Assets/Scripts/Gameplay/GameplayObjects/Projectiles/PhysicsProjectile.cs index 34ae2792a9..bddc157e61 100644 --- a/Assets/Scripts/Gameplay/GameplayObjects/Projectiles/PhysicsProjectile.cs +++ b/Assets/Scripts/Gameplay/GameplayObjects/Projectiles/PhysicsProjectile.cs @@ -224,7 +224,7 @@ void DetectCollisions() } } - [ClientRpc] + [Rpc(SendTo.ClientsAndHost)] private void RecvHitEnemyClientRPC(ulong enemyId) { //in the future we could do quite fancy things, like deparenting the Graphics Arrow and parenting it to the target. diff --git a/Assets/Scripts/Gameplay/GameplayObjects/TossedItem.cs b/Assets/Scripts/Gameplay/GameplayObjects/TossedItem.cs index 77f5e74739..33bfbf3e07 100644 --- a/Assets/Scripts/Gameplay/GameplayObjects/TossedItem.cs +++ b/Assets/Scripts/Gameplay/GameplayObjects/TossedItem.cs @@ -118,7 +118,7 @@ void Detonate() m_Detonated = true; } - [ClientRpc] + [Rpc(SendTo.ClientsAndHost)] void DetonateClientRpc() { detonatedCallback?.Invoke(); diff --git a/Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs b/Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs index e8cf39293d..c4ab5fb819 100644 --- a/Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs +++ b/Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs @@ -59,7 +59,7 @@ public ExponentialMovingAverageCalculator(float average) Dictionary m_PingHistoryStartTimes = new Dictionary(); - ClientRpcParams m_PongClientParams; + RpcParams m_PongClientParams; string m_TextToDisplay; @@ -77,7 +77,7 @@ public override void OnNetworkSpawn() CreateNetworkStatsText(); } - m_PongClientParams = new ClientRpcParams() { Send = new ClientRpcSendParams() { TargetClientIds = new[] { OwnerClientId } } }; + m_PongClientParams = RpcTarget.Group(new[] { OwnerClientId }, RpcTargetUse.Persistent); } // Creating a UI text object and add it to NetworkOverlay canvas @@ -146,14 +146,14 @@ void FixedUpdate() } } - [ServerRpc] - void PingServerRPC(int pingId, ServerRpcParams serverParams = default) + [Rpc(SendTo.Server)] + void PingServerRPC(int pingId, RpcParams serverParams = default) { PongClientRPC(pingId, m_PongClientParams); } - [ClientRpc] - void PongClientRPC(int pingId, ClientRpcParams clientParams = default) + [Rpc(SendTo.SpecifiedInParams)] + void PongClientRPC(int pingId, RpcParams clientParams = default) { var startTime = m_PingHistoryStartTimes[pingId]; m_PingHistoryStartTimes.Remove(pingId); diff --git a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/LoadingProgressManager.cs b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/LoadingProgressManager.cs index e92a8d3bcb..7cd4a6e262 100644 --- a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/LoadingProgressManager.cs +++ b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/LoadingProgressManager.cs @@ -101,7 +101,7 @@ void Update() } } - [ClientRpc] + [Rpc(SendTo.ClientsAndHost)] void UpdateTrackersClientRpc() { if (!IsHost) diff --git a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs index 7e8934e8f2..b5e0a07233 100644 --- a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs +++ b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs @@ -1,4 +1,3 @@ -using System; using Unity.Netcode; using UnityEngine; using UnityEngine.SceneManagement; @@ -181,7 +180,7 @@ void OnSceneEvent(SceneEvent sceneEvent) if (NetworkManager.IsServer) { // Send client RPC to make sure the client stops the loading screen after the server handles what it needs to after the client finished synchronizing, for example character spawning done server side should still be hidden by loading screen. - StopLoadingScreenClientRpc(new ClientRpcParams { Send = new ClientRpcSendParams { TargetClientIds = new[] { sceneEvent.ClientId } } }); + StopLoadingScreenClientRpc(RpcTarget.Group(new[] { sceneEvent.ClientId }, RpcTargetUse.Persistent)); } break; } @@ -200,8 +199,8 @@ void UnloadAdditiveScenes() } } - [ClientRpc] - void StopLoadingScreenClientRpc(ClientRpcParams clientRpcParams = default) + [Rpc(SendTo.SpecifiedInParams)] + void StopLoadingScreenClientRpc(RpcParams clientRpcParams = default) { m_ClientLoadingScreen.StopLoadingScreen(); } diff --git a/Packages/com.unity.multiplayer.samples.coop/Utilities/com.unity.multiplayer.samples.utilities.asmdef b/Packages/com.unity.multiplayer.samples.coop/Utilities/com.unity.multiplayer.samples.utilities.asmdef index 1eb22a2a7a..203c3c9839 100644 --- a/Packages/com.unity.multiplayer.samples.coop/Utilities/com.unity.multiplayer.samples.utilities.asmdef +++ b/Packages/com.unity.multiplayer.samples.coop/Utilities/com.unity.multiplayer.samples.utilities.asmdef @@ -4,7 +4,8 @@ "references": [ "Unity.Netcode.Components", "Unity.Netcode.Runtime", - "Unity.Services.Relay" + "Unity.Services.Relay", + "Unity.Collections" ], "includePlatforms": [], "excludePlatforms": [], @@ -15,4 +16,4 @@ "defineConstraints": [], "versionDefines": [], "noEngineReferences": false -} +} \ No newline at end of file diff --git a/Packages/manifest.json b/Packages/manifest.json index c4af97ddfc..309648c17d 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -10,7 +10,7 @@ "com.unity.learn.iet-framework": "3.1.3", "com.unity.memoryprofiler": "1.1.0", "com.unity.multiplayer.tools": "2.0.0-pre.3", - "com.unity.netcode.gameobjects": "1.7.1", + "com.unity.netcode.gameobjects": "1.8.1", "com.unity.performance.profile-analyzer": "1.2.2", "com.unity.postprocessing": "3.2.2", "com.unity.render-pipelines.universal": "14.0.9", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index e2f1af8184..5ad5a9aa57 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -143,7 +143,7 @@ "url": "https://packages.unity.com" }, "com.unity.netcode.gameobjects": { - "version": "1.7.1", + "version": "1.8.1", "depth": 0, "source": "registry", "dependencies": { From 14f7a6e7bc65933bea4a0d7c5ed9469ad19e2b72 Mon Sep 17 00:00:00 2001 From: Fernando Cortez Date: Mon, 18 Mar 2024 15:42:19 -0400 Subject: [PATCH 2/8] fix for connected clients receiving new shutdown message from host --- .../ConnectionState/ClientConnectedState.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/Scripts/ConnectionManagement/ConnectionState/ClientConnectedState.cs b/Assets/Scripts/ConnectionManagement/ConnectionState/ClientConnectedState.cs index 32b1f503fd..9d4e0e0f1a 100644 --- a/Assets/Scripts/ConnectionManagement/ConnectionState/ClientConnectedState.cs +++ b/Assets/Scripts/ConnectionManagement/ConnectionState/ClientConnectedState.cs @@ -1,4 +1,3 @@ -using System; using Unity.BossRoom.UnityServices.Lobbies; using UnityEngine; using VContainer; @@ -27,7 +26,8 @@ public override void Exit() { } public override void OnClientDisconnect(ulong _) { var disconnectReason = m_ConnectionManager.NetworkManager.DisconnectReason; - if (string.IsNullOrEmpty(disconnectReason)) + if (string.IsNullOrEmpty(disconnectReason) || + disconnectReason == "Disconnected due to host shutting down.") { m_ConnectStatusPublisher.Publish(ConnectStatus.Reconnecting); m_ConnectionManager.ChangeState(m_ConnectionManager.m_ClientReconnecting); From c917cef7a8388c83acc06bb4d5af45cd42fe0446 Mon Sep 17 00:00:00 2001 From: Fernando Cortez Date: Tue, 19 Mar 2024 14:27:48 -0400 Subject: [PATCH 3/8] Utilities package also upgraded to NGO v1.8.1 --- Packages/com.unity.multiplayer.samples.coop/package.json | 2 +- Packages/packages-lock.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Packages/com.unity.multiplayer.samples.coop/package.json b/Packages/com.unity.multiplayer.samples.coop/package.json index d3c556cb93..789b298e26 100644 --- a/Packages/com.unity.multiplayer.samples.coop/package.json +++ b/Packages/com.unity.multiplayer.samples.coop/package.json @@ -9,7 +9,7 @@ "dependencies": { "com.unity.learn.iet-framework": "3.1.3", "com.unity.multiplayer.tools": "1.1.0", - "com.unity.netcode.gameobjects": "1.7.1", + "com.unity.netcode.gameobjects": "1.8.1", "com.unity.services.relay": "1.0.5" } } \ No newline at end of file diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 5ad5a9aa57..1594b10bf1 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -123,7 +123,7 @@ "dependencies": { "com.unity.learn.iet-framework": "3.1.3", "com.unity.multiplayer.tools": "1.1.0", - "com.unity.netcode.gameobjects": "1.7.1", + "com.unity.netcode.gameobjects": "1.8.1", "com.unity.services.relay": "1.0.5" } }, From 5a77d3d62722f84036671fa559261573b0306960 Mon Sep 17 00:00:00 2001 From: Fernando Cortez Date: Tue, 19 Mar 2024 14:27:58 -0400 Subject: [PATCH 4/8] changelog additions --- CHANGELOG.md | 8 ++++++-- Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17003298d4..9b971d94b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) Additional documentation and release notes are available at [Multiplayer Documentation](https://docs-multiplayer.unity3d.com). -## [Unreleased] +## [Unreleased] - yyyy-mm-dd + +### Changed +* Upgraded to Boss Room to Netcode for GameObjects v1.8.1 (#883) + * Upgraded to the newer API for Rpcs, Universal Rpcs + * ClientConnectedState has been modified to account for server/host now populating DisconnectReason before disconnecting a client before shutting down ### Cleanup * Removed NetworkObject from MainMenuState (#881) @@ -14,7 +19,6 @@ Additional documentation and release notes are available at [Multiplayer Documen ### Fixed * Added Null reference check to ClientInputSender to fix null reference for missing ability (#880) - ## [2.4.0] - 2023-12-13 ### Changed diff --git a/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md b/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md index 339f8624ed..a7b84a79ee 100644 --- a/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md +++ b/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md @@ -1,5 +1,10 @@ # Multiplayer Samples Co-op Changelog +## [unreleased] - yyyy-mm-dd + +### Changed +* Upgraded Utilities package to Netcode for GameObjects v1.8.1 (#883) + ## [1.8.0] - 2023-12-13 ### Changed From dc22d3f3f410a0599a4f1c70f90f82e4f95cc411 Mon Sep 17 00:00:00 2001 From: Fernando Cortez Date: Tue, 19 Mar 2024 14:29:45 -0400 Subject: [PATCH 5/8] readme badge with NGO upgrade updated --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f08210ef5d..48cf55bb12 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@
[![UnityVersion](https://img.shields.io/badge/Unity%20Version:-2022.3%20LTS-57b9d3.svg?logo=unity&color=2196F3)](https://unity.com/releases/editor/whats-new/2022.3.0) -[![NetcodeVersion](https://img.shields.io/badge/Netcode%20Version:-1.7.1-57b9d3.svg?logo=unity&color=2196F3)](https://github.com/Unity-Technologies/com.unity.netcode.gameobjects/releases/tag/ngo%2F1.7.1) +[![NetcodeVersion](https://img.shields.io/badge/Netcode%20Version:-1.8.1-57b9d3.svg?logo=unity&color=2196F3)](https://github.com/Unity-Technologies/com.unity.netcode.gameobjects/releases/tag/ngo%2F1.8.1) [![LatestRelease](https://img.shields.io/badge/Latest%20Github%20Release:-v2.4.0-57b9d3.svg?logo=github&color=brightgreen)](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/releases/tag/v2.4.0)

From e0ad35c13d89f27432cbd1e7d88772ad90ab115b Mon Sep 17 00:00:00 2001 From: Fernando Cortez Date: Thu, 21 Mar 2024 15:52:40 -0400 Subject: [PATCH 6/8] added Server/Client prefixes for previous Rpc methods --- .../Action/ConcreteActions/AOEAction.cs | 2 +- .../ChargedLaunchProjectileAction.cs | 4 +- .../ConcreteActions/ChargedShieldAction.cs | 4 +- .../ConcreteActions/DashAttackAction.cs | 4 +- .../FXProjectileTargetedAction.cs | 4 +- .../ConcreteActions/LaunchProjectileAction.cs | 2 +- .../Action/ConcreteActions/MeleeAction.cs | 2 +- .../ConcreteActions/StealthModeAction.cs | 4 +- .../Action/ConcreteActions/TossAction.cs | 2 +- .../Action/ConcreteActions/TrampleAction.cs | 4 +- .../Action/Input/ChargedActionInput.cs | 2 +- .../DebugCheats/DebugCheatsManager.cs | 41 +++++++++---------- .../GameState/ClientCharSelectState.cs | 4 +- .../GameState/NetworkCharSelection.cs | 2 +- .../Character/ClientCharacter.cs | 8 ++-- .../Character/ServerCharacter.cs | 7 ++-- .../Projectiles/PhysicsProjectile.cs | 4 +- .../Gameplay/GameplayObjects/TossedItem.cs | 4 +- .../Gameplay/UserInput/ClientInputSender.cs | 4 +- .../Utils/NetworkOverlay/NetworkStats.cs | 8 ++-- .../SceneManagement/LoadingProgressManager.cs | 6 +-- .../SceneManagement/SceneLoaderWrapper.cs | 4 +- 22 files changed, 62 insertions(+), 64 deletions(-) diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs index e01564ef61..ac32fa0721 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs @@ -35,7 +35,7 @@ public override bool OnStart(ServerCharacter serverCharacter) // This means we are responsible for triggering reaction-anims ourselves, which we do in PerformAoe() Data.TargetIds = new ulong[0]; serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); return ActionConclusion.Continue; } diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs index e23f5895fb..9d2330537a 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs @@ -53,7 +53,7 @@ public override bool OnStart(ServerCharacter serverCharacter) serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); // start the "charging up" ActionFX - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); // sanity-check our data a bit Debug.Assert(Config.Projectiles.Length > 1, $"Action {name} has {Config.Projectiles.Length} Projectiles. Expected at least 2!"); @@ -122,7 +122,7 @@ private void StopChargingUp(ServerCharacter parent) parent.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim2); } - parent.clientCharacter.RecvStopChargingUpClientRpc(GetPercentChargedUp()); + parent.clientCharacter.ClientStopChargingUpRpc(GetPercentChargedUp()); if (!m_HitByAttack) { LaunchProjectile(parent); diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedShieldAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedShieldAction.cs index 0146305c3e..390d17212f 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedShieldAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedShieldAction.cs @@ -52,7 +52,7 @@ public override bool OnStart(ServerCharacter serverCharacter) // raise the start trigger to start the animation loop! serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); return true; } @@ -145,7 +145,7 @@ private void StopChargingUp(ServerCharacter parent) if (IsChargingUp()) { m_StoppedChargingUpTime = Time.time; - parent.clientCharacter.RecvStopChargingUpClientRpc(GetPercentChargedUp()); + parent.clientCharacter.ClientStopChargingUpRpc(GetPercentChargedUp()); parent.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim2); diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs index 8a1b565497..4cde3d5229 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs @@ -38,7 +38,7 @@ public override bool OnStart(ServerCharacter serverCharacter) serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); // tell clients to visualize this action - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); return ActionConclusion.Continue; } @@ -80,7 +80,7 @@ public override void Cancel(ServerCharacter serverCharacter) // because the client-side visualization of the action moves the character visualization around, // we need to explicitly end the client-side visuals when we abort - serverCharacter.clientCharacter.RecvCancelActionsByPrototypeIDClientRpc(ActionID); + serverCharacter.clientCharacter.ClientCancelActionsByPrototypeIDRpc(ActionID); } diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs index 84a1cbbb71..2cbf68078a 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs @@ -49,7 +49,7 @@ public override bool OnStart(ServerCharacter serverCharacter) serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); // tell clients to visualize this action - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); return true; } @@ -84,7 +84,7 @@ public override void Cancel(ServerCharacter serverCharacter) { if (!m_ImpactedTarget) { - serverCharacter.clientCharacter.RecvCancelActionsByPrototypeIDClientRpc(ActionID); + serverCharacter.clientCharacter.ClientCancelActionsByPrototypeIDRpc(ActionID); } } diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs index 8b7e5fe3d2..e2995a6358 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs @@ -21,7 +21,7 @@ public override bool OnStart(ServerCharacter serverCharacter) serverCharacter.physicsWrapper.Transform.forward = Data.Direction; serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); return true; } diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/MeleeAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/MeleeAction.cs index c2e5e03c42..b19f26b9d0 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/MeleeAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/MeleeAction.cs @@ -51,7 +51,7 @@ public override bool OnStart(ServerCharacter serverCharacter) } serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); return true; } diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/StealthModeAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/StealthModeAction.cs index 6119beaf76..efba0d028b 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/StealthModeAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/StealthModeAction.cs @@ -28,7 +28,7 @@ public override bool OnStart(ServerCharacter serverCharacter) { serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); return true; } @@ -90,7 +90,7 @@ private void EndStealth(ServerCharacter parent) // presses the Stealth button twice in a row: "end this Stealth action and start a new one". If we cancelled // all actions of this type in Cancel(), we'd end up cancelling both the old AND the new one, because // the new one would already be in the clients' actionFX queue. - parent.clientCharacter.RecvCancelActionsByPrototypeIDClientRpc(ActionID); + parent.clientCharacter.ClientCancelActionsByPrototypeIDRpc(ActionID); } } diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs index a3a9a86757..db1b4b92d1 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs @@ -40,7 +40,7 @@ public override bool OnStart(ServerCharacter serverCharacter) } serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); return true; } diff --git a/Assets/Scripts/Gameplay/Action/ConcreteActions/TrampleAction.cs b/Assets/Scripts/Gameplay/Action/ConcreteActions/TrampleAction.cs index 5d180289c9..70fd601ab6 100644 --- a/Assets/Scripts/Gameplay/Action/ConcreteActions/TrampleAction.cs +++ b/Assets/Scripts/Gameplay/Action/ConcreteActions/TrampleAction.cs @@ -85,7 +85,7 @@ public override bool OnStart(ServerCharacter serverCharacter) serverCharacter.serverAnimationHandler.NetworkAnimator.SetTrigger(Config.Anim); } - serverCharacter.clientCharacter.RecvDoActionClientRPC(Data); + serverCharacter.clientCharacter.ClientPlayActionRpc(Data); return true; } @@ -238,7 +238,7 @@ private void StunSelf(ServerCharacter parent) if (!m_WasStunned) { parent.Movement.CancelMove(); - parent.clientCharacter.RecvCancelAllActionsClientRpc(); + parent.clientCharacter.ClientCancelAllActionsRpc(); } m_WasStunned = true; } diff --git a/Assets/Scripts/Gameplay/Action/Input/ChargedActionInput.cs b/Assets/Scripts/Gameplay/Action/Input/ChargedActionInput.cs index 8183b1cdfb..ff267f3237 100644 --- a/Assets/Scripts/Gameplay/Action/Input/ChargedActionInput.cs +++ b/Assets/Scripts/Gameplay/Action/Input/ChargedActionInput.cs @@ -26,7 +26,7 @@ private void Start() public override void OnReleaseKey() { - m_PlayerOwner.RecvStopChargingUpServerRpc(); + m_PlayerOwner.ServerStopChargingUpRpc(); Destroy(gameObject); } diff --git a/Assets/Scripts/Gameplay/DebugCheats/DebugCheatsManager.cs b/Assets/Scripts/Gameplay/DebugCheats/DebugCheatsManager.cs index c85bdb4fe5..2c170dda4f 100644 --- a/Assets/Scripts/Gameplay/DebugCheats/DebugCheatsManager.cs +++ b/Assets/Scripts/Gameplay/DebugCheats/DebugCheatsManager.cs @@ -1,4 +1,3 @@ -using System; using Unity.BossRoom.ConnectionManagement; using Unity.BossRoom.Gameplay.GameplayObjects; using Unity.BossRoom.Gameplay.GameplayObjects.Character; @@ -77,52 +76,52 @@ static bool AnyTouchDown() public void SpawnEnemy() { - SpawnEnemyServerRpc(); + ServerSpawnEnemyRpc(); } public void SpawnBoss() { - SpawnBossServerRpc(); + ServerSpawnBossRpc(); } public void KillTarget() { - KillTargetServerRpc(); + ServerKillTargetRpc(); } public void KillAllEnemies() { - KillAllEnemiesServerRpc(); + ServerKillAllEnemiesRpc(); } public void ToggleGodMode() { - ToggleGodModeServerRpc(); + ServerToggleGodModeRpc(); } public void HealPlayer() { - HealPlayerServerRpc(); + ServerHealPlayerRpc(); } public void ToggleSuperSpeed() { - ToggleSuperSpeedServerRpc(); + ServerToggleSuperSpeedRpc(); } public void ToggleTeleportMode() { - ToggleTeleportModeServerRpc(); + ServerToggleTeleportModeRpc(); } public void ToggleDoor() { - ToggleDoorServerRpc(); + ServerToggleDoorRpc(); } public void TogglePortals() { - TogglePortalsServerRpc(); + ServerTogglePortalsRpc(); } public void GoToPostGame() @@ -131,7 +130,7 @@ public void GoToPostGame() } [Rpc(SendTo.Server, RequireOwnership = false)] - void SpawnEnemyServerRpc(RpcParams serverRpcParams = default) + void ServerSpawnEnemyRpc(RpcParams serverRpcParams = default) { var newEnemy = Instantiate(m_EnemyPrefab); newEnemy.SpawnWithOwnership(NetworkManager.Singleton.LocalClientId, true); @@ -139,7 +138,7 @@ void SpawnEnemyServerRpc(RpcParams serverRpcParams = default) } [Rpc(SendTo.Server, RequireOwnership = false)] - void SpawnBossServerRpc(RpcParams serverRpcParams = default) + void ServerSpawnBossRpc(RpcParams serverRpcParams = default) { var newEnemy = Instantiate(m_BossPrefab); newEnemy.SpawnWithOwnership(NetworkManager.Singleton.LocalClientId, true); @@ -147,7 +146,7 @@ void SpawnBossServerRpc(RpcParams serverRpcParams = default) } [Rpc(SendTo.Server, RequireOwnership = false)] - void KillTargetServerRpc(RpcParams serverRpcParams = default) + void ServerKillTargetRpc(RpcParams serverRpcParams = default) { ulong clientId = serverRpcParams.Receive.SenderClientId; var playerServerCharacter = PlayerServerCharacter.GetPlayerServerCharacter(clientId); @@ -172,7 +171,7 @@ void KillTargetServerRpc(RpcParams serverRpcParams = default) } [Rpc(SendTo.Server, RequireOwnership = false)] - void KillAllEnemiesServerRpc(RpcParams serverRpcParams = default) + void ServerKillAllEnemiesRpc(RpcParams serverRpcParams = default) { foreach (var serverCharacter in FindObjectsOfType()) { @@ -188,7 +187,7 @@ void KillAllEnemiesServerRpc(RpcParams serverRpcParams = default) } [Rpc(SendTo.Server, RequireOwnership = false)] - void ToggleGodModeServerRpc(RpcParams serverRpcParams = default) + void ServerToggleGodModeRpc(RpcParams serverRpcParams = default) { var clientId = serverRpcParams.Receive.SenderClientId; var playerServerCharacter = PlayerServerCharacter.GetPlayerServerCharacter(clientId); @@ -200,7 +199,7 @@ void ToggleGodModeServerRpc(RpcParams serverRpcParams = default) } [Rpc(SendTo.Server, RequireOwnership = false)] - void HealPlayerServerRpc(RpcParams serverRpcParams = default) + void ServerHealPlayerRpc(RpcParams serverRpcParams = default) { var clientId = serverRpcParams.Receive.SenderClientId; var playerServerCharacter = PlayerServerCharacter.GetPlayerServerCharacter(clientId); @@ -223,7 +222,7 @@ void HealPlayerServerRpc(RpcParams serverRpcParams = default) } [Rpc(SendTo.Server, RequireOwnership = false)] - void ToggleSuperSpeedServerRpc(RpcParams serverRpcParams = default) + void ServerToggleSuperSpeedRpc(RpcParams serverRpcParams = default) { var clientId = serverRpcParams.Receive.SenderClientId; foreach (var playerServerCharacter in PlayerServerCharacter.GetPlayerServerCharacters()) @@ -238,7 +237,7 @@ void ToggleSuperSpeedServerRpc(RpcParams serverRpcParams = default) } [Rpc(SendTo.Server, RequireOwnership = false)] - void ToggleTeleportModeServerRpc(RpcParams serverRpcParams = default) + void ServerToggleTeleportModeRpc(RpcParams serverRpcParams = default) { var clientId = serverRpcParams.Receive.SenderClientId; foreach (var playerServerCharacter in PlayerServerCharacter.GetPlayerServerCharacters()) @@ -253,7 +252,7 @@ void ToggleTeleportModeServerRpc(RpcParams serverRpcParams = default) } [Rpc(SendTo.Server, RequireOwnership = false)] - void ToggleDoorServerRpc(RpcParams serverRpcParams = default) + void ServerToggleDoorRpc(RpcParams serverRpcParams = default) { if (SwitchedDoor != null) { @@ -267,7 +266,7 @@ void ToggleDoorServerRpc(RpcParams serverRpcParams = default) } [Rpc(SendTo.Server, RequireOwnership = false)] - void TogglePortalsServerRpc(RpcParams serverRpcParams = default) + void ServerTogglePortalsRpc(RpcParams serverRpcParams = default) { foreach (var portal in FindObjectsOfType()) { diff --git a/Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs b/Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs index 8cf7a34655..199517d27b 100644 --- a/Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs +++ b/Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs @@ -416,7 +416,7 @@ public void OnPlayerClickedSeat(int seatIdx) { if (m_NetworkCharSelection.IsSpawned) { - m_NetworkCharSelection.ChangeSeatServerRpc(NetworkManager.Singleton.LocalClientId, seatIdx, false); + m_NetworkCharSelection.ServerChangeSeatRpc(NetworkManager.Singleton.LocalClientId, seatIdx, false); } } @@ -428,7 +428,7 @@ public void OnPlayerClickedReady() if (m_NetworkCharSelection.IsSpawned) { // request to lock in or unlock if already locked in - m_NetworkCharSelection.ChangeSeatServerRpc(NetworkManager.Singleton.LocalClientId, m_LastSeatSelected, !m_HasLocalPlayerLockedIn); + m_NetworkCharSelection.ServerChangeSeatRpc(NetworkManager.Singleton.LocalClientId, m_LastSeatSelected, !m_HasLocalPlayerLockedIn); } } diff --git a/Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs b/Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs index a3991d8bcd..ddc3990192 100644 --- a/Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs +++ b/Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs @@ -106,7 +106,7 @@ private void Awake() /// RPC to notify the server that a client has chosen a seat. /// [Rpc(SendTo.Server, RequireOwnership = false)] - public void ChangeSeatServerRpc(ulong clientId, int seatIdx, bool lockedIn) + public void ServerChangeSeatRpc(ulong clientId, int seatIdx, bool lockedIn) { OnClientChangedSeat?.Invoke(clientId, seatIdx, lockedIn); } diff --git a/Assets/Scripts/Gameplay/GameplayObjects/Character/ClientCharacter.cs b/Assets/Scripts/Gameplay/GameplayObjects/Character/ClientCharacter.cs index 9ffa054b83..9af48869d5 100644 --- a/Assets/Scripts/Gameplay/GameplayObjects/Character/ClientCharacter.cs +++ b/Assets/Scripts/Gameplay/GameplayObjects/Character/ClientCharacter.cs @@ -70,7 +70,7 @@ public class ClientCharacter : NetworkBehaviour /// /// Data about which action to play and its associated details. [Rpc(SendTo.ClientsAndHost)] - public void RecvDoActionClientRPC(ActionRequestData data) + public void ClientPlayActionRpc(ActionRequestData data) { ActionRequestData data1 = data; m_ClientActionViz.PlayAction(ref data1); @@ -80,7 +80,7 @@ public void RecvDoActionClientRPC(ActionRequestData data) /// This RPC is invoked on the client when the active action FXs need to be cancelled (e.g. when the character has been stunned) /// [Rpc(SendTo.ClientsAndHost)] - public void RecvCancelAllActionsClientRpc() + public void ClientCancelAllActionsRpc() { m_ClientActionViz.CancelAllActions(); } @@ -89,7 +89,7 @@ public void RecvCancelAllActionsClientRpc() /// This RPC is invoked on the client when active action FXs of a certain type need to be cancelled (e.g. when the Stealth action ends) /// [Rpc(SendTo.ClientsAndHost)] - public void RecvCancelActionsByPrototypeIDClientRpc(ActionID actionPrototypeID) + public void ClientCancelActionsByPrototypeIDRpc(ActionID actionPrototypeID) { m_ClientActionViz.CancelAllActionsWithSamePrototypeID(actionPrototypeID); } @@ -99,7 +99,7 @@ public void RecvCancelActionsByPrototypeIDClientRpc(ActionID actionPrototypeID) /// Provides a value between 0 and 1 inclusive which indicates how "charged up" the attack ended up being. /// [Rpc(SendTo.ClientsAndHost)] - public void RecvStopChargingUpClientRpc(float percentCharged) + public void ClientStopChargingUpRpc(float percentCharged) { m_ClientActionViz.OnStoppedChargingUp(percentCharged); } diff --git a/Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs b/Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs index 25ee97600b..3edac2f84b 100644 --- a/Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs +++ b/Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs @@ -1,4 +1,3 @@ -using System; using System.Collections; using Unity.BossRoom.ConnectionManagement; using Unity.BossRoom.Gameplay.Actions; @@ -189,7 +188,7 @@ public override void OnNetworkDespawn() /// /// The position which this character should move towards. [Rpc(SendTo.Server)] - public void SendCharacterInputServerRpc(Vector3 movementTarget) + public void ServerSendCharacterInputRpc(Vector3 movementTarget) { if (LifeState == LifeState.Alive && !m_Movement.IsPerformingForcedMovement()) { @@ -214,7 +213,7 @@ public void SendCharacterInputServerRpc(Vector3 movementTarget) /// /// Data about which action to play and its associated details. [Rpc(SendTo.Server)] - public void RecvDoActionServerRPC(ActionRequestData data) + public void ServerPlayActionRpc(ActionRequestData data) { ActionRequestData data1 = data; if (!GameDataSource.Instance.GetActionPrototypeByID(data1.ActionID).Config.IsFriendly) @@ -232,7 +231,7 @@ public void RecvDoActionServerRPC(ActionRequestData data) /// Called on server when the character's client decides they have stopped "charging up" an attack. /// [Rpc(SendTo.Server)] - public void RecvStopChargingUpServerRpc() + public void ServerStopChargingUpRpc() { m_ServerActionPlayer.OnGameplayActivity(Action.GameplayActivity.StoppedChargingUp); } diff --git a/Assets/Scripts/Gameplay/GameplayObjects/Projectiles/PhysicsProjectile.cs b/Assets/Scripts/Gameplay/GameplayObjects/Projectiles/PhysicsProjectile.cs index bddc157e61..6701f6a44c 100644 --- a/Assets/Scripts/Gameplay/GameplayObjects/Projectiles/PhysicsProjectile.cs +++ b/Assets/Scripts/Gameplay/GameplayObjects/Projectiles/PhysicsProjectile.cs @@ -204,7 +204,7 @@ void DetectCollisions() var targetNetObj = m_CollisionCache[i].GetComponentInParent(); if (targetNetObj) { - RecvHitEnemyClientRPC(targetNetObj.NetworkObjectId); + ClientHitEnemyRpc(targetNetObj.NetworkObjectId); //retrieve the person that created us, if he's still around. NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(m_SpawnerId, out var spawnerNet); @@ -225,7 +225,7 @@ void DetectCollisions() } [Rpc(SendTo.ClientsAndHost)] - private void RecvHitEnemyClientRPC(ulong enemyId) + private void ClientHitEnemyRpc(ulong enemyId) { //in the future we could do quite fancy things, like deparenting the Graphics Arrow and parenting it to the target. //For the moment we play some particles (optionally), and cause the target to animate a hit-react. diff --git a/Assets/Scripts/Gameplay/GameplayObjects/TossedItem.cs b/Assets/Scripts/Gameplay/GameplayObjects/TossedItem.cs index 33bfbf3e07..ea67187979 100644 --- a/Assets/Scripts/Gameplay/GameplayObjects/TossedItem.cs +++ b/Assets/Scripts/Gameplay/GameplayObjects/TossedItem.cs @@ -113,13 +113,13 @@ void Detonate() } // send client RPC to detonate on clients - DetonateClientRpc(); + ClientDetonateRpc(); m_Detonated = true; } [Rpc(SendTo.ClientsAndHost)] - void DetonateClientRpc() + void ClientDetonateRpc() { detonatedCallback?.Invoke(); } diff --git a/Assets/Scripts/Gameplay/UserInput/ClientInputSender.cs b/Assets/Scripts/Gameplay/UserInput/ClientInputSender.cs index 7dc81ef4b8..5dd2f0df1d 100644 --- a/Assets/Scripts/Gameplay/UserInput/ClientInputSender.cs +++ b/Assets/Scripts/Gameplay/UserInput/ClientInputSender.cs @@ -207,7 +207,7 @@ void FinishSkill() void SendInput(ActionRequestData action) { ActionInputEvent?.Invoke(action); - m_ServerCharacter.RecvDoActionServerRPC(action); + m_ServerCharacter.ServerPlayActionRpc(action); } void FixedUpdate() @@ -273,7 +273,7 @@ void FixedUpdate() k_MaxNavMeshDistance, NavMesh.AllAreas)) { - m_ServerCharacter.SendCharacterInputServerRpc(hit.position); + m_ServerCharacter.ServerSendCharacterInputRpc(hit.position); //Send our client only click request ClientMoveEvent?.Invoke(hit.position); diff --git a/Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs b/Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs index c4ab5fb819..d8d6ec3111 100644 --- a/Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs +++ b/Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs @@ -100,7 +100,7 @@ void FixedUpdate() { // We could have had a ping/pong where the ping sends the pong and the pong sends the ping. Issue with this // is the higher the latency, the lower the sampling would be. We need pings to be sent at a regular interval - PingServerRPC(m_CurrentRTTPingId); + ServerPingRpc(m_CurrentRTTPingId); m_PingHistoryStartTimes[m_CurrentRTTPingId] = Time.realtimeSinceStartup; m_CurrentRTTPingId++; m_LastPingTime = Time.realtimeSinceStartup; @@ -147,13 +147,13 @@ void FixedUpdate() } [Rpc(SendTo.Server)] - void PingServerRPC(int pingId, RpcParams serverParams = default) + void ServerPingRpc(int pingId, RpcParams serverParams = default) { - PongClientRPC(pingId, m_PongClientParams); + ClientPongRpc(pingId, m_PongClientParams); } [Rpc(SendTo.SpecifiedInParams)] - void PongClientRPC(int pingId, RpcParams clientParams = default) + void ClientPongRpc(int pingId, RpcParams clientParams = default) { var startTime = m_PingHistoryStartTimes[pingId]; m_PingHistoryStartTimes.Remove(pingId); diff --git a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/LoadingProgressManager.cs b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/LoadingProgressManager.cs index 7cd4a6e262..2a333c6440 100644 --- a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/LoadingProgressManager.cs +++ b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/LoadingProgressManager.cs @@ -102,7 +102,7 @@ void Update() } [Rpc(SendTo.ClientsAndHost)] - void UpdateTrackersClientRpc() + void ClientUpdateTrackersRpc() { if (!IsHost) { @@ -131,7 +131,7 @@ void AddTracker(ulong clientId) var networkObject = tracker.GetComponent(); networkObject.SpawnWithOwnership(clientId); ProgressTrackers[clientId] = tracker.GetComponent(); - UpdateTrackersClientRpc(); + ClientUpdateTrackersRpc(); } } @@ -144,7 +144,7 @@ void RemoveTracker(ulong clientId) var tracker = ProgressTrackers[clientId]; ProgressTrackers.Remove(clientId); tracker.NetworkObject.Despawn(); - UpdateTrackersClientRpc(); + ClientUpdateTrackersRpc(); } } } diff --git a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs index b5e0a07233..ccdee557d3 100644 --- a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs +++ b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs @@ -180,7 +180,7 @@ void OnSceneEvent(SceneEvent sceneEvent) if (NetworkManager.IsServer) { // Send client RPC to make sure the client stops the loading screen after the server handles what it needs to after the client finished synchronizing, for example character spawning done server side should still be hidden by loading screen. - StopLoadingScreenClientRpc(RpcTarget.Group(new[] { sceneEvent.ClientId }, RpcTargetUse.Persistent)); + ClientStopLoadingScreenRpc(RpcTarget.Group(new[] { sceneEvent.ClientId }, RpcTargetUse.Persistent)); } break; } @@ -200,7 +200,7 @@ void UnloadAdditiveScenes() } [Rpc(SendTo.SpecifiedInParams)] - void StopLoadingScreenClientRpc(RpcParams clientRpcParams = default) + void ClientStopLoadingScreenRpc(RpcParams clientRpcParams = default) { m_ClientLoadingScreen.StopLoadingScreen(); } From 7636cf04b3c61eb966e3f19246c6c14d4d5ca046 Mon Sep 17 00:00:00 2001 From: Fernando Cortez Date: Thu, 21 Mar 2024 15:55:15 -0400 Subject: [PATCH 7/8] update to Utilities changelog --- Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md b/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md index a7b84a79ee..d707bac2b0 100644 --- a/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md +++ b/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md @@ -4,6 +4,8 @@ ### Changed * Upgraded Utilities package to Netcode for GameObjects v1.8.1 (#883) + * Upgraded to the newer API for Rpcs, Universal Rpcs + * Unity.Multiplayer.Samples.Utilities assembly definition now includes Unity.Collections ## [1.8.0] - 2023-12-13 From dc67e75a8158a9b902c6890d7059635376b8ff66 Mon Sep 17 00:00:00 2001 From: Fernando Cortez Date: Fri, 22 Mar 2024 13:58:38 -0400 Subject: [PATCH 8/8] using RpcTargetUse Temp since clientId may change frequently --- .../Utilities/SceneManagement/SceneLoaderWrapper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs index ccdee557d3..8104ecb20d 100644 --- a/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs +++ b/Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs @@ -180,7 +180,7 @@ void OnSceneEvent(SceneEvent sceneEvent) if (NetworkManager.IsServer) { // Send client RPC to make sure the client stops the loading screen after the server handles what it needs to after the client finished synchronizing, for example character spawning done server side should still be hidden by loading screen. - ClientStopLoadingScreenRpc(RpcTarget.Group(new[] { sceneEvent.ClientId }, RpcTargetUse.Persistent)); + ClientStopLoadingScreenRpc(RpcTarget.Group(new[] { sceneEvent.ClientId }, RpcTargetUse.Temp)); } break; }