Com.unity.multiplayer.samples.coop Versions Save

A small-scale cooperative game sample built on the new, Unity networking framework to teach developers about creating a similar multiplayer game.

v2.5.0

1 month ago

Boss Room Changelog

[2.5.0] - 2024-04-18

Changed

  • Upgraded 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
  • Upgraded editor version to 2022.3.22f1 (#884)
    • com.unity.render-pipelines.universal upgraded to v14.0.10
  • ClientPlayerAvatarNetworkAnimator has been created to: instantiate the player model based on a networked GUID, rebind this rig to the player's Animator, and apply synchronize data to said Animator (#886)
    • This change allows for NetworkAnimator's synchronize step to properly apply its sync data to clients instead of applying an animation state change on OnNetworkSpawn()
    • A side-effect of this change has been that a coroutine that had been awaiting the assignment of NetworkAnimator has since been removed as it is no longer an issue on Netcode for GameObjects (since v1.3.1)

Cleanup

  • Removed NetworkObject from MainMenuState (#881)

Fixed

  • Changed Canvas Sort order of multiple UI elements to enable visibility of RNSM and reconnection attempts during the loading screen (#879)
  • Added Null reference check to ClientInputSender to fix null reference for missing ability (#880)

Got Feedback about Boss Room? Let us know via our Feedback Form.

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

Utilities Changelog

[1.9.0] - 2024-04-dd

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

Full Changelogs:

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.5.0/CHANGELOG.md https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.5.0/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.8.1",
  • "com.unity.transport": "2.0.2",
  • "com.unity.services.authentication": "2.7.2",
  • "com.unity.multiplayer.tools": "2.0.0-pre.3",
  • "com.unity.services.lobby": "1.1.0",
  • "com.unity.services.relay": "1.0.5",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696"

Editor version

  • Editor is 2022.3.22f1

v2.4.0

6 months ago

Boss Room Changelog

[2.4.0] - 2023-12-13

Changed

  • Upgraded editor version to 2022.3.14f1 (#871)
    • com.unity.ai.navigation upgraded to v1.1.5
    • com.unity.render-pipelines.universal upgraded to v14.0.9
    • com.unity.services.authentication upgraded to v2.7.1
  • Upgraded Boss Room to Netcode for GameObjects v1.7.1 (#871)

Fixed

  • Fixed NetworkVariable warnings that would be logged when a player was spawned (#863) For a player, certain NetworkVariable values were previously modified before the player's NetworkObject was spawned, resulting in warnings. Now, the NetworkVariable itself is instantiated on the server pre-spawn, such that it is instantiated with the new default value, ensuring the new default value is ready to be read on subsequent OnNetworkSpawn methods for said NetworkObject.

Got Feedback about Boss Room? Let us know via our Feedback Form.

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

Utilities Changelog

[1.8.0] - 2023-12-13

Changed

  • Upgraded Utilities package to Netcode for GameObjects v1.7.1 (#871)

Full Changelogs:

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.4.0/CHANGELOG.md https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.4.0/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.7.1",
  • "com.unity.transport": "2.0.2",
  • "com.unity.services.authentication": "2.7.2",
  • "com.unity.multiplayer.tools": "2.0.0-pre.3",
  • "com.unity.services.lobby": "1.1.0",
  • "com.unity.services.relay": "1.0.5",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696"

Editor version

  • Editor is 2022.3.14f1

v2.3.0

9 months ago

Boss Room Changelog

[2.3.0] - 2023-09-07

Changed

  • Upgraded editor version to 2022.3.7f1 (#855)
    • Upgraded Authentication Service package to v2.7.1
  • Replaced usages of null-coalescing and null-conditional operators with regular null checks. (#867) These operators can cause issues when used with types inheriting UnityEngine.Object because that type redefines the == operator to define when an object is null. This redefinition applies to regular null checks (if foo == null) but not to those operators, thus this could lead to unexpected behaviour. While those operators were safely used within Boss Room, only with types that were not inheriting UnityEngine.Object, we decided to remove most usages for consistency. This will also help avoid accidental mistakes, such as a user reusing a part of this code, but modifying it so that one of those operators are used with a UnityEngine.Object.
  • Upgraded Boss Room to Netcode for GameObjects v1.6.0 (#865)
    • A package Version Define has been created for Netcode for GameObjects v.1.5.2 - v1.6.0. Recent refactorings to NetworkManager's shutdown have prevented the ability to invoke CustomMessages when OnClientDisconnected callbacks are invoked during a shutdown as host. This regression has caused one of our runtime tests, namely Unity.BossRoom.Tests.Runtime.ConnectionManagementTests.UnexpectedServerShutdown_ClientsFailToReconnect, to fail and it does not impact gameplay. This is a known issue and will be addressed in a future NGO version.
  • Upgraded to Lobby 1.1.0 (#860).
    • Lobbies are now locked when being created and are only unlocked when the relay allocation is ready.
    • Removed explicit reference to Wire in the package manifest, since Wire is already a dependency of Lobby

Fixed

  • Fixed colliders on diagonal walls to not have negative scale (#854).
  • Fixed order of components in networked GameObjects (#866). NetworkObjects are now always above NetworkBehaviours in the component order in GameObjects. This fixes a bug where during scene unloading the NetworkBehaviours would be destroyed before the NetworkObject on the host, which caused these NetworkBehaviours to not have their OnNetworkDespawned invoked in that situation on the host.
  • Unnecessary update requests are no longer being sent to Lobby after receiving update events from the service (#860).
  • Fixed a condition where one would be unable to quit the application through OS-level quit button, nor the in-game quit button (#863)

Got Feedback about Boss Room? Let us know via our Feedback Form.

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

Utilities Changelog

[1.7.0] - 2023-09-07

Changed

  • Updating package dependencies (#869)
    • Tutorial Framework upgraded to v3.1.3
    • Netcode for GameObjects upgraded to v1.6.0
    • Unity Relay upgraded to v1.0.5

Changed

  • Replaced usages of null-coalescing and null-conditional operators with regular null checks. (#867) These operators can cause issues when used with types inheriting UnityEngine.Object because that type redefines the == operator to define when an object is null. This redefinition applies to regular null checks (if foo == null) but not to those operators, thus this could lead to unexpected behaviour. While those operators were safely used within Boss Room, only with types that were not inheriting UnityEngine.Object, we decided to remove most usages for consistency. This will also help avoid accidental mistakes, such as a user reusing a part of this code, but modifying it so that one of those operators are used with a UnityEngine.Object.

Fixed

  • Clarified fix used to handle clients reconnecting to the server while keeping the same active scene and having additional scenes additively loaded (#864)
  • Host loading progress bar is now properly updated on all clients during scene loads (#862)

Full Changelogs:

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.3.0/CHANGELOG.md https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.3.0/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.6.0",
  • "com.unity.transport": "2.0.2",
  • "com.unity.services.authentication": "2.7.1",
  • "com.unity.multiplayer.tools": "2.0.0-pre.3",
  • "com.unity.services.lobby": "1.1.0",
  • "com.unity.services.relay": "1.0.5",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696"

Editor version

  • Editor is 2022.3.7f1

v2.2.0

11 months ago

Boss Room Changelog

[2.2.0] - 2023-07-06

Added

  • Added NetworkSimulator tool (#843). This tool can be used to simulate network conditions such as latency, jitter, packet drop, disconnects, etc. It can be used through the NetworkSimulator component's editor (see the NetworkSimulator documentation), but only in-editor. To be able to use it in a build, a custom in-game UI window was added. The in-game UI window opens up automatically when starting or joining a networked session, and can be opened and closed again by pressing 'tab' on a keyboard, or using five fingers at once on mobile.

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/assets/89089503/263a5305-a498-4863-baee-3534438c52c3

Changed

  • Upgraded editor version to 2022.3.0f1 (#840)
  • Updated Multiplayer Tools to version 2.0.0-pre.3 (#840)
  • NetworkTransform bandwidth optimizations applied to NetworkObject prefabs inside project (#836) Netcode for GameObjects v1.4.0 introduced bandwidth compression techniques to further reduce the bandwidth footprint of a NetworkTransform's synchronization payload. Inside Boss Room, the base prefab for PCs and NPCs, Character, had its NetworkTransform modified to now utilize half float precision, ie. "Use Half Float Precision" set to true. Its y position is also explicitly no longer synced. This results in a net 5 byte reduction in a NetworkTransform's synchronization payload. This bandwidth reduction was applied also to the Archer's arrow NetworkObject prefabs. Additionally, several NetworkObjects have now their "Synchronize Transform" flag disabled inside their NetworkObject component, meaning that its transform properties will not be synced when spawning and/or when late-joining clients connect. This is particularly useful if the NetworkObject is used more for management related tasks and has no spatial synchronization needs. For more information, see Netcode for GameObjects' v1.4.0 release notes.
  • Updated Unity Transport Package to version 2.0.2 (#843). This gives access to the NetworkSimulator tool.
  • Changed quality settings to allow full resolution MipMaps on mobile as a workaround for a regression in UI UV scaling (#848)

Got Feedback about Boss Room? Let us know via our Feedback Form.

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

Utilities Changelog

[1.6.1] - 2023-06-14

Fixed

  • Updating package dependency to Netcode for GameObjects version 1.4.0 (#839)

Full Changelogs:

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.2.0/CHANGELOG.md https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.2.0/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.4.0",
  • "com.unity.transport": "2.0.2",
  • "com.unity.services.authentication": "2.5.0",
  • "com.unity.multiplayer.tools": "2.0.0-pre.3",
  • "com.unity.services.lobby": "1.1.0-pre.3",
  • "com.unity.services.relay": "1.0.5",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696"

Editor version

  • Editor is 2022.3.0f1

v2.1.0

1 year ago

Boss Room Changelog

[2.1.0] - 2023-04-27

Added

  • Added OnServerStopped event to ConnectionManager and ConnectionState (#826). This allows for the detection of an unexpected shutdown on the server side.

Changed

  • Upgraded Boss Room to NGO 1.4.0 (#829)
  • Replaced our polling for lobby updates with a subscription to the new Websocket based LobbyEvents (#805). This saves up a significant amount of bandwidth usage to and from the service, since updates are infrequent in this game. Now clients and hosts only use up bandwidth on the Lobby service when it is needed. With polling, we used to send a GET request per client once every 2s. The responses were between ~550 bytes and 900 bytes, so if we suppose an average of 725 bytes and 100 000 concurrent users (CCU), this amounted to around 725B * 30 calls per minute * 100 000 CCU = 2.175 GB per minute. Scaling this to a month would get us 93.96 TB per month. In our case, since the only changes to the lobbies happen when a user connects or disconnects, most of that data was not necessary and can be saved to reduce bandwidth usage. Since the cost of using the Lobby service depends on bandwidth usage, this would also save money on an actual game.
  • Replaced our custom pool implementation using queues with ObjectPool (#824)(#827)
  • Simplified reconnection flow by offloading responsibility to ConnectionMethod (#804). Now the ClientReconnectingState uses the ConnectionMethod it is configured with to handle setting up reconnection (i.e. reconnecting to the Lobby before trying to reconnect to the Relay server if it is using Relay and Lobby). It can now also fail early and stop retrying if the lobby doesn't exist anymore.
  • Upgraded Boss Room to NGO 1.3.1 (#828) NetworkPrefabs inside NetworkManager's NetworkPrefabs list have been converted to NetworkPrefabsList ScriptableObject.
  • Profile names generated are now only 30 characters or under to fit Authentication Service requirements (#831)

Cleanup

  • Certain structs converted to implement interface INetworkSerializeByMemcpy instead of INetworkSerializable (#822) INetworkSerializeByMemcpy optimizes for performance at the cost of bandwidth usage and flexibility, however it will only work with structs containing value types. For more details see the official doc.
  • Clarified a TODO comment inside ClientCharacter, detailing how anticipation should only be executed on owning client players (#786)
  • Removed now unnecessary cached NetworkBehaviour status on some components, since they now do not allocate memory (#799)

Fixed

  • EnemyPortals' VFX get disabled and re-enabled once the breakable crystals are broken (#784)
  • Elements inside the Tank's and Rogue's AnimatorTriggeredSpecialFX list have been revised to not loop AudioSource clips, ending the logging of multiple warnings to the console (#785)
  • ClientConnectedState now inherits from OnlineState instead of the base ConnectionState (#801)
  • UpdateRunner now sends the right value for deltaTime when updating its subscribers (#805)
  • Inputs are better sanitized when entering IP address and port (#821). Now all invalid characters are prevented, and UnityTransport's NetworkEndpoint.TryParse is used to verify the validity of the IP address and port that are entered before making the join/host button interactable.
  • Fixed failing connection management test (#826). This test had to be ignored previously because there was no mechanism to detect unexpected server shutdowns. With the OnServerStopped callback introduced in NGO 1.4.0, this is no longer an issue.
  • Decoupled SceneLoaderWrapper and ConnectionStates (#830). The OnServerStarted and OnClientStarted callbacks available in NGO 1.4.0 allows us to remove the need for an external method to initialize the SceneLoaderWrapper after starting a NetworkingSession.

Got Feedback about Boss Room? Let us know via our Feedback Form.

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

Utilities Changelog

[1.6.0] - 2023-04-27

Changed

  • Removed need for SceneLoaderWrapper.AddOnSceneEventCallback (#830). The OnServerStarted and OnClientStarted callbacks available in NGO 1.4.0 allows us to remove the need for an external method to initialize the SceneLoaderWrapper after starting a NetworkingSession.

Full Changelogs:

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/CHANGELOG.md https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.4.0",
  • "com.unity.services.authentication": "2.3.1",
  • "com.unity.multiplayer.tools": "1.1.0",
  • "com.unity.services.lobby": "1.1.0-pre.3",
  • "com.unity.services.relay": "1.0.3",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696"

Editor version

  • Editor is 2021.3.15f1

v2.0.4

1 year ago

Boss Room Changelog

[2.0.4] - 2022-12-13

Changed

  • Updated Boss Room to NGO 1.2.0 (#791).
  • Replaced the workaround using custom messages to send a disconnect reason to clients with the new DisconnectReason feature in NGO. (#790)
  • Updating editor version to 2021.3.15f1 (#795)

Got Feedback about Boss Room? Let us know via our Feedback Form.

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

Utilities Changelog

[1.5.1] - 2022-12-13

Changed

  • Bumped RNSM to 1.1.0: Switched x axis units to seconds instead of frames now that it's available. This means adjusting the sample count to a lower value as well to 30 seconds, since the x axis was moving too slowly. (#788)

If you choose to use it with previous editor versions, you will experience compatibility issues with some aspects of the project. If you are currently running Boss Room with 2020LTS, we recommend upgrading to 2021 LTS at the earliest opportunity via the Unity Hub.

Full Changelogs:

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/CHANGELOG.md https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.2.0",
  • "com.unity.services.authentication": "2.2.0",
  • "com.unity.multiplayer.tools": "1.1.0",
  • "com.unity.services.lobby": "1.0.3",
  • "com.unity.services.relay": "1.0.3",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696",

Editor version

  • Editor is 2021.3.15f1

v2.0.3

1 year ago

Boss Room Changelog

[2.0.3] - 2022-12-05

Changed

  • Hosts now delete their lobby when shutting down instead of only leaving it (#772) Since Boss Room doesn't support host migration, there is no need to keep the lobby alive after the host shuts down. This also changes how LobbyServiceExceptions are handled to prevent popup messages on clients trying to leave a lobby that is already deleted, following the best practices outlined in this doc : https://docs.unity.com/lobby/delete-a-lobby.html

Fixed

  • Mage's heal FX plays out on itself and on targets. Added ability for SpecialFXGraphic components to remain at spawn rotation (#771)

Got Feedback about Boss Room? Let us know via our Feedback Form.

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

If you choose to use it with previous editor versions, you will experience compatibility issues with some aspects of the project. If you are currently running Boss Room with 2020LTS, we recommend upgrading to 2021 LTS at the earliest opportunity via the Unity Hub.

Utilities Changelog

[1.5.0] - 2022-12-05

Changed

  • ClientNetworkAnimator component has been added to the Samples Utilities Package. This allows for authority on Animators to be passed onto clients, meaning animations will be client-driven. (#780)

Full Changelogs:

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/CHANGELOG.md https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.1.0",
  • "com.unity.services.authentication": "2.2.0",
  • "com.unity.multiplayer.tools": "1.0.0",
  • "com.unity.services.lobby": "1.0.3",
  • "com.unity.services.relay": "1.0.3",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696",

Editor version

  • Editor is 2021.3.12f1

v2.0.2

1 year ago

Boss Room Changelog

[2.0.2] - 2022-11-01

Fixed

  • Bumped Unity editor version to fix android build error (#779)

Got Feedback about Boss Room? Let us know via our Feedback Form.

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

If you choose to use it with previous editor versions, you will experience compatibility issues with some aspects of the project. If you are currently running Boss Room with 2020LTS, we recommend upgrading to 2021 LTS at the earliest opportunity via the Unity Hub.

Full Changelogs:

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/CHANGELOG.md https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.1.0",
  • "com.unity.services.authentication": "2.1.1",
  • "com.unity.multiplayer.tools": "1.0.0",
  • "com.unity.services.lobby": "1.0.3",
  • "com.unity.services.relay": "1.0.3",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696",

Editor version

  • Editor is 2021.3.12f1

v2.0.1

1 year ago

Boss Room Changelog

[2.0.1] - 2022-10-25

We are excited to announce the release of Boss Room 2.0.1 and its Utilities package version 1.4.1! Thank you for your continuous support and feedback!

Got Feedback about Boss Room? Let us know via our Feedback Form.

What’s new in this Release?

  • Boss Room 2.0.1

    • Updated Boss Room to NGO 1.1.0
      • Now uses managed types for custom INetworkSerializable in NetworkVariables. NetworkGUID is now a class instead of a struct.
      • Cleanup Relay and UTP setup. Flow is now simpler, no need for the RelayUtilities anymore.
      • Reverted a few values in NetworkManager to reflect changes in default values
      • Set connection approval timeout higher, 1 sec is pretty short. If there's a packet drop, some hangups on the network, clients would get timed out too easily.
    • Multiple other fixes, see changelog for more details https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/CHANGELOG.md
  • Utilities package version 1.4.1

    • ClientLoadingScreen now sets raycast blocking to true when the loading screen is visible
    • Deprecated Unity Relay Utilities, it should no longer be needed with NGO 1.1.0's new API for setting up Relay

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

If you choose to use it with previous editor versions, you will experience compatibility issues with some aspects of the project. If you are currently running Boss Room with 2020LTS, we recommend upgrading to 2021 LTS at the earliest opportunity via the Unity Hub.

Full Changelogs:

https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/CHANGELOG.md https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/Packages/com.unity.multiplayer.samples.coop/CHANGELOG.md

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.1.0",
  • "com.unity.services.authentication": "2.1.1",
  • "com.unity.multiplayer.tools": "1.0.0",
  • "com.unity.services.lobby": "1.0.3",
  • "com.unity.services.relay": "1.0.3",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696",

Editor version

  • Editor is 2021.3.10f1

v2.0.0

1 year ago

Boss Room Changelog

[2.0.0] - 2022-10-06

We are pleased to announce the release of Boss Room 2.0 and its move from ‘Early Access’ to ‘Released’. Thank you for your continuous support and feedback! With this release, we're doing a major version bump to reflect all of the recent refactors and architecture modifications to the project since 1.3.1.

What does this mean?

Boss Room is now considered to be stable and in a ‘production ready’ state.

  • We will continue to make updates to dependent packages and supported editor versions. See below for further details about compatibility.
  • We will fix bugs and issues associated with these updates to ensure Boss Room’s smooth running.
  • We will target new features that are critical to its operation and maintaining good practices.
  • We may choose to add more large, non-essential features to Boss Room in future; this is dependent on the Unity multiplayer roadmap.

We will continue to create new multiplayer samples according to the needs of the community and development of Unity technology. If there’s something you’d like to see, let us know on Discord, Github or in the Forum.

Got Feedback about Boss Room? Let us know via our new Feedback Form.

What’s new in this Release?

  • Introduction of a new enemy type: the Vandal Imp. This enemy features a NetworkRigidbody-based Action, whereby it instantiates a Physics-based projectile.

https://user-images.githubusercontent.com/71790295/194339683-3f9e366c-97e9-499c-9bfe-a3a1dbfeb57d.mp4

  • A Pickup and Drop action has been added to the Action system. It is actionable once targeting a "Heavy"-tagged NetworkObject. This showcases NetworkObject parenting with a pattern to follow the player’s animation bones once picked up.

https://user-images.githubusercontent.com/71790295/194340055-5710cce3-ba5c-4229-a045-0b741bea3c15.mp4

  • Project architecture refactor:

    • Action and ActionFX classes have been merged into a single, pooled ScriptableObject-based Action class
    • Easier-to-follow folder structure based on domain-based assemblies
    • Merged GameState bridge classes to cut down unnecessary code verbosity
  • Improved architecture.md and added an index in the project’s readme for referencing important features

  • Several Netcode performance improvements. For example, each player’s NetworkTransform component now sends 23B per update, down from 47B. Unnecessary data was synchronized (ie. the player’s scale and y position).

  • Improved Netcode good practices:

    • Connection management refactored into a simpler state machine. This makes the connection flow easier to follow and maintain.
    • Proper instantiation pattern for in-scene placed NetworkObjects which may be destroyed during a session. The old pattern was producing unkillable zombie imps on late join.
  • Art performance improvements through the use of mesh LODs and mesh asset crunching

See https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/ARCHITECTURE.md for more details.

Installation Guide: https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom/bossroom/index.html

If you choose to use it with previous editor versions, you will experience compatibility issues with some aspects of the project. If you are currently running Boss Room with 2020LTS, we recommend upgrading to 2021 LTS at the earliest opportunity via the Unity Hub.

Full Changelog

Added

  • Vandal Imp and bomb throwing action integrated in main game: NetworkRigidbody-based toss Action, thrown by VandalImp class (code already in 1.3.0)

  • Pickup and Drop action added to the Action system. Actionable once targeting a "Heavy"-tagged NetworkObject. (#372) - This shows NetworkObject parenting with a pattern to follow animation bones (the hands when picking up)

  • Added handling the OnTransportFailure callback (#707). This callback is invoked when a failure happens on the transport's side, for example if the host loses connection to the Relay service. This won't get called when the host is just listening with direct IP, this would need to be handled differently (by pinging an external service like google to test for internet connectivity for example). Boss Room now handles that callback by returning to the Offline state.

  • Introduced a mechanism for identifying actions by their runtime-generated ActionID, instead of relying on a fragile ActionType enumeration (#705)

  • NetworkObjectSpawner handles dynamically spawning in-scene placed NetworkObjects (#717) - You can't place a NetworkObject in scene directly and destroy it at runtime. This PR showcases proper handling of NetworkObjects that you'd wish to place inside of scenes, but would still want to destroy at game-time. Examples of these are: Imps, VandalImps, ImpBoss. NetworkObjects such as doors, crystals, door switch, etc. remain the same, statically-placed in scene.

  • Quality levels settings set up for Desktop [MTT-4450] (#713)

  • Added custom RNSM config with graph for RTT instead of single value (#747) Being able to see latency bumps and variation is helpful to identify the cause of in-game issues. This also adds clearer headers for each RNSM graphs.

  • Art and sound pass for NetworkRigidbody-based toss action [MTT-2732] (#689) This also adds the Vandal imp to the main game.

  • Added tests for connection management (#692). These are integration tests to validate that the state machine works properly. They use Netcode's NetworkIntegrationTest

  • Added TOC and Index of educational concepts to readme (#736) Boss Room can be quite intimidating for first time users. This index will hopefully help soften the onboarding.

  • Art and sound polish for the pick up and drop action (#749)

  • LODs setup for some art assets [MTT-4451] (#712)

Changed

  • Updated tools, authentication and relay packages (#690)

  • NetworkedMessageChannels can now be subscribed to before initiating a connection (#670) This allows a subscription's lifetime to not be restricted by a connection, so subscribing before a connection is possible, and subscriptions will still work properly if the connection ends and a new one begins.

  • Action and ActionFX classes have been merged into a single pooled Scriptable Object-based Action class; all the existing actions have been refactored to follow this new design (#705) This should make these more readable and consistent following our client/server/shared to domain based assemblies refactor.

  • Configured the NetworkTransform components of every NetworkObject to reduce the bandwidth usage (#716). This prevents the unnecessary synchronization of data that clients do not need, i.e. a character's scale or y position. In the case of a character, it reduced the size of each update from 47B to 23B.

  • Instead of a NetworkBehaviour that carries a WinState netvar we now pass the win state on the server to the PostGame scene and it then stores that state in the netvar, eliminating the need to preserve a NetworkBehaviour-bearing gameObject across scenes. (#724)

  • Reduced the MaxPacketQueueSize UTP parameter value from 512 to 256 (#728). This reduces the amount of memory used by UTP by around 1 MB. Boss Room does not need a bigger queue size than this because there can only be 7 clients connected to a host and UTP already limits the maximum number of in-flight packets to 32 per connection.

  • Updated Lobby package to 1.0.3 and reworked our auto-reconnect flow to use the Reconnect feature from the Lobby API (#737). Now, clients do not leave the lobby when they are disconnected, and the host does not remove them from it. They are marked as disconnected by the Relay server and can attempt to reconnect to the lobby directly, until a certain timeout (specified by the Disconnect removal time parameter, set in the dashboard configuration).

  • Modified the red arrow of the boss charge attack to fade in and out (rather than just being enabled disabled) (#715)

Cleanup

  • Refactored connection management into simpler state machine (#666) This makes the connection flow easier to follow and maintain. Each connection state now handles user inputs and Netcode callbacks as they should, removing the need for big switch-cases of if-else statements. These inputs and callbacks also trigger transitions between these states.

  • Rearranged the Action system by adding more folders that separate different pieces more clearly (#701)

  • Merged GameState bridge classes (the ones that contained no or limited functionality) (#697 #732) This cleans up our sometimes too verbose code split.

  • Replaced our dependency injection solution with VContainer. (#679) This helps us reduce the amount of code we have to maintain.

  • Added Unsubscribe API for the ISubscriber<T> along with refactoring of the codebase to use this API instead of IDisposable handle when there is just one subscription (#612)

  • Namespaces in the project have been changed to map to their assembly definitions (#732)

  • Numerous name changes for fields and variables to match their new type names (#732)

  • Removed DynamicNavObstacle - an unused class (#732)

  • Merged networked data classes into their Server counterparts. An example of that change is the contents of NetworkCharacterState getting moved into ServerCharacter, contents of NetworkDoorState getting moved into SwitchedDoor etc. (#732)

  • Engine version bump to 2021.3.10f1 (#740)

  • Updated the Architecture.md to match the current state of the project, with all of our recent refactorings. Architecture.md now also has a lot of links to the relevant classes, simplifying the navigation in our code-base (#763)

Fixed

  • Subscribing to a message channel while unsubscribing is pending (#675). This issue prevented us from subscribing to a message channel after having unsubscribed to it if no message had been sent between the un-subscription and the new subscription.

  • Using Visible instead of Enabled to make sure RNSM continues updating when off (#702)

  • Some NetworkBehaviours are disabled instead of being destroyed (#718) - This preserves the index order for NetworkBehaviours between server and clients, resulting in no indexing issue for sending/receiving RPCs.

  • Scene Bootstrapper: future proofing bootstrap scene so we don't rely on Startup's path. MTT-3707. (#735)

  • Better instructions for host listen IP. (#738) Most useful cases are usually 127.0.0.1 and 0.0.0.0.

  • Tank's shield charge animation not getting stuck due to multiple invocations. (#742)

  • Lobby join button not interactable if no join code is provided. (#744) This prevents an ArgumentNullException happening when we try to join a Lobby with an empty join code.

  • Lobby UI unblocking before it should. (#748) This makes sure that we are not unblocking the UI while we are in the middle of the connection process, to prevent users from starting a second one at the same time. Now the UI stays blocked until the connection either succeeds of fails.

Dependencies

Packages

  • "com.unity.netcode.gameobjects": "1.0.2",
  • "com.unity.services.authentication": "2.1.1",
  • "com.unity.multiplayer.tools": "1.0.0",
  • "com.unity.services.lobby": "1.0.3",
  • "com.unity.services.relay": "1.0.3",
  • "com.veriorpies.parrelsync": "https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync#bb3d5067e49e403d8b8ba15c036d313b4dd2c696",

Editor version

  • Editor is 2021.3.10f1