✦ SPIELWELTENMoto Racer - Rampage ↗

Current-content Unity 6.6 port, 17 September 2026

This is an engine/package/API port of the current game content, not an engine-binary-only change and not the old Rampage66 project. No Editor, build or GPU workload was launched by the preparation agent. After the pre-import delta was frozen, the root agent launched the build described below.

Provenance and unchanged content

Deliberate changes

  1. Manifest: HDRP 17.3.0 -> 17.6.0, uGUI 2.0.0 -> 2.6.0. Other direct pins unchanged. Installed HDRP 17.6 requires Core, ShaderGraph, VFX Graph and HDRP Config 17.6. The copied lock was removed so this Editor resolves its dependency graph. Record the regenerated lock: Unity 6.6 also supplies built-in Cinemachine/Collections 6.6.0, Burst 2.0.0, Mathematics 1.4.0 and Test Framework 1.8.0; their actual resolved versions are not assumed to stay at older manifest pins.
  2. Exactly 15 obsolete GetInstanceID() calls in ten current C# files were ported. Direct metadata inspection of the installed 6.6 CoreModule proves both GetInstanceID and implicit EntityId/int conversion are Obsolete(error=true).
  3. Full EntityId values remain in identity-sensitive comparisons: terrain/wall caches, particle/audio emitter tie-breaking and material batching keys. Hashes are used only for existing 32-bit random/audio seeds and legacy numeric diagnostic fields. Those hash fields are not collision-free identity proofs. Audio seed values and deterministic tie order can differ between engine versions; they are not promised bit-identical.
  4. Added clone-only Rampage.Editor.CurrentContentUpgradeBuild.Run and meta. It invokes the existing private BuildPlayer method, without Configure, Bootstrap rebuilding or authoring bakes. Guards require the exact snapshot path, Unity 6000.6.0, an explicit opt-in flag/output and unchanged explicit DX11/DX12 API order. Existing BuildPlayer verifies Both Forward/Deferred support and writes its ordinary build manifest. The sourceCommit field is populated with snapshot-sha256:<baseline manifest hash> rather than falsely implying a clean Git commit.

ProjectVersion.txt is deliberately unchanged before import; Unity will migrate it in the copy. Record any additional importer/settings changes after first import. The current HDRP asset is already Both=3 and the player settings already specify DX11 followed by DX12, automatic selection disabled.

Root-owned build invocation

Root launched this invocation at 2026-09-16 23:38:44 UTC / 17 September 01:38:44 CEST, PID 43492, after reviewing the frozen port. Source: build-launch.json. The preparation agent did not launch it or edit the snapshot while this build runs. Unlike the earlier proposed invocation, the actual invocation omits -nographics.

& 'C:/Unity Editors/6000.6.0f1/Editor/Unity.exe' -batchmode -quit -projectPath 'C:/Unity Projects/MotoRacer - Rampage/Tools/Diagnostics/CurrentContentUnity66-20260917' -executeMethod Rampage.Editor.CurrentContentUpgradeBuild.Run -rampageCurrentContentUpgradeBuild -rampageBuildOutput 'C:/Unity Projects/MotoRacer - Rampage/Builds/Windows-CurrentContent-Unity66-20260917' -logFile 'C:/Unity Projects/MotoRacer - Rampage/Docs/QA/20260917-user-crash-61088/unity66-build.log'

Static verification: no GetInstanceID calls remain in copied Rampage C#; identity fields use EntityId without deprecated integer conversions; source hashes match baseline. Full C#/shader/import validation is pending the root-owned Editor build. No successful compile or runtime result is claimed here.

Exact pre-import delta

Baseline manifest SHA-256: 9FCFA4CBE8B7C4333BD1709FD92220736C81AC749572BFD88185B895416DAE67.

File Original SHA-256 Port SHA-256
Assets/Rampage/Runtime/AI/BikeAI.cs EE112B21B938C14DBBA199861063678EE03CF47295AAECD45694B3F595E47CAD F4E2FA7FF151934ABF7BBAA4DEAA1B049E5375DC6FF9F5CBC6BE5F11765890B2
Assets/Rampage/Runtime/Audio/OpponentEngineAudio.cs BF26140CECFBA70B392C82A3B6CF34386A53676E810852121C3C7FFF86339D9A FFCF61AF5BA8087DC1F64661107810FB4A21F799138D04D591327A156CBC7878
Assets/Rampage/Runtime/Bike/BikeController.cs 98CC006280DBAB5B331CF69A31EB125AE916D9FBF481923D9F3E2595DDD18581 DD15B94B1A33F047CD963E70143FF6A9553F37B7F254E61C9F63F26B872F0C83
Assets/Rampage/Runtime/Effects/BikeSurfaceDebris.cs AF9B134098F5DB50464E98C322D0A3A4342B71B7A4451CCF4618AE34CFDE8BDB 6CD9009731BD230CCF8F6B1B1793E5CF9E128722F594847FB57D2D870C5F9F3F
Assets/Rampage/Runtime/Effects/CollisionSparks.cs D37E1CF3510B028ACDDE66A43E000BF5855FB09439F8A6E5F96C5DD3DF4EFBDD E53BAB364FCD13B16E903FB9E71AF9D2974C17BC908BEC85D7048B1456D500A3
Assets/Rampage/Runtime/QA/CampaignMemoryQA.cs DDA04CD3154D57E7A036B21918F6FF15674E3F9B9FC9B6FE793F33FCBCA25001 EE3DC15D869E519479C478BFCEEB9210B6B84370D37D9606D12B59EC7AE70AE6
Assets/Rampage/Runtime/QA/CrashFlightRecorder.cs 8DE4A30CDA302070D9A959890D31CA99AD33558A7A69C41F4FC367411A4C986E 09820BEFE4C4CED32CD3A8470AED252524F8E64FC32DF105F1AE693D0E5FA2AF
Assets/Rampage/Runtime/World/ChapterTerrain.cs 53D8E5882944117E92F3B2A2DA083C5C267670A6DDF7BA49E2FD7FB381DD87B9 40A4B93D027C22DBCB206CCC73FFCDC16D36D7652E570C33CD3729E5465EA78B
Assets/Rampage/Runtime/World/WorldGeometry.cs FF3816AFF8E3CC0FB11E0A9CDCF90B87F50753D9C47D7DDF3484A5E796AF33EE 6DFB52071E3E8E1C6BE8A6A39EF59544EFBC77900C6882F95D834E33F8DF3F38
Assets/Rampage/Runtime/World/WorldLandmarks.cs DCAB1FF68E9931FD48B336783430AAFD04D41E8DB819D506567314682020038E 65AE4B81DFC43F9DC814B5AD5C036CEE5C6C0DCB921A2679AB69A3935A5588A8
Packages/manifest.json 3182A9A70AA860A42C897630D0AB90B9228B131AA5A40275E2D86DAA8F5A710B 8C07698D6EA0DE601992AE9A18381A5613D0299DDA26885D5874C496C173526F
Packages/packages-lock.json 10B392AC313F55D801F7F7D06F2E456002568FD652EA3E8E04AD165DBDAC9FE4 DELETED
Assets/Rampage/Editor/CurrentContentUpgradeBuild.cs NEW 87AA1A5601D498EB2C853FE43DD8F97936E0C67A6DA04C2E652DD9E1E9E7FE54
Assets/Rampage/Editor/CurrentContentUpgradeBuild.cs.meta NEW 9E6FB5430F85A6FDEE079B86056ECD02409346FECC43472367D491F336BA1D9E

Complete text diff

diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\AI\\BikeAI.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\AI\\BikeAI.cs"
index 554ae01..6097e29 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\AI\\BikeAI.cs"    
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\AI\\BikeAI.cs"    
@@ -39,7 +39,7 @@ namespace Rampage
             if (!Bike || !Bike.Track || !Bike.Body || !Bike.Tuning) return;
             if (!_ready)
             {
-                _randomState = (uint)(Mathf.Abs(GetInstanceID()) + 43) * 747796405u;
+                _randomState = (uint)(Mathf.Abs(GetEntityId().GetHashCode()) + 43) * 747796405u;
                 _lane = DesiredLane = LaneOffset;
                 _decisionTime = Time.time + NextRandom() * .4f;
                 _attackTime = Time.time + 1.4f + NextRandom() * 2f;
diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\Audio\\OpponentEngineAudio.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\Audio\\OpponentEngineAudio.cs"
index 56d2b2c..6273b16 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\Audio\\OpponentEngineAudio.cs"    
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\Audio\\OpponentEngineAudio.cs"    
@@ -15,16 +15,17 @@ namespace Rampage
         static int budgetFrame=-1;
         AudioSource source;
         float voiceTuning=1;
-        int stableId,layer=-1;
+        EntityId stableId;
+        int voiceSeed,layer=-1;
         bool selected;

         void OnEnable()
-        {stableId=GetInstanceID();if(!Emitters.Contains(this)) Emitters.Add(this);budgetFrame=-1;}
+        {stableId=GetEntityId();voiceSeed=stableId.GetHashCode();if(!Emitters.Contains(this)) Emitters.Add(this);budgetFrame=-1;}
         void Start() {if(!Bike) Bike=GetComponent<BikeController>();EnsureSource();}
         void EnsureSource()
         {
             if(source) return;
-            voiceTuning=.983f+Mathf.Abs(stableId%35)*.001f;
+            voiceTuning=.983f+Mathf.Abs(voiceSeed%35)*.001f;
             var child=new GameObject("Nearby recorded rival exhaust");child.transform.SetParent(transform,false);
             child.transform.localPosition=new Vector3(.16f,-.17f,-.48f);
             source=child.AddComponent<AudioSource>();source.playOnAwake=false;source.loop=true;
@@ -53,7 +54,7 @@ namespace Rampage
                 source.volume=Mathf.MoveTowards(source.volume,0,dt*7);
                 if(source.volume>.0001f) return;
                 source.Stop();layer=wanted;source.clip=MotorcycleRecordings.Get(layer);
-                if(source.clip) source.timeSamples=Mathf.Abs(stableId%source.clip.samples);
+                if(source.clip) source.timeSamples=Mathf.Abs(voiceSeed%source.clip.samples);
             }
             if(!source.clip) return;
             float anchor=layer==4?4180:MotorcycleRecordings.Anchors[layer];
diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\Bike\\BikeController.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\Bike\\BikeController.cs"
index 14d148c..5ddaa59 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\Bike\\BikeController.cs"  
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\Bike\\BikeController.cs"  
@@ -423,8 +423,8 @@ namespace Rampage
                 gripSum+=properties.Grip;brakeSum+=properties.BrakeTraction;driveSum+=properties.DriveTraction;rollingSum+=properties.RollingResistance;
                 float clearance = hit.distance + Tuning.ContactRadius - .2f;
                 float compression = Mathf.Clamp(Tuning.RideHeight - clearance, -Tuning.SuspensionTravel, Tuning.SuspensionTravel);
-                if (axle > 0) { FrontSuspensionCompression = compression; FrontWheelContact = measured; FrontGroundColliderId = hit.collider.GetInstanceID(); FrontGroundPoint=hit.point; }
-                else { RearSuspensionCompression = compression; RearWheelContact = measured; RearGroundColliderId = hit.collider.GetInstanceID(); RearGroundPoint=hit.point; }
+                if (axle > 0) { FrontSuspensionCompression = compression; FrontWheelContact = measured; FrontGroundColliderId = hit.collider.GetEntityId().GetHashCode(); FrontGroundPoint=hit.point; }
+                else { RearSuspensionCompression = compression; RearWheelContact = measured; RearGroundColliderId = hit.collider.GetEntityId().GetHashCode(); RearGroundPoint=hit.point; }
                 float acceleration = 4.905f + (Tuning.RideHeight - clearance) * Tuning.SpringAcceleration * .5f
                     - verticalSpeed * Tuning.SpringDamping * .5f;
                 acceleration=Mathf.Clamp(acceleration,0f,52f);
diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\Effects\\BikeSurfaceDebris.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\Effects\\BikeSurfaceDebris.cs"
index 0d22eba..bb85cad 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\Effects\\BikeSurfaceDebris.cs"    
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\Effects\\BikeSurfaceDebris.cs"    
@@ -22,7 +22,7 @@ namespace Rampage
         {
             bike = owner;
             resetVersion = owner ? owner.ResetVersion : 0;
-            randomState = unchecked((uint)GetInstanceID() * 747796405u) | 1u;
+            randomState = unchecked((uint)GetEntityId().GetHashCode() * 747796405u) | 1u;
             Clear();
         }

@@ -84,13 +84,13 @@ namespace Rampage
             if (!player) return false;
             float distance = (bike.transform.position - player.transform.position).sqrMagnitude;
             if (!Finite(distance) || distance > RangeSquared) return false;
-            int ahead = 0, id = bike.GetInstanceID();
+            int ahead = 0; EntityId id = bike.GetEntityId();
             foreach (var other in BikeController.Active)
             {
                 if (other == bike || !Eligible(other)) continue;
                 float otherDistance = (other.transform.position - player.transform.position).sqrMagnitude;
                 if (Finite(otherDistance) && (otherDistance < distance ||
-                    (otherDistance == distance && other.GetInstanceID() < id))) ahead++;
+                    (otherDistance == distance && other.GetEntityId() < id))) ahead++;
             }
             return ahead < NearbyEmitters;
         }
diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\Effects\\CollisionSparks.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\Effects\\CollisionSparks.cs"
index 5d83f10..c13f914 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\Effects\\CollisionSparks.cs"  
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\Effects\\CollisionSparks.cs"  
@@ -25,7 +25,7 @@ namespace Rampage
             Unsubscribe();
             _bike = bike;
             _nextBurstTime = 0f;
-            _randomState = unchecked((uint)GetInstanceID() * 747796405u) | 1u;
+            _randomState = unchecked((uint)GetEntityId().GetHashCode() * 747796405u) | 1u;
             if (!_particles) CreateParticles();
             else _particles.Clear(true);
             Subscribe();
diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\QA\\CampaignMemoryQA.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\QA\\CampaignMemoryQA.cs"
index aade0f2..a0408b1 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\QA\\CampaignMemoryQA.cs"  
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\QA\\CampaignMemoryQA.cs"  
@@ -172,7 +172,7 @@ namespace Rampage
             {
                 var inventory=new TextureInventory{cycle=cycle,chapter=chapter,stage=stage,phase=phase};
                 foreach(var texture in Resources.FindObjectsOfTypeAll<Texture>())if(texture)
-                    inventory.textures.Add(new TextureEntry{instanceId=texture.GetInstanceID(),name=texture.name,type=texture.GetType().Name,
+                    inventory.textures.Add(new TextureEntry{instanceId=texture.GetEntityId().GetHashCode(),name=texture.name,type=texture.GetType().Name,
                         width=texture.width,height=texture.height,bytes=Profiler.GetRuntimeMemorySizeLong(texture)});
                 File.AppendAllText(Path.Combine(output,"campaign-memory-textures.jsonl"),JsonUtility.ToJson(inventory)+"\n");
             }
diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\QA\\CrashFlightRecorder.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\QA\\CrashFlightRecorder.cs"
index 5f7cdd1..57c442c 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\QA\\CrashFlightRecorder.cs"   
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\QA\\CrashFlightRecorder.cs"   
@@ -179,7 +179,7 @@ namespace Rampage
                 var camera = app.MainCamera;
                 if (camera)
                 {
-                    sample.cameraPresent = true; sample.cameraId = camera.GetInstanceID(); sample.cameraEnabled = camera.enabled;
+                    sample.cameraPresent = true; sample.cameraId = camera.GetEntityId().GetHashCode(); sample.cameraEnabled = camera.enabled;
                     sample.cameraPosition = Vector(camera.transform.position, "camera.position", invalid);
                     Quaternion rotation = camera.transform.rotation;
                     sample.cameraRotation = new Quaternion(Number(rotation.x, "camera.rotation.x", invalid),
diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\World\\ChapterTerrain.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\World\\ChapterTerrain.cs"
index b27379d..80f7874 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\World\\ChapterTerrain.cs" 
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\World\\ChapterTerrain.cs" 
@@ -11,7 +11,7 @@ namespace Rampage
         internal static readonly Rect AlpineMapBounds=new Rect(AlpineElevation.MinX,AlpineElevation.MinZ,AlpineElevation.Width,AlpineElevation.Depth);
         static readonly Dictionary<string,Material> Surfaces=new Dictionary<string,Material>();
         static readonly Dictionary<int,float> CutAreaBySection=new Dictionary<int,float>();
-        static int cutTrackId;
+        static EntityId cutTrackId;
         static Material roadCutOverlay;
         internal static IEnumerable<Material> RepresentativeMaterials
         {
@@ -54,7 +54,7 @@ namespace Rampage
         {
             string chapter=track.Definition.ChapterId;
             if(string.IsNullOrEmpty(chapter))return;
-            cutTrackId=track.GetInstanceID();CutAreaBySection.Clear();
+            cutTrackId=track.GetEntityId();CutAreaBySection.Clear();
             var owner=track.GeneratedRoot.GetComponent<GeneratedWorldResources>();
             Rect mapBounds=BoundsFor(track);
             Material meadow=TerrainMaterial(track,"meadow",mapBounds,owner);
@@ -237,7 +237,7 @@ namespace Rampage

         internal static bool HasCoherentRoadCut(TrackRuntime track,float distance)
         {
-            return cutTrackId==track.GetInstanceID()&&
+            return cutTrackId==track.GetEntityId()&&
                 CutAreaBySection.TryGetValue(Mathf.FloorToInt(distance/32),out float area)&&area>=80;
         }

diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\World\\WorldGeometry.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\World\\WorldGeometry.cs"
index 4c1de71..b7408d3 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\World\\WorldGeometry.cs"  
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\World\\WorldGeometry.cs"  
@@ -288,7 +288,7 @@ namespace Rampage
         }
         internal WorldMesh At(Vector3 p,Material material,string name,bool collider=false,bool shadows=true)
         {
-            string key=Mathf.FloorToInt(p.x/cellWidth)+"/"+Mathf.FloorToInt(p.z/cellWidth)+"/"+material.GetInstanceID()+"/"+collider+"/"+shadows;
+            string key=Mathf.FloorToInt(p.x/cellWidth)+"/"+Mathf.FloorToInt(p.z/cellWidth)+"/"+material.GetEntityId().ToString()+"/"+collider+"/"+shadows;
             if(!batches.TryGetValue(key,out Batch batch))
             {
                 batch=new Batch {Material=material,Name=name,Collider=collider,Shadows=shadows};batches.Add(key,batch);
diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\World\\WorldLandmarks.cs" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\World\\WorldLandmarks.cs"
index ed5152b..f7c324c 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Assets\\Rampage\\Runtime\\World\\WorldLandmarks.cs" 
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Assets\\Rampage\\Runtime\\World\\WorldLandmarks.cs" 
@@ -11,7 +11,7 @@ namespace Rampage
         sealed class Part {internal Mesh Mesh;internal Matrix4x4 Matrix;internal string Surface;}
         static readonly Dictionary<string,Part[]> Cache=new Dictionary<string,Part[]>();
         static readonly Dictionary<long,List<Vector2>> ChineseWallSites=new Dictionary<long,List<Vector2>>();
-        static int chineseWallTrackId;
+        static EntityId chineseWallTrackId;
         static bool Known(string name)=>name=="PyramidMain"||name=="PyramidCased"||name=="WallWatchtower"||name=="WallSegment20m";
         static Part[] Load(string name,int lod)
         {
@@ -93,7 +93,7 @@ namespace Rampage
         internal static void BuildChineseRidgeWall(TrackRuntime track)
         {
             ChineseWallSites.Clear();
-            chineseWallTrackId=track.GetInstanceID();
+            chineseWallTrackId=track.GetEntityId();
             if(track.Definition.ChapterId!="china"||!track.Landmarks)return;
             var batches=new WorldBatches(160);
             var roads=new RegionalForestCanopy.RoadClearance("china");
@@ -230,7 +230,7 @@ namespace Rampage
         }
         internal static void PrepareChineseCanopy(TrackRuntime track)
         {
-            if(chineseWallTrackId!=track.GetInstanceID())ChineseWallSites.Clear();
+            if(chineseWallTrackId!=track.GetEntityId())ChineseWallSites.Clear();
         }
         static long WallKey(int x,int z)=>((long)x<<32)^(uint)z;
     }
diff --git "a/C:\\Unity Projects\\MotoRacer - Rampage\\Packages\\manifest.json" "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Packages\\manifest.json"
index a177c36..0439dc0 100644
--- "a/C:\\Unity Projects\\MotoRacer - Rampage\\Packages\\manifest.json"    
+++ "b/C:\\Unity Projects\\MotoRacer - Rampage\\Tools\\Diagnostics\\CurrentContentUnity66-20260917\\Packages\\manifest.json"    
@@ -1,10 +1,10 @@
 {
   "dependencies": {
-    "com.unity.render-pipelines.high-definition": "17.3.0",
+    "com.unity.render-pipelines.high-definition": "17.6.0",
     "com.unity.inputsystem": "1.20.0",
     "com.unity.cinemachine": "3.1.7",
     "com.unity.splines": "2.9.1",
-    "com.unity.ugui": "2.0.0",
+    "com.unity.ugui": "2.6.0",
     "com.unity.test-framework": "1.6.0",
     "com.unity.modules.ai": "1.0.0",
     "com.unity.modules.animation": "1.0.0",

Deleted copied dependency lock: Packages/packages-lock.json (original remains unchanged; full original is identified by the baseline SHA-256 above).

Added: Assets/Rampage/Editor/CurrentContentUpgradeBuild.cs

#if UNITY_EDITOR
using System;
using System.IO;
using System.Reflection;
using System.Runtime.ExceptionServices;
using System.Security.Cryptography;
using UnityEditor;
using UnityEngine;
using UnityEngine.Rendering;

namespace Rampage.Editor
{
    /// <summary>Builds the copied current assets without Configure or authoring bakes.</summary>
    public static class CurrentContentUpgradeBuild
    {
        const string ExpectedProject = "C:/Unity Projects/MotoRacer - Rampage/Tools/Diagnostics/CurrentContentUnity66-20260917";
        const string SnapshotManifest = "C:/Unity Projects/MotoRacer - Rampage/Docs/QA/20260917-user-crash-61088/current-content-snapshot.json";

        public static void Run()
        {
            string project = Path.GetFullPath(Path.Combine(Application.dataPath, ".."));
            if (!string.Equals(project, Path.GetFullPath(ExpectedProject), StringComparison.OrdinalIgnoreCase))
                throw new InvalidOperationException("This build method only belongs to the verified current-content snapshot.");
            string[] args = Environment.GetCommandLineArgs();
            if (Array.IndexOf(args, "-rampageCurrentContentUpgradeBuild") < 0 ||
                Array.IndexOf(args, "-rampageBuildOutput") < 0 ||
                !Application.unityVersion.StartsWith("6000.6.0", StringComparison.Ordinal))
                throw new InvalidOperationException("Explicit snapshot build flag, output directory and Unity 6000.6.0 are required.");
            if (PlayerSettings.GetUseDefaultGraphicsAPIs(BuildTarget.StandaloneWindows64))
                throw new InvalidOperationException("Snapshot must retain explicit graphics APIs.");
            var apis = PlayerSettings.GetGraphicsAPIs(BuildTarget.StandaloneWindows64);
            if (apis.Length != 2 || apis[0] != GraphicsDeviceType.Direct3D11 || apis[1] != GraphicsDeviceType.Direct3D12)
                throw new InvalidOperationException("Snapshot must retain Direct3D11, Direct3D12 in the existing order.");
            string snapshotHash;
            using (var stream = File.OpenRead(SnapshotManifest))
            using (var sha = SHA256.Create())
                snapshotHash = BitConverter.ToString(sha.ComputeHash(stream)).Replace("-", "");
            var build = typeof(RampageBuild).GetMethod("BuildPlayer", BindingFlags.NonPublic | BindingFlags.Static,
                null, new[] { typeof(string), typeof(string) }, null);
            if (build == null) throw new MissingMethodException(typeof(RampageBuild).FullName, "BuildPlayer");
            Debug.Log("RAMPAGE_CURRENT_CONTENT_UPGRADE snapshotSha256=" + snapshotHash + " configure=false authoringBake=false");
            try { build.Invoke(null, new object[] { "snapshot-sha256:" + snapshotHash, "Default" }); }
            catch (TargetInvocationException error)
            {
                if (error.InnerException == null) throw;
                ExceptionDispatchInfo.Capture(error.InnerException).Throw();
                throw;
            }
        }
    }
}
#endif

Added: Assets/Rampage/Editor/CurrentContentUpgradeBuild.cs.meta

fileFormatVersion: 2
guid: d738a17e039547688d23c609e90a813d

Observed first-import package resolution

Read at 2026-09-16T23:41:11.7468220Z while the root-owned import was still running. This is the actual regenerated lock, not a guessed dependency list. Lock SHA-256: 013EB45370F95D2ED268F734F0FF88F44E55316410A2871175AA6F560BFE573C. Input System 1.20.0 and Splines 2.9.1 are unchanged. Recheck after the completed build before treating the import delta as final.

Package Current main lock Fresh 6.6 lock
com.unity.burst 1.8.30 (registry) 2.0.0 (builtin)
com.unity.cinemachine 3.1.7 (registry) 6.6.0 (builtin)
com.unity.collections 2.6.8 (registry) 6.6.0 (builtin)
com.unity.ext.nunit 2.0.5 (builtin) 2.1.0 (builtin)
com.unity.graph-authoring absent 1.0.0 (builtin)
com.unity.mathematics 1.3.3 (registry) 1.4.0 (builtin)
com.unity.modules.physics2d absent 1.0.0 (builtin)
com.unity.modules.physicscore2d absent 1.0.0 (builtin)
com.unity.modules.tetgen absent 1.0.0 (builtin)
com.unity.modules.timelinefoundation absent 1.0.0 (builtin)
com.unity.profiling.core absent 1.0.3 (registry)
com.unity.render-pipelines.core 17.3.0 (builtin) 17.6.0 (builtin)
com.unity.render-pipelines.high-definition 17.3.0 (builtin) 17.6.0 (builtin)
com.unity.render-pipelines.high-definition-config 17.3.0 (builtin) 17.6.0 (builtin)
com.unity.shadergraph 17.3.0 (builtin) 17.6.0 (builtin)
com.unity.test-framework 1.6.0 (builtin) 1.8.0 (builtin)
com.unity.test-framework.performance 3.5.0 (registry) 6.6.0 (builtin)
com.unity.ugui 2.0.0 (builtin) 2.6.0 (builtin)
com.unity.visualeffectgraph 17.3.0 (builtin) 17.6.0 (builtin)