Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Addressable scene loading #3040

Open
wants to merge 119 commits into
base: develop
Choose a base branch
from

Conversation

kroecks
Copy link

@kroecks kroecks commented Aug 30, 2024

Addressable scene loader changes

First pass merge of distributed authority feature.
Adding project settings
adding missing meta files and removing migrated class.
removing duplicate classes
Reverting manifest and packages-lock updates.
fixing typo.
Updating the minimal CI editor to use
Forgot to add the .1 to the end of exp.
removing the error exception
Removing NGO_DAMODE
Removing missed NGO_DAMODE define
Fixing an issue with disconnecting a client during the distributed objects test.
fixing an issue with client disconnect
Fixing invalid entry
Fixing some issues with the time integration test.
removing the ServerRpc and ClientRpc distributed authority support. Distributed authority only supports universal RPCs.
removing NGO_DAMODE
Wrapping rigidbody specific code blocks within COM_UNITY_MODULES_PHYSICS
Removing whitespaces.
more whitespace removal
removing using directive for System.Linq
Excluding certain tests from the tools integration test project tests.
Increasing the primary test project's 2023 editor to 2023.2 as opposed to 2023.1.
Adjusting some of the metrics tests to yield more accurate end results.
removing white spaces.
excluding certain tests from the minimal project pass.
minor fix for initial in-scene NetworkObject spawning until service fully consumes the initial Synchronize event.
Consolidated NetworkRigidbody and NetworkRigidbody2D into single base class that provides more customizable options for users.

NetworkObject no longer implements the Update method in order to check for object scene migration. Instead, it is registered in a table that is updated in the late update prior to sending any messages about objects migrating into a new scene. This removes the added processing per NetworkObject for scenarios where the NetworkObject plays a more passive role (i.e. a sinlge NetworkBehaviour with one or more NetworkVariables).

Fixed issue with parenting when using Rigidbody motion in NetworkTransform.

