From 815dadb6b3576ef9a3a7e5ddafd6075e79e2b0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Mon, 14 Sep 2026 20:47:16 +0200 Subject: [PATCH 1/4] Adjustments needed for the release --- .yamato/wrench/wrench_config.json | 6 +++++- Tools/CI/Settings/NGOSettings.cs | 8 ++++++++ com.unity.netcode.gameobjects/CHANGELOG.md | 16 ---------------- com.unity.netcode.gameobjects/package.json | 2 +- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/.yamato/wrench/wrench_config.json b/.yamato/wrench/wrench_config.json index 7d7426cb16..80321abc86 100644 --- a/.yamato/wrench/wrench_config.json +++ b/.yamato/wrench/wrench_config.json @@ -23,7 +23,11 @@ "coverageCommands": [ "generateAdditionalMetrics;generateHtmlReport;assemblyFilters:ASSEMBLY_NAME;" ], - "dependantsToIgnoreInPreviewApv": {}, + "dependantsToIgnoreInPreviewApv": { + "6000.7": [ + "com.unity.services.multiplayer" + ] + }, "postPackCommands": [] } }, diff --git a/Tools/CI/Settings/NGOSettings.cs b/Tools/CI/Settings/NGOSettings.cs index aab47ee96b..3e44d64785 100644 --- a/Tools/CI/Settings/NGOSettings.cs +++ b/Tools/CI/Settings/NGOSettings.cs @@ -1,7 +1,9 @@ using RecipeEngine.Api.Settings; +using RecipeEngine.Modules.Wrench.Helpers; using RecipeEngine.Modules.Wrench.Models; using RecipeEngine.Modules.Wrench.Platforms; using RecipeEngine.Modules.Wrench.Settings; +using RecipeEngine.Unity.Abstractions.Editors; namespace NGO.Cookbook.Settings; @@ -34,6 +36,12 @@ public NGOSettings() Wrench = new WrenchSettings(packagesRootPaths, PackageOptions); Wrench.PvpProfilesToCheck = new HashSet() { "supported" }; Wrench.Packages["com.unity.netcode.gameobjects"].PackAndPromotePlatformType = EditorPlatformType.Ubuntu2204; + + // com.unity.services.multiplayer's Entities integration doesn't yet compile against the N4E 7.0.0 that NGO now depends on, so skip it in Preview APV until a compatible version ships. + Wrench.Packages["com.unity.netcode.gameobjects"].DependantsToIgnoreInPreviewApv = new Dictionary> + { + [new EditorVersion("6000.7")] = new HashSet { "com.unity.services.multiplayer" } + }; } public WrenchSettings Wrench { get; private set; } diff --git a/com.unity.netcode.gameobjects/CHANGELOG.md b/com.unity.netcode.gameobjects/CHANGELOG.md index 7b75f45d30..3471b8728a 100644 --- a/com.unity.netcode.gameobjects/CHANGELOG.md +++ b/com.unity.netcode.gameobjects/CHANGELOG.md @@ -6,22 +6,6 @@ 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] - -### Added - -### Changed - -### Deprecated - -### Removed - -### Fixed - -### Security - -### Obsolete - ## [3.0.0] - 2026-09-14 ### Added diff --git a/com.unity.netcode.gameobjects/package.json b/com.unity.netcode.gameobjects/package.json index dca2c97497..4f4c901cab 100644 --- a/com.unity.netcode.gameobjects/package.json +++ b/com.unity.netcode.gameobjects/package.json @@ -2,7 +2,7 @@ "name": "com.unity.netcode.gameobjects", "displayName": "Netcode for GameObjects", "description": "Netcode for GameObjects is a high-level netcode SDK that provides networking capabilities to GameObject/MonoBehaviour workflows within Unity and sits on top of underlying transport layer.", - "version": "3.0.1", + "version": "3.0.0", "unity": "6000.7", "unityRelease": "0b1", "dependencies": { From e46b6aefea3c3835c4183876183b6d91ed1ea665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Mon, 14 Sep 2026 21:35:26 +0200 Subject: [PATCH 2/4] corrected wrench settings --- .yamato/wrench/wrench_config.json | 3 +++ Tools/CI/Settings/NGOSettings.cs | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.yamato/wrench/wrench_config.json b/.yamato/wrench/wrench_config.json index 80321abc86..93be7a3da4 100644 --- a/.yamato/wrench/wrench_config.json +++ b/.yamato/wrench/wrench_config.json @@ -26,6 +26,9 @@ "dependantsToIgnoreInPreviewApv": { "6000.7": [ "com.unity.services.multiplayer" + ], + "7000.0": [ + "com.unity.services.multiplayer" ] }, "postPackCommands": [] diff --git a/Tools/CI/Settings/NGOSettings.cs b/Tools/CI/Settings/NGOSettings.cs index 3e44d64785..5d1b9f5453 100644 --- a/Tools/CI/Settings/NGOSettings.cs +++ b/Tools/CI/Settings/NGOSettings.cs @@ -40,7 +40,8 @@ public NGOSettings() // com.unity.services.multiplayer's Entities integration doesn't yet compile against the N4E 7.0.0 that NGO now depends on, so skip it in Preview APV until a compatible version ships. Wrench.Packages["com.unity.netcode.gameobjects"].DependantsToIgnoreInPreviewApv = new Dictionary> { - [new EditorVersion("6000.7")] = new HashSet { "com.unity.services.multiplayer" } + [new EditorVersion("6000.7")] = new HashSet { "com.unity.services.multiplayer" }, + [new EditorVersion("7000.0")] = new HashSet { "com.unity.services.multiplayer" } }; } From d2688510b50c6ca2ecd270819aaf9b66a8395901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Tue, 15 Sep 2026 09:17:41 +0200 Subject: [PATCH 3/4] removed ubuntu platform --- .yamato/wrench/package-pack-jobs.yml | 6 +- .yamato/wrench/promotion-jobs.yml | 40 ------- .yamato/wrench/validation-jobs.yml | 154 --------------------------- Tools/CI/Settings/NGOSettings.cs | 18 +++- 4 files changed, 18 insertions(+), 200 deletions(-) diff --git a/.yamato/wrench/package-pack-jobs.yml b/.yamato/wrench/package-pack-jobs.yml index e22f5b7177..9952f3bfed 100644 --- a/.yamato/wrench/package-pack-jobs.yml +++ b/.yamato/wrench/package-pack-jobs.yml @@ -10,7 +10,7 @@ package_pack_-_netcode_gameobjects: name: Package Pack - netcode.gameobjects agent: - image: package-ci/ubuntu-22.04:v4 + image: package-ci/win10:v4 type: Unity::VM flavor: b1.large commands: @@ -18,9 +18,9 @@ package_pack_-_netcode_gameobjects: timeout: 20 retries: 10 - command: upm-ci package pack --package-path com.unity.netcode.gameobjects - - command: cp upm-ci~/packages/packages.json upm-ci~/packages/com.unity.netcode.gameobjects_packages.json + - command: copy upm-ci~\packages\packages.json upm-ci~\packages\com.unity.netcode.gameobjects_packages.json after: - - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh + - command: .yamato\generated-scripts\infrastructure-instability-detection-win.cmd artifacts: packages: paths: diff --git a/.yamato/wrench/promotion-jobs.yml b/.yamato/wrench/promotion-jobs.yml index 7632ca756b..d683589f66 100644 --- a/.yamato/wrench/promotion-jobs.yml +++ b/.yamato/wrench/promotion-jobs.yml @@ -41,16 +41,6 @@ publish_dry_run_netcode_gameobjects: UTR: location: results/UTR/validate-netcode.gameobjects-6000.7-macos13arm unzip: true - - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_7_-_ubuntu2204 - specific_options: - packages: - ignore_artifact: true - pvp-results: - location: results/pvp/validate-netcode.gameobjects-6000.7-ubuntu2204 - unzip: true - UTR: - location: results/UTR/validate-netcode.gameobjects-6000.7-ubuntu2204 - unzip: true - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_7_-_win10 specific_options: packages: @@ -71,16 +61,6 @@ publish_dry_run_netcode_gameobjects: UTR: location: results/UTR/validate-netcode.gameobjects-7000.0-macos13arm unzip: true - - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_7000_0_-_ubuntu2204 - specific_options: - packages: - ignore_artifact: true - pvp-results: - location: results/pvp/validate-netcode.gameobjects-7000.0-ubuntu2204 - unzip: true - UTR: - location: results/UTR/validate-netcode.gameobjects-7000.0-ubuntu2204 - unzip: true - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_7000_0_-_win10 specific_options: packages: @@ -134,16 +114,6 @@ publish_netcode_gameobjects: UTR: location: results/UTR/validate-netcode.gameobjects-6000.7-macos13arm unzip: true - - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_7_-_ubuntu2204 - specific_options: - packages: - ignore_artifact: true - pvp-results: - location: results/pvp/validate-netcode.gameobjects-6000.7-ubuntu2204 - unzip: true - UTR: - location: results/UTR/validate-netcode.gameobjects-6000.7-ubuntu2204 - unzip: true - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_7_-_win10 specific_options: packages: @@ -164,16 +134,6 @@ publish_netcode_gameobjects: UTR: location: results/UTR/validate-netcode.gameobjects-7000.0-macos13arm unzip: true - - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_7000_0_-_ubuntu2204 - specific_options: - packages: - ignore_artifact: true - pvp-results: - location: results/pvp/validate-netcode.gameobjects-7000.0-ubuntu2204 - unzip: true - UTR: - location: results/UTR/validate-netcode.gameobjects-7000.0-ubuntu2204 - unzip: true - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_7000_0_-_win10 specific_options: packages: diff --git a/.yamato/wrench/validation-jobs.yml b/.yamato/wrench/validation-jobs.yml index ef89d9c058..b5815f3203 100644 --- a/.yamato/wrench/validation-jobs.yml +++ b/.yamato/wrench/validation-jobs.yml @@ -84,83 +84,6 @@ validate_-_netcode_gameobjects_-_6000_7_-_macos13arm: labels: - Packages:netcode.gameobjects -# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.7 - ubuntu2204 (6000.7 - Ubuntu). -validate_-_netcode_gameobjects_-_6000_7_-_ubuntu2204: - name: Validate - netcode.gameobjects - 6000.7 - ubuntu2204 - agent: - image: package-ci/ubuntu-22.04:v4 - type: Unity::VM - flavor: b1.large - commands: - - command: curl "$WRENCH_LOCALAPV_URL" -o wrench-localapv.zip - - command: 7z x -aoa wrench-localapv.zip - - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple - - command: python PythonScripts/print_machine_info.py - - command: unity-downloader-cli -u 6000.7/staging -c editor --path .Editor --fast - timeout: 20 - retries: 3 - - command: upm-pvp create-test-project testproject --packages "upm-ci~/packages/*.tgz" --filter "com.unity.netcode.gameobjects com.unity.netcode.gameobjects.tests" --unity .Editor - timeout: 10 - retries: 1 - - command: echo No internal packages to add. - - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp - timeout: 40 - retries: 0 - - command: python PythonScripts/ignore_clean_console_failures.py - timeout: 5 - retries: 0 - - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json - timeout: 5 - retries: 0 - - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json - timeout: 10 - retries: 0 - - command: 'UnifiedTestRunner --testproject=testproject --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts/editor --suite=editor "--ff={ops.upmpvpevidence.enable=true}" ' - timeout: 40 - retries: 1 - - command: 'UnifiedTestRunner --testproject=testproject --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts/playmode --suite=playmode "--ff={ops.upmpvpevidence.enable=true}" ' - timeout: 40 - retries: 1 - after: - - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh - artifacts: - Crash Dumps: - paths: - - CrashDumps/** - packages: - paths: - - upm-ci~/packages/**/* - pvp-results: - paths: - - upm-ci~/pvp/**/* - browsable: onDemand - UTR: - paths: - - '*.log' - - '*.xml' - - artifacts/**/* - - testproject/Logs/** - - testproject/Library/*.log - - testproject/*.log - - testproject/Builds/*.log - - build/test-results/** - browsable: onDemand - dependencies: - - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects - variables: - UNITY_LICENSING_SERVER_BASE_URL: http://unity-ci-licenses.hq.unity3d.com:8080/ - UNITY_LICENSING_SERVER_DELETE_NUL: 0 - UNITY_LICENSING_SERVER_DELETE_ULF: 0 - UNITY_LICENSING_SERVER_TOOLSET: pro - UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1 - UPMPVP_CONTEXT_WRENCH: 3.11.5.0 - WRENCH_LOCALAPV_URL: https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-3-19_94a756eb601d84c127a989866172fdd530ec62aa5d9611a9c9898a625926ec62.zip - metadata: - Job Maintainers: '#rm-packageworks' - Wrench: 3.11.5.0 - labels: - - Packages:netcode.gameobjects - # PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.7 - win10 (6000.7 - Windows). validate_-_netcode_gameobjects_-_6000_7_-_win10: name: Validate - netcode.gameobjects - 6000.7 - win10 @@ -316,83 +239,6 @@ validate_-_netcode_gameobjects_-_7000_0_-_macos13arm: labels: - Packages:netcode.gameobjects -# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 7000.0 - ubuntu2204 (7000.0 - Ubuntu). -validate_-_netcode_gameobjects_-_7000_0_-_ubuntu2204: - name: Validate - netcode.gameobjects - 7000.0 - ubuntu2204 - agent: - image: package-ci/ubuntu-22.04:v4 - type: Unity::VM - flavor: b1.large - commands: - - command: curl "$WRENCH_LOCALAPV_URL" -o wrench-localapv.zip - - command: 7z x -aoa wrench-localapv.zip - - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple - - command: python PythonScripts/print_machine_info.py - - command: unity-downloader-cli -u trunk -c editor --path .Editor --fast - timeout: 20 - retries: 3 - - command: upm-pvp create-test-project testproject --packages "upm-ci~/packages/*.tgz" --filter "com.unity.netcode.gameobjects com.unity.netcode.gameobjects.tests" --unity .Editor - timeout: 10 - retries: 1 - - command: echo No internal packages to add. - - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp - timeout: 40 - retries: 0 - - command: python PythonScripts/ignore_clean_console_failures.py - timeout: 5 - retries: 0 - - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json - timeout: 5 - retries: 0 - - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json - timeout: 10 - retries: 0 - - command: 'UnifiedTestRunner --testproject=testproject --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts/editor --suite=editor "--ff={ops.upmpvpevidence.enable=true}" ' - timeout: 40 - retries: 1 - - command: 'UnifiedTestRunner --testproject=testproject --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts/playmode --suite=playmode "--ff={ops.upmpvpevidence.enable=true}" ' - timeout: 40 - retries: 1 - after: - - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh - artifacts: - Crash Dumps: - paths: - - CrashDumps/** - packages: - paths: - - upm-ci~/packages/**/* - pvp-results: - paths: - - upm-ci~/pvp/**/* - browsable: onDemand - UTR: - paths: - - '*.log' - - '*.xml' - - artifacts/**/* - - testproject/Logs/** - - testproject/Library/*.log - - testproject/*.log - - testproject/Builds/*.log - - build/test-results/** - browsable: onDemand - dependencies: - - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects - variables: - UNITY_LICENSING_SERVER_BASE_URL: http://unity-ci-licenses.hq.unity3d.com:8080/ - UNITY_LICENSING_SERVER_DELETE_NUL: 0 - UNITY_LICENSING_SERVER_DELETE_ULF: 0 - UNITY_LICENSING_SERVER_TOOLSET: pro - UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1 - UPMPVP_CONTEXT_WRENCH: 3.11.5.0 - WRENCH_LOCALAPV_URL: https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-3-19_94a756eb601d84c127a989866172fdd530ec62aa5d9611a9c9898a625926ec62.zip - metadata: - Job Maintainers: '#rm-packageworks' - Wrench: 3.11.5.0 - labels: - - Packages:netcode.gameobjects - # PVP Editor and Playmode tests for Validate - netcode.gameobjects - 7000.0 - win10 (7000.0 - Windows). validate_-_netcode_gameobjects_-_7000_0_-_win10: name: Validate - netcode.gameobjects - 7000.0 - win10 diff --git a/Tools/CI/Settings/NGOSettings.cs b/Tools/CI/Settings/NGOSettings.cs index 5d1b9f5453..7204defeff 100644 --- a/Tools/CI/Settings/NGOSettings.cs +++ b/Tools/CI/Settings/NGOSettings.cs @@ -26,7 +26,7 @@ public class NGOSettings : AnnotatedSettingsBase new PackageOptions() { ReleaseOptions = new ReleaseOptions() { IsReleasing = true }, - ValidationOptions = validationOptions + ValidationOptions = validationOptions, } } }; @@ -35,10 +35,22 @@ public NGOSettings() { Wrench = new WrenchSettings(packagesRootPaths, PackageOptions); Wrench.PvpProfilesToCheck = new HashSet() { "supported" }; - Wrench.Packages["com.unity.netcode.gameobjects"].PackAndPromotePlatformType = EditorPlatformType.Ubuntu2204; + + var package = Wrench.Packages["com.unity.netcode.gameobjects"]; + // Ubuntu is removed from validation below, so pack and promote on Windows instead. + package.PackAndPromotePlatformType = EditorPlatformType.Win10; + + // The Netcode for Entities source generator fails player builds on Linux, so Ubuntu is excluded from validation. + foreach (var editor in package.UnityEditors) + { + var keptPlatforms = editor.EditorPlatforms + .Where(platform => platform.PlatformType != EditorPlatformType.Ubuntu2204) + .ToDictionary(platform => platform.PlatformType, platform => platform); + editor.EditorPlatforms = new EditorPlatformSet(keptPlatforms); + } // com.unity.services.multiplayer's Entities integration doesn't yet compile against the N4E 7.0.0 that NGO now depends on, so skip it in Preview APV until a compatible version ships. - Wrench.Packages["com.unity.netcode.gameobjects"].DependantsToIgnoreInPreviewApv = new Dictionary> + package.DependantsToIgnoreInPreviewApv = new Dictionary> { [new EditorVersion("6000.7")] = new HashSet { "com.unity.services.multiplayer" }, [new EditorVersion("7000.0")] = new HashSet { "com.unity.services.multiplayer" } From b5f9cac62d40b517e18e5f960bc14c3a82d3d1a5 Mon Sep 17 00:00:00 2001 From: PETS automation <299490404+pets-svc[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 09:17:41 +0200 Subject: [PATCH 4/4] trunk shadow changes: com.unity.netcode.gameobjects [skip ci] --- .../Editor/InScenePlacedProcessor.cs | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/com.unity.netcode.gameobjects/Editor/InScenePlacedProcessor.cs b/com.unity.netcode.gameobjects/Editor/InScenePlacedProcessor.cs index 4314aa243d..2c89274cc8 100644 --- a/com.unity.netcode.gameobjects/Editor/InScenePlacedProcessor.cs +++ b/com.unity.netcode.gameobjects/Editor/InScenePlacedProcessor.cs @@ -5,20 +5,47 @@ using UnityEngine; using UnityEngine.SceneManagement; +#if UNITY_6000_7_OR_NEWER +using UnityEditor.Build.Content; +#endif + namespace Unity.Netcode.GameObjects.Editor { /// - /// A that sets the property to true for all s in the scene. /// Ensures that InScenePlaced is always true for all objects in the scene. /// /// - /// This will always run as the game enters the scene, + /// This will always run as a scene is loaded in playmode or while processed for a player build. /// +#if UNITY_6000_7_OR_NEWER + internal class SetInScenePlaced : AssetPostprocessor + { + public override uint GetVersion() => 1; + + public override int GetPostprocessOrder() => 0; + + void OnProcessScene(Scene scene, SceneImportContext sceneImportContext) + { + InScenePlaceChecks.ReportSceneIssues(scene, sceneImportContext.awakeDidRun); + } + } +#else internal class SetInScenePlaced : IProcessSceneWithReport { public int callbackOrder => 0; + public void OnProcessScene(Scene scene, BuildReport report) + { + InScenePlaceChecks.ReportSceneIssues(scene, Application.isPlaying); + } + } +#endif + + static class InScenePlaceChecks + { + public static void ReportSceneIssues(Scene scene, bool hasAwakeRun) { var log = new ContextualLogger(); log.AddInfo(scene.name, scene.handle); @@ -42,15 +69,15 @@ public void OnProcessScene(Scene scene, BuildReport report) continue; } - // If already marked, the do nothing. + // If already marked, do nothing. if (networkObject.InScenePlaced) { continue; } networkObject.InScenePlaced = true; - // Will not be true when making a build and the values are serialized. - networkObject.InScenePlacedPostProcessorMarkedDuringRuntime = Application.isPlaying; + // Mark that awake has run so this could have been a dynamically instantiated object. + networkObject.InScenePlacedPostProcessorMarkedDuringRuntime = hasAwakeRun; } } }