fix: stop infinite 404 retry loop for emote asset bundles#8504
Merged
Conversation
When emote asset bundles fail to load (404), AssetResults[bodyShape] was left as null, causing CreateAssetBundlePromiseIfRequired to create a new promise every frame — looping indefinitely. Store a failed StreamableLoadingResult on failure, matching the pattern already used by wearables (SetAsFailed). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Contributor
|
Windows and Mac build successful in Unity Cloud! You can find a link to the downloadable artifact below. |
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
World scenes don't query the asset-bundle-registry yet, so they fall back to fetching manifests directly from ab-cdn. The URL was incorrectly appending a platform suffix (_webgl) that the CDN doesn't use for manifests, causing all world asset bundle loads to fail. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request Description
What does this PR change?
1. Fix infinite 404 retry loop for emote asset bundles
When emote asset bundles fail to load (e.g. 404 from StreamingAssets),
FinalizeEmoteLoadingSystemwas only logging a warning but leavingAssetResults[bodyShape]asnull. This causedCreateAssetBundlePromiseIfRequiredto create a new promise every frame, producing an infinite loop of 404 requests.Now stores a failed
StreamableLoadingResulton the failure branch inFinalizeAssetBundleLoading, matching what we already do for wearables inFinalizeWearableLoadingSystemBase.SetAsFailed. This ensures the null check inCreateAssetBundlePromiseIfRequiredstops re-creating promises.2. Fix world scenes failing to load asset bundles (manifest 404)
World scenes don't query the asset-bundle-registry (unlike catalyst scenes), so they fall back to fetching manifests directly from
ab-cdn.decentraland.org. The manifest URL inLoadAssetBundleManifestSystemwas incorrectly appending a platform suffix (e.g._webgl) that the CDN doesn't use for manifests, causing the manifest request to 404. This cascaded into all individual asset bundle loads failing: the failed manifest markedassetBundleManifestRequestFailed = true, which blocked the WEB source inPrepareAssetBundleLoadingParametersSystemBase, leaving only the EMBEDDED source (which also 404s for assets not bundled in the build).Removed the platform suffix from the manifest URL. This is a temporary fix — once multi-scene-worlds is merged, worlds will query the registry like catalyst scenes and this fallback path won't be needed.
3. Shader variant updates
Updates the scene shader to include missing variants following this PR, and adds missing TMP shader variants (
OUTLINE_ONfor TMP Mobile,SOFTMASK_SIMPLE UNDERLAY_ONfor Soft Mask TMP) to the shader variant collection for WebGL builds.Test Instructions
Test Steps
franfranfran.dcl.eth) on WebGLAdditional Testing Notes
SetAsFailedinFinalizeWearableLoadingSystemBase)Quality Checklist
Code Review Reference
Please review our Code Review Standards before submitting.