Fixed issue with NotMeRpcTarget when in distributed authority mode.
Fixing issue with some rigid body tests.
Reverting change to NotMeTarget as it impacts UniversalRpc tests that I need to review with Kitty to determine the best way to modify.
Fixing missing whitespace.
Missed a few spots in the NetworkTransformOwnership tests.
NoelStephensUnity and others added 25 commits September 7, 2024 10:21
…t] (Unity-Technologies#3049)

* fix

Adding the fixes from Unity-Technologies#3043

* test

Adding the tests from Unity-Technologies#3043

* update

Adding changelog entry

* fix

Check for CustomMessageManager existing before invoking.
…ze with newly joining clients (Unity-Technologies#3051)

* fix

This fixes the issue where a NetworkObject hidden from a client that is promoted to session owner will still be synchronized with newly joining clients.

* test

The test to validate the fix

* update

adding changelog entry

* style

Minor typo
…#3045)

* fix

Use server time for NetworkVariableBase.LastUpdateSent time deltas when connected to a service or when not the server.

* update

Adding changelog entry

* update

adding PR number to entry.
…th parenting transform space transitions (Unity-Technologies#3039)

* chore

Adding example of using a CharacterController that has no Rigidbody and being able to parent it under a moving and/or rotating body.
This uses to be finalized NetworkTransform updates for NGO v2.x.x.

* chore

adding the manifest file

* chore

removing packages file

* update

Adding gitignore

* fix

Adding an elevator moving body.
Fixing issue with disabling the GameObject vs disabling the CharacterController.

* update

Updating the example to mirror the most recent updates to Unity-Technologies#3013

* Create Readme.md

place holder read me

* Update Readme.md

WIP updates added some additional sections and screenshots

* update

Adding [CanEditMultipleObjects] to RotatingBodyLogicEditor.
Minor scene updates.

* Update Readme.md

* Update Readme.md

* update

cleaning up a bit.
combining connect disconnect notifications into the extended networkmanager.
made the single z-axis motion a path as opposed to the hacky way I did it originally.

* update

Adding some bumpers for extended networkmanager and selecting a connection type vs the selected network topology and vice versa.

* Update Readme.md

* update

pointing to the develop-2.0.0 branch
…hnologies#3056)

* fix

Fixing issue where NetworkSpawnManager.ShowHiddenObjectsToNewlyJoinedClient was being invoked on the session owner when scene management is disabled.

* test

Adding an additional test for NetworkSpawnManager.ShowHiddenObjectsToNewlyJoinedClient validation test that runs with scene management disabled.

Adding some additional checks within NetcodeIntegrationTestHelpers to skip any NetworkManagers that were destroyed prior to the final shutdown sequence.
* chore

Add unique message when invoking NetworkConnectionManager.DisconnectClient while in a distributed authority session.

* fix

Make the NetworkTransformEditor use NetworkTransform as the base type so it doesn't show a foldout group when using a non-derived component.

* fix

Adding ToolTips to NetworkObject (MTTB-184)

* fix

Just log a warning when developer logging is enabled if a client or server receives a universal RPC message for a NetworkObject that does not exist.

* fix

Making NetworkAnimator.Awake a protected and virtual method.

* style

removing using directive.

* update

Adding changelog entries.

* style

updating XML API documentation for `NetworkTransform.Teleport`
* fix

Only send updates to observers.

* test

Includes validation test that it only sends updates to observers.

* update

adding changelog entry.
…ologies#3068)

* bumping ngo version to 2.0.0

* adding unreleased header
* update

Minor update to some const values

* test

Adjusting test to handle slower CI VMs as well as logging additional information regarding the time it took to spawn vs the total time the test took.
…e [MTTB-135] (Up-Port) (Unity-Technologies#3075)

* fix

Fixed issue with the client count not being correct on the host or server side when a client disconnects itself from a session.

* test

validation tests for the changes/updates to this pr.

* update

updating the changelog.
…pproval (Unity-Technologies#3078)

* fix

Apply the position and rotation set by the NetworkManager.ConnectionApprovalResponse when connection approval is enabled and auto-spawn player prefabs is enabled.

* test

Validation test for this PR

* update

adding changelog entry
…isabled (Unity-Technologies#3077)

* fix

When SpawnWithObservers is disabled on player prefab, the instantiated instance should only spawn on the authority side.
For client-server this will always be the server/host.
For distributed authority this will always be the owner.

* test

Validation test for the SpawnWithObservers regression bug.

* update

updating changelog entry
…awn prefab offset (Unity-Technologies#3088)

* update

Adding OnInstantiated and OnDestroying events to NetworkManager in order to provide the ability to know when a new NetworkManager instance has been instantiated and is being destroyed.

* update

Fixing an issue where a player would not spawn with its default network prefab instance's position and rotation settings.

* test

Adding validation test

* update

adding changelog entries

* style

Adding CR between Added and entries.

* fix

Fixing player spawn position for client-server.

* test

The validation test to validate the player's spawn position will be the prefab's offset if no other values are specified.

* style

removing using directive not needed.
…ations (Unity-Technologies#3093)

* update

remove the magic injected number from NT.

* update

remove magic

* update

Adding NGO version detection and CMB service development modification capabilities.
Updating ConnectionRequestMessage and ConnectionApprovedMessage to use INetworkSerializable structs as a means to communicating a clients configuration and NGO version as well as to receive a configuration from the comb-server.

* update

Removing logging version number from console when CMB_SERVICE_DEVELOPMENT is not defined.

* Add version to service config

* update

Minor adjustments to handle DAHost mode and to process connection approved message from service.

---------

Co-authored-by: EmandM <[email protected]>
…ity-Technologies#3092)

* update

Update to NetworkObject to assist with the refresh in-scene prefab instances

* fix

Fixing issue where updating a prefab used as in-scene placed prefab instance(s) would not properly get updated if the root prefab asset was updated to have a NetworkObject component.

* update

changelog entry
Unity-Technologies#3094)

* fix

Provide an extended IContactEventHandlerWithInfo that allows users to prioritize which object is being collided with as well as being able to determine if the instance should return non-rigidbody contact events.

* update

Adding changelog entry.

* update

Adding associated PR to the entry

* style

Adding XML API documentation.

* fix

Assuring the default non-info contact event handler sets priority to the non-kinematic bodies.

* test

Added validation test for RigidbodyContactEventManager
…chnologies#3096)

* fix

This fixes the issue with in-scene placed NetworkObjects not being synchronized properly when the session owner generates a scene event type load. The service is not considered an observer and when sending a scene event type load it should send all spawned objects.

* update

adding changelog entry

* update

adding associated PR to changelog entry

* update

covering synchronization too.
… opposed to NGO version (Unity-Technologies#3098)

* update

This removes the NGO version number from the client configuration in favor of an incremented version number.

* update

removes the NetworkManager NGO version inspector view code.
…d synchronization (Unity-Technologies#3099)

* fix

This fixes the issue when using a client-server network topology spawning a player with nested NetworkTransform components would result in loss of the child NetworkTransform component(s) settings/flags which would end up being serialized to the owner client (thus causing invalid synchronization results).

* update

Adding the changelog entry.

* fix

The issue is not just for local players but for all prefabs that have nested NetworkTransforms, are owner authoritative, are not owned by the server, and the session instance is using a client-server network topology.

* test

Adding a test to validate this fix.

* update

adding PR number to changelog entry
* style

Spelling fix for error message

* update

Expose auto spawn player prefab within the inspector view when multiplayer SDK is installed. Remove the automatic enabling of this property if distributed authority is set.

* update

moving property down

* update

adding changelog entries

* update

Only show the AutoSpawnPlayerPrefabClientSide property in the inspector view if the NetworkManager instance is configured to use the distributed authority network topology.
…sions and more (Unity-Technologies#3081)

* fix

Provide additional copy of last known current NetworkVariable.Value to be able to compare against the current local value in order to detect if a client without write permissions has modified a collection.

* test

Updated collections validation tests to spot check the restore known current state when client without write permissions modifies a collection.

* update

added changelog entry

* fix

Changing order of operations within CheckDirtyState for clients without write permissions

* test

Add some spot checks to one of the dictionary tests

* fix

Fixing issue where upon a client gaining ownership of a NetworkObject that has one or more owner write permission NetworkVariables using a collection type with keyed indices (like a dictionary) can resend already synchronized entries when making a change to the collection causing non-owner clients to throw a key already exists exception.

* update

Adding changelog entrry

* update

Adjusted when the NetworkVariable update for ownership change is invoked to account for updates to owner write NetworkVariables within the OnGainedOwnership callback.

When changing ownership:
- Marking any owner read permissions NetworkVariables as dirty when sending to the new owner (both within NetworkSpawnManager for server-side update and within the NetworkVariableDeltaMessage).
- Sending any pending updates to all clients prior to sending the change in ownership message to assure pending updates are synchronized as the owner.

When initially synchronizing a client, if a NetworkVariable has a pending state update then send serialize the previously known value(s) to the synchronizing client so when the pending updates are sent they don't duplicate values.

* test

Adjusting two deferred message tests to not account for a NetworkVariable delta state update message when changing ownership and there are no pending updates.

* update

updating changelog entries

* style

* fix

This includes additional fixes for NetworkVariable collections that ended up requiring a different approach to how a server forwards NetworkVariable deltas. Now, NetworkVariableDeltaMessage forwards NetworkVariable field deltas immediately after a server has finished processing the deltas (i.e. the keeping a NetworkVariable dirty concept is not used from this point forward). I went ahead and kept the compatibility of this functionality.

NetworkVariableDeltaMessage has had its Version incremented as we now send the NetworkDelivery type in order to be able to handle this (it seemed less risky to include this than to try and bubble up this property to all message types).

This also separates the duplication of the "original internal value" and the "previous value" until after processing all deltas. If the server has to foward, it forwards first then invokes the PostDeltaRead method that performs the duplication.
This includes some minor adjustments to NetworkList in order to adjust to this new order of operations while also preserving the legacy approach.

This also includes some adjustments to NetworkBehaviourUpdater where it can force a send (flush) any pending dirty fields when changing ownership. This includes some minor modifications to NetworkObject.PostNetworkVariableWrite.

* test

Just some updates to two integration tests. These are all primarily for debugging purposes.

* update

Adding last change log entry for this PR.

* style

Updated a changelog entry to make it clearer.

* fix

DAHost fixes:
Fixed issue where it was possible to ignore forwarding a change in ownership message to the destination owner if the original owner changed ownership.
Fixed issue where it was possible to re-send a change in ownership message back to the original owner if the original owner sent the message.

* test

Adding and additional test that validates several of the fixes in this PR.

* test fix

Removing the DAHost testfixture that wasn't supposed to be added.
Fixing an issue with the NetworkObjectOwnershipTests when running in DAHost mode. It was passing because the DAHost was sending the ChangeOwnershipMessage back to the owner that changed ownership to another client (without the fix for that in this PR it would send the message to the authority/owner which is why the test was passing).

* Update com.unity.netcode.gameobjects/Runtime/Messaging/Messages/NetworkVariableDeltaMessage.cs

Co-authored-by: Dominick <[email protected]>

* style

Updating all instances of k_ServerDeltaForwadingAndNetworkDelivery and replacing with k_ServerDeltaForwardingAndNetworkDelivery

---------

Co-authored-by: Dominick <[email protected]>
* fix

NetworkPrefabProcessor now marks the default NetworkPrefabsList ScriptableObject asset as dirty if there are new imports OR deletions.

* update

adding changelog entry

* update

adding pr number to entry
…ologies#3104)

* update

changelog to match release version

* update

version of NGO

* bumping ngo version to 2.1.0

---------

Co-authored-by: NoelStephensUnity <[email protected]>
@kroecks kroecks requested a review from a team as a code owner November 6, 2024 01:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants