You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #8870 (chore: new lods through ISS descriptor, branch chore/iss-v2) introduced descriptor-driven LODs for SDK7 scenes. It works in Genesis City, but worlds never show LODs — they stay in full-scene state regardless of distance.
Where to look first: VisualSceneStateResolver
Explorer/Assets/DCL/Infrastructure/ECS/SceneLifeCycle/IncreasingRadius/VisualSceneStateResolver.cs:22-23 short-circuits any fixed (world) realm to SHOWING_SCENE:
//If we are in a world, dont show lodsif(scenesAreFixed)returnVisualSceneState.SHOWING_SCENE;
This early return is upstream of every LOD/ISS code path — once it returns SHOWING_SCENE, neither UpdateSceneLODInfoSystem nor ResolveISSLODSystem ever get a chance. The likely fix is to lift or condition this short-circuit when the scene has an ISS descriptor available, so the resolver can flip to SHOWING_LOD on distance / quality-reduction the same way Genesis does.
Reproduction world
cozyhouse.dcl.eth on the .zone environment — two scenes:
Both scenes were deployed with descriptor generation enabled, but the asset-bundle converter was heavily backed up at deploy time, so the LOD_1 asset bundle may not yet exist for one or both. The LOD URL is composed by UpdateSceneLODInfoSystem.cs:89 + PrepareAssetBundleLoadingParametersSystemBase.GetAssetBundleURL as:
If a URL 404s, the AB still hasn't been baked — either request a re-bake or test against a scene whose LOD_1 is known to exist.
How it should work (repro steps)
Connect to cozyhouse.dcl.eth on the .zone realm.
Walk into 0,0 — the full scene loads (this already works).
Run away from the scene (or jump to 100,100, then far past it).
Expected (near range, descriptor path): the previous scene unloads and the ISS-descriptor-driven LOD appears in its place. A {sceneId}_ISS_LOD GameObject should show up in the Unity hierarchy with the per-asset LOD entries parented under it.
Expected (further range, quality-reduced LOD): keep running away — once the partition bucket crosses the LOD threshold, the system escalates to LOD level 1 and the LOD_1 AB GameObject itself should appear in the hierarchy (the legacy single-AB LOD container, not the per-asset descriptor entries). This is the bundle whose URL you sanity-checked above.
Actual today: scene unloads, but neither the descriptor-driven _ISS_LOD container nor the LOD_1 AB GameObject ever appears.
You can use the currente Genesis Plaza in zone as an example of how LOD should load/unload
While reproducing, check the hierarchy at each transition — the _ISS_LOD container and the LOD_1 AB GameObject appearing/disappearing are the clearest signal of which state the resolver / LOD systems put the entity in.
Related
PR: chore: new lods through ISS descriptor #8870 — chore: new lods through ISS descriptor (background on the descriptor flow, the gate in ResolveSceneStateByIncreasingRadiusSystem, and how the LOD systems consume the resolved descriptor).
Context
PR #8870 (
chore: new lods through ISS descriptor, branchchore/iss-v2) introduced descriptor-driven LODs for SDK7 scenes. It works in Genesis City, but worlds never show LODs — they stay in full-scene state regardless of distance.Where to look first:
VisualSceneStateResolverExplorer/Assets/DCL/Infrastructure/ECS/SceneLifeCycle/IncreasingRadius/VisualSceneStateResolver.cs:22-23short-circuits any fixed (world) realm toSHOWING_SCENE:This early return is upstream of every LOD/ISS code path — once it returns
SHOWING_SCENE, neitherUpdateSceneLODInfoSystemnorResolveISSLODSystemever get a chance. The likely fix is to lift or condition this short-circuit when the scene has an ISS descriptor available, so the resolver can flip toSHOWING_LODon distance / quality-reduction the same way Genesis does.Reproduction world
cozyhouse.dcl.ethon the .zone environment — two scenes:World definition: https://worlds-content-server.decentraland.zone/world/cozyhouse.dcl.eth/scenes
Note on AB availability
Both scenes were deployed with descriptor generation enabled, but the asset-bundle converter was heavily backed up at deploy time, so the
LOD_1asset bundle may not yet exist for one or both. The LOD URL is composed byUpdateSceneLODInfoSystem.cs:89+PrepareAssetBundleLoadingParametersSystemBase.GetAssetBundleURLas:{platform}=_windowsor_mac(fromPlatformUtils.GetCurrentPlatform()).LOD_1 URLs to verify before testing — just paste them in the browser; a 404 means the AB hasn't been baked yet:
Scene 1 — 0,0 cozyhouse (
bafkreihfseoexluqxvlcpecww3p5pte74ogfihredpdunpp47omdn76i4i)Scene 2 — 100,100 spookyhouse (
bafkreiae5svrazu3yr3lqp7th5r2k4weeld53npobhf65uqjsf3u54hlei)If a URL 404s, the AB still hasn't been baked — either request a re-bake or test against a scene whose
LOD_1is known to exist.How it should work (repro steps)
cozyhouse.dcl.ethon the .zone realm.{sceneId}_ISS_LODGameObject should show up in the Unity hierarchy with the per-asset LOD entries parented under it.LOD_1AB GameObject itself should appear in the hierarchy (the legacy single-AB LOD container, not the per-asset descriptor entries). This is the bundle whose URL you sanity-checked above._ISS_LODcontainer nor theLOD_1AB GameObject ever appears.You can use the currente Genesis Plaza in
zoneas an example of how LOD should load/unloadWhile reproducing, check the hierarchy at each transition — the
_ISS_LODcontainer and theLOD_1AB GameObject appearing/disappearing are the clearest signal of which state the resolver / LOD systems put the entity in.Related
chore: new lods through ISS descriptor(background on the descriptor flow, the gate inResolveSceneStateByIncreasingRadiusSystem, and how the LOD systems consume the resolved descriptor).