Skip to content

fix: NetworkVariable change prior to ownership change using distributed authority topology fails to sync NetworkVariable - #4107

Merged
NoelStephensUnity merged 3 commits into
develop-2.0.0from
fix/UUM-148291/networkvariable-change-before-ownership-change
Jul 28, 2026
Merged

fix: NetworkVariable change prior to ownership change using distributed authority topology fails to sync NetworkVariable#4107
NoelStephensUnity merged 3 commits into
develop-2.0.0from
fix/UUM-148291/networkvariable-change-before-ownership-change

Conversation

@NoelStephensUnity

@NoelStephensUnity NoelStephensUnity commented Jul 27, 2026

Copy link
Copy Markdown
Member

Purpose of this PR

This resolves the issue where in a distributed authority session changing a NetworkVariable prior to changing ownership in the same call-stack would result in the NetworkVariable not being synchronized.

Jira ticket

UUM-148291

Changelog

  • Fixed: Issue where in a distributed authority session changing a NetworkVariable prior to changing ownership in the same call-stack would result in the NetworkVariable not being synchronized.

Documentation

  • No documentation changes or additions were necessary.

Testing & QA (How your changes can be verified during release Playtest)

Functional Testing

Manual testing :

Automated tests:

  • Covered by existing automated tests
  • Covered by new automated tests
    • WIP

Does the change require QA team to:

  • Review automated tests?
  • Execute manual tests?
  • Provide feedback about the PR?

If any boxes above are checked the QA team will be automatically added as a PR reviewer.

Up-port

This will require an up-port.

Backports

No backport is required.

This resolves the issue where in a distributed authority session changing a NetworkVariable prior to changing ownership in the same call-stack would result in the NetworkVariable not being synchronized.
Removing the additional authority check as it is not needed.
Fixing a very edge case scenario that shouldn't happen but in the event it does when finding objects by type within a specific scene, if the scene is invalid then use an empty array for the found objects.
@codecov-github-com

codecov-github-com Bot commented Jul 27, 2026

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

@@                Coverage Diff                @@
##           develop-2.0.0    #4107      +/-   ##
=================================================
+ Coverage          73.87%   73.89%   +0.01%     
=================================================
  Files                172      172              
  Lines              28013    28020       +7     
=================================================
+ Hits               20695    20705      +10     
+ Misses              7318     7315       -3     
Flag Coverage Δ
NGOv2_project_testproject_ubuntu_pinnedTrunk 73.68% <100.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...ty.netcode.gameobjects/Runtime/Core/FindObjects.cs 84.31% <100.00%> (ø)
....netcode.gameobjects/Runtime/Core/NetworkObject.cs 74.98% <100.00%> (+0.09%) ⬆️

... and 1 file with indirect coverage changes

Components Coverage Δ
com.unity.netcode.gameobjects 73.89% <100.00%> (+0.01%) ⬆️

ℹ️ Need help interpreting these results?

@michalChrobot michalChrobot left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good from what I understand

@FelixWentworth-Unity FelixWentworth-Unity left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

checked changes against repro project - lgtm!

@NoelStephensUnity
NoelStephensUnity merged commit 3a09971 into develop-2.0.0 Jul 28, 2026
26 checks passed
@NoelStephensUnity
NoelStephensUnity deleted the fix/UUM-148291/networkvariable-change-before-ownership-change branch July 28, 2026 14:33
michalChrobot added a commit that referenced this pull request Aug 3, 2026
* chore: Adding a note about DontDestroyOnLoad usage for Networked scene objects (#4070)

Docs correction

* ci: Split code coverage into Package Test and Project Test jobs (#4101)

* ci: Split code coverage into Package Test and Project Test jobs

Convert the existing coverage job to [Code Coverage] Package Test - NGO [ubuntu, trunk] and add [Code Coverage] Project Test - NGO testproject [ubuntu, trunk]. Wire Package Test into PR/nightly triggers and Project Test into the weekly run.

* ci: Run both coverage jobs on PR and nightly

* ci: Use pinnedTrunk for PR coverage and drop package-test job

* chore: Point CMB resources at new monorepo (#4106)

* chore: Point CMB resources at new monorepo

* fix: NetworkVariable change prior to ownership change using distributed authority topology fails to sync NetworkVariable (#4107)

* fix

This resolves the issue where in a distributed authority session changing a NetworkVariable prior to changing ownership in the same call-stack would result in the NetworkVariable not being synchronized.

* fix - update

Removing the additional authority check as it is not needed.
Fixing a very edge case scenario that shouldn't happen but in the event it does when finding objects by type within a specific scene, if the scene is invalid then use an empty array for the found objects.

* fix: spawn disabled in scene placed and network prefab registration (#4093)

* fix

- Issue where disabled in-scene placed NetworkObjects could not be spawned after starting a session.
- Issue where users are allowed to spawn a NetworkObject with a GlobalObjectIdHash value of 0 (zero).

* update

NetworkAnimator not pointing to an animator within awake now just logs a warning as opposed to an error.

* test

Updating tests based on the fixes applied to this branch.
A large portion is related to some integration tests trying to spawn NetworkObjects with a GlobalObjectIdHash value of zero(0).

* update

Style and providing internal write access to the prefabs list.

* test

Potentially last iteration on fixing/updating integration tests.

* test - fix

Using the fixed version of NetworkPrefabHandlerSpawnAndSynchronizeTests.
Fixing some issues with prefab and handler creation.

* style

Fixing formatting issues.

* style

Fixing some standards formatting related issues.

* style

removing trailing spaces.

* style

Super weird one... but using ? as opposed to an if null check.

* style

Removing commented out code that is no longer needed/used.

* update

Committing suggested changes.

Co-authored-by: Emma <emma.mcmillan@unity3d.com>

* update

Applying changes based on review discussion.

* update

Making adjustments based on review discussion.

* style

Removing field that is no longer valid.
Moving Awake higher in NetworkObject as it has become wedged in the middle of the code.

* update

Adding change log entries.

* update

Inverting logic (oops)

* doc

Updating NetworkObject documentation and in-scene placed documentation.

* Update documentation for the two types of NetworkObjects

Clarified the categories of NetworkObjects and their requirements. Added details for dynamically instantiated and in-scene placed NetworkObjects.

* style

White spaces!

* Apply suggestions from code review

Co-authored-by: Amy Reeve <amy.reeve@unity3d.com>

---------

Co-authored-by: Emma <emma.mcmillan@unity3d.com>
Co-authored-by: Amy Reeve <amy.reeve@unity3d.com>

* docs: Docs-wide link fixes and xref update (#4102)

* Docs-wide link fixes and xref update

* Typo in API docs

* chore: Add NGO_EXCLUDE_HEAVY_TESTS define (#4114)

Add NGO_EXCLUDE_HEAVY_TESTS

---------

Co-authored-by: Nikos <nikos@unity3d.com>
Co-authored-by: Emma <emma.mcmillan@unity3d.com>
Co-authored-by: Noel Stephens <noel.stephens@unity3d.com>
Co-authored-by: Amy Reeve <amy.reeve@unity3d.com>
Co-authored-by: mnachury-unity <120488254+mnachury-unity@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants