Docs: Unity 6.5 upgrade validation (342/342 green, clean netcode boot)
Validated the 6.5 upgrade: 342/342 EditMode tests pass, no compile/Burst/ source-gen errors, and a clean netcode Play boot (ServerWorld+ClientWorld connect, NetworkId handshake, in-game, ghost replication synced 23==23, player owned-ghost spawned) -> the 6.6.0a6 "invalid wrapped network interface" transport bug does NOT affect 6.5-stable. URP 17.5 render clean (magenta scan 0/1564). The MaterialLocation.External FBX-import warnings are benign 6.5 deprecation noise (2737 importers), import-time only. Updates the CLAUDE.md stack table to 6.5.0 (net -13 bytes, under budget) and adds the full session log. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
---
|
||||
date: 2026-06-17
|
||||
type: session
|
||||
tags:
|
||||
- session
|
||||
- upgrade
|
||||
- unity-6-5
|
||||
- dots
|
||||
- netcode
|
||||
- validation
|
||||
permalink: gamevault/07-sessions/2026/2026-06-17-unity-6-5-upgrade-validation
|
||||
---
|
||||
|
||||
# Unity 6.4.7 → 6.5.0 upgrade — validation pass
|
||||
|
||||
> Operator upgraded the editor **6000.4.7f1 → 6000.5.0f1** (and the package set) and asked to run all tests + confirm the project is healthy. Also flagged "a lot of console noise" — `MaterialLocation.External is obsolete` from FBX imports — unsure if it was the in-progress asset reindex. This session is validation-only: **no `.cs` / scene / asset edits** (only `CLAUDE.md` + this log). Follows [[2026-06-13_SL1_SL4_Visual_Cohesion_Dark_Frontier]].
|
||||
|
||||
## What the upgrade changed (from the git diff of `manifest.json` / `packages-lock.json`)
|
||||
The headline is that the **DOTS stack left its independent 1.x/2.x lines and joined unified 6.5.0 versioning** (matching the editor):
|
||||
|
||||
| Package | 6.4 | 6.5 |
|
||||
|---|---|---|
|
||||
| entities / entities.graphics / collections | 6.4.0 | **6.5.0** |
|
||||
| **netcode** (for Entities) | **1.13.2** | **6.5.0** |
|
||||
| **physics** (DOTS) | **1.4.6** | **6.5.0** |
|
||||
| transport | 2.7.2 | **6.5.0** (builtin) |
|
||||
| mathematics | 1.3.3 | **1.4.0** (builtin) |
|
||||
| burst | 1.8.29 | 1.8.29 (unchanged; satisfies the new 1.8.25/26 mins) |
|
||||
| URP / ShaderGraph / VFX | 17.4.0 | **17.5.0** |
|
||||
| ugui | 2.0.0 | **2.5.0** · test-framework 1.6→**1.7** · ai.navigation 2.0.12→2.0.13 |
|
||||
| **charactercontroller** | 1.4.2 | **1.4.2** (unchanged — declares physics 1.3.15, resolves on 6.5.0 via SemVer floor) |
|
||||
| **com.rukhanka.animation** | 2.9.0 | **2.9.0** (local pkg, unchanged — resolves on 6.5.0) |
|
||||
|
||||
The two highest-risk pins were CharacterController 1.4.2 and the local Rukhanka 2.9.0 now sitting on a 6.5 foundation, plus Netcode/Transport runtime stability (CLAUDE.md records a **6.6.0a6** revert for an "invalid wrapped network interface" transport bug).
|
||||
|
||||
## Validation results — all green
|
||||
1. **Compile / Burst / source-gen**: clean. Console filter for `CS` errors → 0; for `Burst` → 0. The framework **discovered + ran 342 project tests**, which can only happen if every referenced assembly compiled — incl. `ProjectM.Simulation` (CC 1.4.2 + Physics 6.5 `KinematicCharacterBody` source-gen) and Rukhanka 2.9.0 against Entities 6.5. So both risky pins survived the major jump **at compile time**.
|
||||
2. **EditMode tests**: `ProjectM.Tests.EditMode` → **342 / 342 passed, 0 failed, 0 skipped** in 4.2 s. (The discovery resource shows 356 = 342 project + ~14 non-project package tests; project has a single Editor-only test asmdef, no PlayMode/parameterized tests — `[Test]` count is exactly 342.)
|
||||
3. **Netcode runtime (Play-mode smoke check)** — the real test of the Netcode 1.13.2→6.5.0 jump that unit tests can't cover. First Play after the upgrade triggered the expected ~90 s subscene + Rukhanka **re-bake** (looks like a hang, isn't). Once booted, both worlds were healthy and **in sync**:
|
||||
|
||||
| | ServerWorld | ClientWorld |
|
||||
|---|---|---|
|
||||
| connections / NetworkId (handshake) | 1 / 1 | 1 / 1 |
|
||||
| NetworkStreamInGame | 1 | 1 |
|
||||
| ghosts replicated | **23** | **23** |
|
||||
| owned (player) ghosts | 1 | 1 |
|
||||
|
||||
Connection + NetworkId handshake + in-game + **ghost replication synchronized (server 23 == client 23)** + the player's owned ghost present. → **The 6.6-alpha "invalid wrapped network interface" transport bug does NOT affect 6.5-stable.** Player owned-ghost spawning also confirms CC 1.4.2 bakes + runs against Physics 6.5.
|
||||
4. **Render (URP 17.4→17.5)**: game-view screenshot is clean — HUD intact, Meadow biome ground, player + Synty foliage + structures render; an automated magenta scan found **0 / 1564** missing-shader pixels. No broken materials.
|
||||
|
||||
## The console noise — triaged (benign)
|
||||
`MaterialLocation.External is obsolete. External Material Location is no longer supported.` (logged at *Exception* severity from `ModelImporter.cpp:981`). Root cause confirmed: **2737 art FBX importers** (BefourStudios + Synty) are set to the now-deprecated `materialLocation: 1` (External) mode; Unity 6.5 dropped that mode, so each logs the warning **once on reimport**. The 6.5 upgrade forced a full asset reimport → the flood. It is **import-time only**: materials still resolve (render is clean), and it has no effect on tests/builds/runtime. It won't recur once the import queue drains (it has) — only on a forced reimport / `Library` wipe.
|
||||
- **Recommendation: leave it** (lowest risk; self-quiets). Permanently silencing it means bulk-editing 2737 `.fbx.meta` importers (set Material Creation Mode = None / a supported location), which forces another full reimport and risks disturbing the curated `EnvArtTools`-converted env materials + Synty atlas assignments. Offered as an optional follow-up, not done unprompted.
|
||||
|
||||
Also seen once at boot (benign): one `PackageManagerImmutableAssets` "immutable packages were unexpectedly altered" warning (generic upgrade-migration artifact, non-recurring) and the usual transient "Server Tick Batching" warnings during the heavy boot frames (which actually confirm the server world is ticking).
|
||||
|
||||
## Docs
|
||||
- `CLAUDE.md` Stack table + reconcile/history line rewritten to 6.5.0 (net **-13 bytes** → 40497, under the 40960 budget; net-zero rule honored by trimming the condensation-history line).
|
||||
|
||||
## Deferred / operator follow-ups
|
||||
- **Optional**: bulk-silence the 2737 FBX `MaterialLocation.External` warnings (reimport cost + curated-material risk — only if the noise bothers you).
|
||||
- **Recommended quick manual look**: I confirmed the player ghost spawns + the character renders, but a static screenshot can't verify **Rukhanka animation playback** (walk/idle blend, no T-pose/collapse) on 6.5 — worth a few seconds of eyes-on movement next time you're in Play. CLAUDE.md notes skinned-mesh visual bugs need the operator's eyes (bone/bounds reads lie).
|
||||
- The pre-existing `URPGlobalSettings.asset` version-stamp gotcha (blocks *player builds*, not editor Play) wasn't exercised here — if you make a standalone build, watch for `URPPreprocessBuild` "not at last version" and reset `m_AssetVersion` per the CLAUDE.md art-import note.
|
||||
Reference in New Issue
Block a user