Skip to content

feat: Unified Netcode POC migration#3963

Open
NoelStephensUnity wants to merge 117 commits intodevelop-3.x.xfrom
experimental/v3-x-x/unified-poc-migration
Open

feat: Unified Netcode POC migration#3963
NoelStephensUnity wants to merge 117 commits intodevelop-3.x.xfrom
experimental/v3-x-x/unified-poc-migration

Conversation

@NoelStephensUnity
Copy link
Copy Markdown
Member

@NoelStephensUnity NoelStephensUnity commented Apr 29, 2026

(Not ready for merge but setting it to review for testing purposes)

Purpose of this PR

This PR takes the current POC work in progress and migrates it into the next major version for NGO.
The majority of changes:

  • The Unity.Netcode.GameObjects.Editor namespace change.
    • Script and asmdef files.
  • The removal of the legacy multiprocess runtime stuff that we most likely will never use.
    • This will be preserved in the develop-2.0.0 branch.

Jira ticket

(Will get the ticket assigned placed here)

Changelog

NA (base develop-3.x.x branch creation)

Documentation

  • This pass does not include any documentation updates, but there will be documentation updates in future PRs.

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

Functional Testing

Manual testing :

  • Manual testing done

Automated tests:

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

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.

Backports

No back porting needed since this is for v3.x.x.

NoelStephensUnity and others added 30 commits May 18, 2023 16:48
Adjusting namespaces to get NGO running with N4E
This is a "still messy" version that is working but needs more thought on the namespace collision fixes.
Some additions and modifications to finalize the hybrid prefab concept.
cleaning up some of the POC adjustments.
wrapping some debug within loglevel developer.
Getting unified working with the initial synchronization when scene management is enabled.
Providing a temporary way to remove the NetworkObjectBridge.
Adding support within NetworkPrefabs and NetworkPrefab to handle the registration of hybrid spawned objects (i.e. no more hacky-way  of registering).
Moving the hybrid spawn registration into the Start method of the NetworkObject to provide time for everything to run through Awake.
Added some script (defined out) that was helping to debug why NetworkObject was being disabled sometimes (moving the initialization to Start resolved the issue).
NetworkRigidbodyBase and NetworkTransform classes are destroyed during runtime initialization of a prefab instance if they still remain and the instance is a hybrid prefab instance (i.e. unified handles transform synchronization and physics related stuff).
Fixing issue where there are no NetworkTransforms or NetworkRigidbodyBase derived components.
Issue with AnimatorOverrideController not being handled which could cause improper processing of the animator's layers and parameters.

Issue with clients sending state changes from the NetworkAnimatorStateChangeHandler due to added HasAuthority check. When using a server authoritative animation model, owner Clients should still be able to send trigger updates to the server.
Migrated the unique world setup into this branch. The world is created prior to starting NetworkManager completely. When using hybrid prefabs (i.e. mixed mode), the final portion of the NetworkManager's start logic (i.e. endpoint connection, etc.) is not invoked until the hybrid prefabs have been registered.
Hybrid prefabs wait until the World is finished starting/being initialized.
Migrating unified things into helpers
Exit early if trying to start in hybrid mode but not configured for a single world.
Added an experimental "NetworkObjectBridge" icon (programmer art alert).
Added some additional script to handle moving the GhostAdapter and NetworkObject bridge to the top of the GameObject's components where GhostAdapter is first and then NetworkObjectBridge is 2nd.

Removed silly code to get the root transform.
Fixing some merge issues.
Making some minor modifications to assure we can make stand alone builds.
Fixing issue where Unity.NetCode was not wrapped by UNIFIED_NETCODE.
Issue with detecting unified ghost mode.
Automatically handle removing the Rigidbody on non-authority instances when running in client-server mode.
This update is the first pass to making ChildNetworkBehaviours a table keyed off of the NetworkBehahviour identifiers.
This allows for the removal of a NetworkBehaviour without it impacting the remaining NetworkBehaviours.
This could most likely be optimized by generating the initial table ahead of time on each prefab.
In-scene placed that are not registered prefabs would need to do this upon being instantiated.
Removing the  update registration when cleaning out NetworkRigidbody.
Putting back the default world initialization.
The type of world is now handled by the NGO side UnifiedBootStrap.
Removing the need to use the MPPM stuff.
Fixing issue with temporary buffer not being copied over properly when synchronizing.
Updating runtimetests to the changes in ChildNetworkBehaviours.
Fixing test project not being able to load without an AnalyticsTests compilation error.
Making ObjectNameIdentifier just use the new way we handle ChildNetworkBehaviours (i.e. it is a table now).
Marking NetworkObject.ChildNetworkBehaviours comment above as having finished the migration to a table.
Noting we should find a better place/way to initialize this stuff.
@NoelStephensUnity NoelStephensUnity marked this pull request as ready for review April 29, 2026 16:13
@NoelStephensUnity NoelStephensUnity requested review from a team and EmandM as code owners April 29, 2026 16:13
Reverting test project manifest changes.
Removing the packages-lock.json file (should never be added).
Placing the UnifiedBootstrap into its own file.
White space removal.
UnifiedBootstrap name update.
Wrapping the unified test within the UNIFIED_NETCODE define.
Adding CR/LF.
Removing this from test project as we have never come back to use it.
(It will still be on the develop-2.0.0 branch)
Wrapping some unified stuff in defines.
Adding develop-3.x.x to conventional PR branches.
Missed one spot for triggers.
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This should be set to the base-line editor version we release NGO v3.x.x with.
(Note to revert this change)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This should be set to the base-line editor version we release NGO v3.x.x with.
(Note to revert this change)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This should be set to the base-line editor version we release NGO v3.x.x with.
(Note to revert this change)

Removing trailing whitespaces.
Adding some exceptions to the v3.x.x branch until we determine if we want to rename those assemblies or have them all in one assembly.
Fixing typo.
Fixing json formatting issue.
Cleaning up the player prefab hash logical flow a bit and making it easier to determine if one was even found.
removing additional whitespace from comment
Updating the package version
indented endregion.
Reverting changes to manifest for now.
Adding new line.
adding some additional comments.
Updating the project to 6000.3.14f1
Project version
Making the minimal editor version 6000.3 and removing 6000.0.
Adding comments
Updating triggers to use no less than 6000.3
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.

2 participants