Back to Blog
    Last Week in Unreal

    Last Week in Unreal: Legacy Ray Tracing Goes Opt-In on ue6-main, and 5.8.5 Shows Up in a Commit (October 26 to November 1, 2026)

    Venkat S25 min read
    Terminal-style commit analysis card on a dark navy background, showing 1,506 Unreal Engine 6 commits on the ue6-main branch for the week of October 26 to November 1, 2026, under the headline Last Week in Unreal.

    Week of October 26 to November 1, 2026 | 1,506 commits on ue6-main, 277 on ue5-main, 2 on the public 5.8 branch | Branch: ue6-main

    Overview

    If you ship on 5.8, start with the last section. The public 5.8 branch took its first non-localization commit since 5.8.4 was cut, an AssetRegistry cache fix. There is no 5.8.5 tag or version bump, but one ue5-main commit describes itself as “Hotfix for 5.8.5.” ue5-main itself ran 277 commits, about double last week, and most of the increase is ue6-main renderer work being carried across, not fixes. We went through it and pulled out what is worth taking on top of 5.8.4.

    On ue6-main, the change most likely to surprise a project is in ray tracing. Legacy ray traced ambient occlusion, translucency, and sky light are now off unless you set a new read-only variable before startup (378da19a). The diff adds no runtime warning, so a project that uses them just stops getting them.

    Build engineers should look at UAT. -ue4exe is now “ignored like any other unknown argument” (dd7e3a75), and Localize can now fail or gather different text on projects that worked last week (060a0d26). On the cook side, a bug that made “every sharded cook on a fresh output directory” a full cook is fixed (1facd0ff).

    At 1,506 commits, ue6-main had its busiest week since we started tracking it in mid-June, above last week’s 1,420. 352 authors committed, against 329 last week. Among named subsystems, build and editor tie at 116, followed by rendering at 101, core at 75, and platform at 40.


    Epic is cutting time out of one content worker cook, commit by commit

    Pattern: 14 commits this week mention a “content worker cook,” and 12 of them quote savings against the same “~4.5 minute content worker cook.” The largest single-commit numbers are off the game thread: “~125 s of worker thread time” (114a378e), “~31 s of DDC worker thread I/O time” (ae791da9), “~20 s of worker thread time” (9fa253b8), and “~18.6 s of asset registry gatherer thread time” (48b55268). The largest game thread saving is “~9.5 s of game thread time” (cddff8b7). Each is quoted on its own thread basis, so they do not add up to a total.

    Interpretation: the same week fixed the bug that made sharded cooks run full (1facd0ff), so farm cook time looks like the target right now. Last week’s story was invalidating everyone’s cook to stay correct, with four changes to CookIncrementalVersion. This week that value did not change at all, and the ticket-tagged determinism work dropped from 22 commits to 8. One week is not a trend, but the emphasis moved from correctness to speed.

    Who cares: cook and build engineers, especially anyone using zen-backed or sharded cooks.

    Signal strength: Moderate.

    Agent tooling keeps growing, and editor scripting keeps getting stricter

    Pattern: counted by commit path the same way as before (the experimental Toolsets, ToolsetRegistry, and AIAssistant plugins, ToolsetCore, and AsyncFunctionResult, with mesh modeling toolsets excluded), the cluster came to 60 this week, against 55 last week.

    Interpretation: the side effect for studios is that two scripted failures are now harder to miss. get_statistics used to return “0 pixel and vertex shader instructions and -1 samplers and raised nothing” on compile errors, and now raises (1765a935). Sound Wave import failures log instead of opening a modal in automated runs (cbfdac30). A CI script wrapping these calls may turn red after a sync, on assets that were already broken.

    Who cares: tools programmers and pipeline teams with editor automation.

    Signal strength: Moderate.


    TL;DR

    • If you ship on 5.8: one fix landed on the 5.8 branch after 5.8.4, and a ue5-main commit mentions 5.8.5, with no tag or version bump behind it. The 5.8 section lists what to cherry-pick now, led by a Live Link Hub path traversal fix, a Landscape cook crash, and an ALT2 loader stall.
    • Legacy ray tracing is off by default. Ray traced AO, translucency, and sky light need r.RayTracing.AmbientOcclusion.Supported, .Translucency.Supported, or .SkyLight.Supported set before startup (378da19a). Nothing warns you at runtime.
    • UAT changed under CI. -ue4exe is ignored (dd7e3a75). Localize no longer falls back to a Debug editor, and a code project without a Development editor receipt now fails (060a0d26). Gauntlet reports hang watchdog kills as fatal errors instead of passes (f8aa098c).
    • Sharded incremental cooks are now incremental. Before, “every sharded cook on a fresh output directory” was a full cook (1facd0ff).
    • FUObjectItem is packed by default. The deprecated FUObjectItem::Object member is gone (c3377a0b). This is the change we reported as backed out last week, back with one new exclusion: AutoRTFM builds.
    • Windows RHI selection dropped its GPU lists. The GTX 10-series SM5 preference list and the SM6PreferredGPUDeviceIDs override are gone (c2e24ea6).
    • Three things that look shipped and are not: the Lumen radiance cache default change (31f55cc8, reverted by 58e2e35d), DWARF 5 (521fffd1, backed out by 5fa332d9), and scene renderers on the render thread (5a478405, backed out by f19b9a20).

    Highlights

    Legacy ray tracing features now need an opt-in at startup

    What changed

    “Guard deprecated legacy RT features behind .Supported cvars such that they are not compiled in by default.” The commit adds: “These features are slated for removal. These cvars are set to off by default to decrease the number of raygen shaders that must be built” (378da19a).

    The diff adds three variables, all defaulting to false and all read-only, so they have to be set before startup rather than from the console:

    • r.RayTracing.AmbientOcclusion.Supported
    • r.RayTracing.Translucency.Supported
    • r.RayTracing.SkyLight.Supported

    The title undersells it. The diff also adds runtime gates, so the render paths return false when the matching variable is off. r.RayTracing.AmbientOcclusion and r.RayTracing.Translucency default to -1, “Value driven by postprocess volume,” so a post process volume that sets ray traced AO or the deprecated ray traced translucency method stops taking effect without the new variable. The Primary Rays debug mode now depends on r.RayTracing.Translucency.Supported too.

    Why this is important

    This fails quietly. The diff adds no log line or assert, only help text and tooltips, so a project still using these features loses them after a sync and sees only a visual change. If you do not use them, you get fewer raygen shaders to build. Either way, take “slated for removal” as the real message and plan the move off them. A commit with the same title also landed on ue5-main, so this is not only a UE6 concern.

    Who should care

    Rendering and technical art leads on projects with older ray tracing setups.

    Urgency

    Act now if a project uses legacy ray traced AO, translucency, or sky light.


    UAT and UBT: changes a CI script will hit

    What changed

    • -ue4exe is gone. BuildCookRun “reads -EditorExe as well as -UnrealExe, and no longer accepts -ue4exe.” The flag “is no longer read and is ignored like any other unknown argument,” and “-EditorExe wins over -UnrealExe” (dd7e3a75). The flag itself draws no error, and the old “Obsolete argument” warning is gone too. UAT falls back to the running command’s argument or the project’s Development editor receipt, and fails only if that receipt is missing.
    • Localize. The commit lists “Behaviour changes”: “Localize no longer falls back to a Debug build of the engine editor, so pass -EditorExe for that.” “A code project without a Development editor receipt now fails with the new error instead of running the engine editor.” “Projects with a unique build environment now gather with their own editor rather than the engine’s, so their gathered text may change” (060a0d26).
    • Gauntlet. “Report hang watchdog kills as fatal errors instead of passes” (f8aa098c). Tests that passed on a hang kill can now go red.
    • SDK order. AutomationTool now sets “up platform SDKs before building script modules,” fixing a module built “against a different SDK from the one the run then set up.” It “adds about 0.4 s to a -CompileOnly run with nothing to build” (77ed47a9).
    • UBT fields became properties. “Enable CA1051 by turning visible instance fields into auto-properties.” Names and types stay, so Build.cs and Target.cs compile unchanged, but “The change is not binary compatible, so anything compiled against UnrealBuildTool has to be rebuilt” (69ba0774).
    • Generated project files. “Project, filter and solution folder GUIDs use name-based SHA-256 (UUIDv8) instead of MD5” (d8d2ec70). Expect a noisy diff the first time you regenerate if you check these in or compare them.
    • -SingleFile outputs. They now go in an SF/<hash> subdirectory “per source directory instead of renaming same-named files” (26fb86b6). Scripts that expect the old paths need updating.
    • Test targets. The bTestsRequire* statics “are deprecated and ignored; set” bCompileAgainst* “in the test target instead” (6ea5c7e6).
    • Program targets on Mac and Linux. “Add Mac and Linux shader format modules to Programs only with bForceBuildShaderFormats, matching Windows” (5f235d57).

    Why this is important

    The -ue4exe change is the sharpest one. A stale pipeline usually does not fail, it just stops selecting the editor you asked for, and it no longer logs a warning about it. The Localize changes are stated as behavior changes by the commit itself, and the unique-build-environment one can change gathered text without any error. Most of the rest is a one-time cost for build teams.

    Who should care

    Build and CI engineers, localization pipeline owners, anyone with tools compiled against UnrealBuildTool.

    Urgency

    Act now: grep your pipelines for -ue4exe, and run Localize on a code project after syncing.


    Cook: sharded cooks fixed, and a run of incremental input fixes

    What changed

    • Sharded cooks on a fresh output directory were never incremental. With -ZenStoreShardId, the cook artifact reader connected to a shard before it existed, “so the cooker declared the previous cook invalid and every sharded cook on a fresh output directory (every content worker cook) was a full cook into an empty shard” (1facd0ff). A follow-up means a shard whose base cannot be cloned “starts from an empty shard instead of failing” (b90bc13a).
    • A cook-blocking regression. Zen header building “caused zenserver to reject every request after integer appends stopped going through vsnprintf,” and the fix “unblocks the cooker and the zenserver launcher readiness ping” (dab48e23). If your last sync could not cook against zenserver, look here.
    • Host-dependent output. “the cooked file manifest depended on the cooking host,” because a staging setting was read from the host platform’s config (a4a80d32). Cooked editor staging had the same class of bug (919f0abc).
    • Measured savings. A change to Windows HasMarkOfTheWeb “Saves ~18.6 s of asset registry gatherer thread time on a ~4.5 minute content worker cook” (48b55268).
    • D3D shaders. The shader metadata version changed “to fix possible ddc corruption” (b6996946). The D3D12 SM6 shader format version also changed (e723629b). Expect a recompile.
    • Mutable. CustomizableObject left the incremental cook deny list in BaseEditor.ini (8f5abea5), so those assets can now cook incrementally.

    Why this is important

    If you run sharded cooks, this is a real change in behavior: a pipeline that always did a full cook may now actually cook incrementally, which is what you wanted but has not been tested in your farm before. Test it before you trust it.

    Who should care

    Cook engineers and CI owners, especially with zen-backed or sharded cooks.

    Urgency

    Act now if you use -ZenStoreShardId. Track the rest.


    Defaults that moved this week

    What changed

    • FUObjectItem packing. “Pack FUObjectItem by default and remove UE_PACK_FUOBJECT_ITEM” (c3377a0b). The message lists two exclusions, remote object handles and ARM with the ANSI allocator. The diff has a third it does not mention: AutoRTFM builds. The commit’s title, enabling UE_STORE_OBJECT_LIST_INTERNAL_INDEX by default, needs UE_FNAME_OUTLINE_NUMBER on, case-preserving names off, and no remote object handles. UE_FNAME_OUTLINE_NUMBER is 0 unless a target sets bFNameOutlineNumber. Do not assume it applies to you.
    • Occlusion feedback. r.OcclusionFeedback.UntestedAsIndefinite is removed “to make it default behavior” (9236fd54). It defaulted to 0, so this changes behavior at the default r.OcclusionFeedback.VisibleTestPeriod of 1. It only applies to ES3_1 mobile with r.OcclusionFeedback.Enable on, which is off by default. The removed help text mentions “game thread ticking keyed on it,” so check gameplay that reads LastRenderTime.
    • Windows RHI selection. “automatic selection no longer uses GPU model lists. Devices listed in SM6PreferredGPUDeviceIDs no longer bypass the minimum dedicated memory check” (c2e24ea6). The ini keys bUseSM5PreferredGPUList and SM6PreferredGPUDeviceIDs are no longer read, so overrides in your config go dead. That list applied by default, so GTX 10-series cards that meet the remaining checks, such as minimum dedicated memory, can now default to SM6 with no config change.
    • Android app glue. The engine “Replaces the NDK’s android_native_app_glue.c with an engine copy,” aimed at “the root of surfaceDestroyed / busy-EventWorker ANRs.” The new glue is the default. Android.AppGlue.Legacy, a read-only CVar, restores NDK semantics within the engine copy (73f4b4dd).
    • Mac SM5 volume texture atomics. bSupportsVolumeTextureAtomics is now true for METAL_SM5, which “Fixes Niagara Fluids 3D (RasterizationGrid3D) being compiled out on Mac SM5; also enables global distance field coverage and hair voxelization on SM5” (53122d62).
    • Select All Of Class. A new LevelEditor.SelectAllOfClassBehavior defaults to 1, “All excluding actor components,” not the legacy actors-only behavior (74b0bac8).
    • Landscape layer blend. landscape.UseLegacyLayerBlendMaterialExpressionBehavior goes from false to 1, which makes it per expression. Materials saved before this change load as legacy, and new expressions get the new behavior. If you track ue6-main, that moves existing materials back from the new behavior to legacy, so recheck any you tuned since the old default. Setting the CVar to 0 forces the new behavior everywhere. Also, “An unconnected layer input is now an error when blending MaterialAttributes,” which can be a new material compile error (d1920600).
    • Game feature streaming. GameFeaturePlugin.EnableBuiltinGFPStreaming goes from false to true (c997e766).
    • Vulkan shader cache. r.Vulkan.ShaderObject.BinaryCache.ShardBits defaults to 5, and “Cache files written with a different value are not loaded” (e6425e19). The message mentions neither. Cache file names now carry a shard suffix, so existing caches will not match. Expect a cold shader object cache on first run if you use shader objects.

    Why this is important

    The packing change is the one most likely to surface in odd places, such as custom debugger tooling (the stock natvis was updated) and engine modifications that read the object array directly. The rest change behavior after a sync with no edit on your side, and several of them, like the RHI ini keys, fail silently. Compare against a pre-sync capture before you blame content.

    Who should care

    Engine programmers with forks or object array tooling, Windows and Mac rendering owners, Android teams, mobile gameplay programmers using LastRenderTime.

    Urgency

    Act now on config that sets the removed RHI keys. Track the rest at your next sync.


    UBA and Horde: a deadlock, and a config bug that dropped includes

    What changed

    • UBA deadlock. “Fix client/server deadlock where the client recv thread blocks replying to a server keepalive.” “Without threaded send (linux agents),” the two sides “waited on each other until the ping timeout” (6d16bfc7).
    • UBA exit codes. “Children that had already exited were reported as killed, which replaced their real exit code” (2454bbfa).
    • UBA crash. If “the ELF is larger than the reservation,” the first copy faults. The reservation now grows to fit, and “Reservation or mapping failures are now fatal errors instead of silent” (77c5480f).
    • Horde config includes. “Every sibling after the first to reference a shared leaf include got a false ‘Diamond include’ warning and had that include silently dropped from its merged config” (e4a0a678).
    • Horde metrics. queue_size is now per pool, and “Dashboards must sum across pools for the total” (ce11a717). waiter_count “showed online agents, not idle ones” and is now tagged by agent state (87a68804).
    • Horde auth. “Accept service-account tokens from external OIDC issuers,” which is “off unless the ExternalIssuers setting is present” (a9f83aca).
    • DDC path check. The fatal “Cache path … is longer than 119 characters” on deep CI paths no longer fires when the path is empty or “None” (e47acb27).

    Why this is important

    The UBA deadlock shows up as an unexplained ping timeout on Linux agents, which is hard to trace from the outside. The Horde include fix changes what your config resolves to, so read your merged config before you deploy this: includes that were being dropped should now apply. If you chart queue_size or waiter_count, those panels need changing.

    Who should care

    Horde and UBA operators, build engineers with Linux agents.

    Urgency

    Act now on the Horde include fix if sibling configs, such as streams in a project, share an include. Track the rest.


    Rendering: new numbers, and renamed CVars

    What changed

    • SimplifiedMaterial. A new RayTracingMode=SimplifiedMaterial “only evaluates normal/albedo/emissive,” and “For now it’s only used for LumenWorldCache.” Measured “1080p, console, NaniteTest / LumenWorldCache: 3.05ms -> 2.78ms” (451cd496).
    • Light culling CVars. “Renamed r.MegaLights.MinSampleWeight to r.LightCulling.MinSampleWeight,” with LightAttenuationFalloff renamed the same way and deprecated redirects in the diff. “Light energy culling is now always applied to world light grid” (aeacfd09).
    • Mobile. r.AmbientLightingVolume.SingleVolumePerVoxel, a low-end mobile deferred mode, is off by default. Against WorldCullingMaxVoxelInstanceCount=1, it “reduced total ALV overhead from 1.21ms to 0.50ms with no visual tradeoff” on a sample project, though the CVar’s help warns “partial overlaps can show voxel sized seams” (9127c361). Mobile eye adaptation went “Switch: 0.169 -> 0.028 ms” and “Adreno 640: 0.333 -> 0.051 ms” (fe74f4fa).
    • Hair strands. “VulkanRHI: enable hair strands forward raster.” The diff removes the Metal exclusion from the same check too, which the message does not mention (9980f0b3).
    • Skinning cache. The rework continues and stays off: r.Skinning.Cache.CompileShaders defaults to 0, with several r.Skinning.Cache.* CVars removed in favor of r.Skinning.Cache.DefaultBehavior. New projects with ray tracing are the exception: the project setup code writes r.Skinning.Cache.CompileShaders=1 to their DefaultEngine.ini (069d6173).

    Why this is important

    Epic’s numbers are measured on its own content and hardware, so treat them as direction, not a promise. Anyone who set r.Skinning.Cache.SkeletalMeshes, .Raster, .Raster.DefaultBehavior, or .DeformationInputs needs to revisit them, because they no longer exist.

    Who should care

    Rendering engineers, mobile teams, anyone who tried the earlier skinning cache settings.

    Urgency

    Track.


    Removals, API breaks, and security

    What changed

    • FUObjectItem::Object. “Removed the deprecated FUObjectItem::Object member and the natvis-only dummy members. The UObject pointer storage is private, use GetObject() and SetObject()” (c3377a0b).
    • TScopeUnlock. TScopeUnlock and FScopeUnlock are deprecated in 6.0 (d2dd95b1).
    • TEDS. RowHandle is now a struct, with “no operator=(uint64) and no IsValid()” (fc846c91). “TableHandle stays a uint64 alias; it gets the same treatment in a follow-up,” so another break is coming.
    • Niagara Gaussian Splat. The NiagaraGaussianSplat plugin is removed, and the GaussianSplat plugin stays (5bb55a83). The message gives no reason.
    • Audio recording paths. Blueprint and script Finish Recording Output now refuses WAV files outside Saved/BouncedWavFiles. StopRecordingOutputToAnyPath is the C++ route (34ece0ec).
    • Security. “Fix path traversal vulnerability in Live Link Hub ingest worker” (77143470). StageMonitor rejects types that would let “a crafted file” deserialize arbitrary structs (8937e524). In P4VUtils on Mac and Linux, “a crafted file name could run arbitrary commands” (b749e69f). CEF v147 binaries were updated with a “fix for CVE-2026-111497” (f8ee0a64).
    • Landscape data. “a landscape texture whose source can’t be decoded is reset to default data instead of crashing the editor or the cook.” The catch: “a reset edit layer texture has lost real data, so it is also reported in the map check” (bd384c5d).
    • Learning Agents. “Fix off-by-one errors in PPO advantage computation and policy windows,” where “the last step’s advantage was always 0” (be006594). Anyone training with LearningCore’s PPO has been affected.

    Why this is important

    The FUObjectItem and TEDS changes are compile errors for licensee code, with a clear fix. TScopeUnlock is only a deprecation warning for now. The audio change breaks any Blueprint that writes recordings to an absolute path or outside the bounce folder. On Landscape, the crash on a missing or undecodable source is gone but the data loss is not, so read your map check.

    Who should care

    Engine programmers, audio programmers, teams loading third-party or user-generated files, Landscape artists.

    Urgency

    Act now if you write audio recordings to custom paths. Track the rest.


    Worth Tracking

    Three changes that read as shipped. “Set r.Lumen.RadianceCache.MaxFramesAccumulated to 4 by default” (31f55cc8) was reverted two days later by a commit that says only “Revert 59822116 until the root cause of an engine test failure is fixed” (58e2e35d), and the C++ default is back to 1, with the per-level BaseScalability.ini values restored. The probe space temporal accumulation code behind it stayed (37621e09). A UBT change whose commit says “-gdwarf-5 whenever debug info is created” (521fffd1) was backed out (5fa332d9), so DWARF versions are unchanged. “[RenderFrame] Scene renderers are constructed on the render thread from a game thread capture” (5a478405) was backed out too (f19b9a20). None came back this week.

    Follow-ups on earlier posts. Last week we reported that UE_STORE_OBJECT_LIST_INTERNAL_INDEX and FSharedRecursiveMutex as AUTORTFM_DISABLE did not ship. Both relanded (c3377a0b, 8f385700). Horde demand reporting is mostly back. The scheduler’s remote work query had already relanded during the October 19 to 25 week, which our post that week missed when it said the client side had not come back. This week the coordinator’s reporter relanded (9f1d307c) and the C# bindings landed (90fa6bd8). The UBT reporter did not come back. The G16 sRGB texture change and the switch from Breakpad to Mozilla dump_syms have not returned, UE_USE_COMPACT_SET_AS_DEFAULT and WITH_RUNTIME_FEATURE_LEVEL_SWITCH are still 0, and the 14.50.35723 MSVC minimum still stands.

    Chaos solver without islands. p.Chaos.Solver.DisableIslandManager is new and off by default. When on, there is “No sleeping or disabling” (3b45ffa0). The same commit also includes a “Copy paste error bug fix (both versions)… (might affect perf),” which applies to the default path, so physics owners should still look.


    What We Ignored

    This week we ignored most of the 1,506 commits: Verse and UEFN work, Toolsets and MCP tooling, Python API exposure, Unreal Toolbox, RoboMerge and SubmitTool changes, static analysis fixes, Niagara Cascade Converter work, and narrow crash fixes. There were 23 commits tagged [Backout], against 32 last week, and 16 of those relanded in-window. Seven did not. Two are the DWARF and RenderFrame changes above. Another is a slow-task dialog change for unattended scripts (dd9c8956, backed out by 6dbe9d87).


    For teams shipping on 5.8

    The 5.8 branch moved. It took two commits this week. One is Localization Automation. The other is the first non-localization commit since 5.8.4 was cut: “AssetRegistry: size the gather cache shards by tag data, not only by asset count” (2a59efda). The old rule could “create too large (>2GB data) shards that would overflow the table with an int32 count,” and the new one is “reducing the possibility.” It is not in the 5.8.4 tag. Take it if your project has very large asset tag data.

    On 5.8.5. There is no 5.8.5 tag, and Build.version on the 5.8 branch still reads 5.8.4. One ue5-main commit says “Hotfix for 5.8.5” (2612e93a), and it is not on the 5.8 branch. That is everything we can see, so we would not plan around a date. None of the fixes we recommended in the last two editions are on 5.8.

    Why ue5-main doubled. 277 commits, 6 of them Localization Automation, against 139 last week. 118 are renderer commits from two engineers, and 93 commits this week carry a #ushell-cherrypick tag, against 5 last week. 113 of the 116 unique renderer titles match ue6-main commits from earlier weeks, so this looks like months of renderer work being carried across. It includes “LumenWorldCache is automatic surface cache replacing previous LumenSurfaceCache relying on precomputed mesh cards” (837803cf). Build.version on ue5-main reads 5.9.0. Another 32 commits are RoboMerge tooling. Apart from the fixes listed below, none of that is hotfix material.

    We compared each fix below against the source at the 5.8.4-release tag, and the diff context matched unless we say otherwise. That means it should apply, not that it compiles, so build and test it.

    Worth cherry-picking onto 5.8.4

    • Live Link Hub path traversal. “Reject writes that escape the intended storage root to prevent arbitrary file writes” (5d695d1f).
    • Landscape crash in the editor and cook. “A corrupt or missing heightmap or weightmap source crashed the editor and the cook.” The commit says “No exported symbols or struct layouts change, so the fix is hotfix compatible.” The same caveat as ue6-main applies: a reset edit layer texture has lost real data, and it is reported in the map check (dcc80219).
    • ALT2 loader stall. “Loading is stuck, flush will never finish” (ac5bf8a2).
    • Automation test exit crash. “Don’t set GIsCriticalError on automation test failures,” which led to a crash at exit. Relevant if your farm runs automation tests (1758413c).
    • Xbox GDK. “Update GDK MainVersion to 260403,” which “fixes savegame suspend/resume crash in 260400 GDK” (fd350bc0). You need the matching GDK installed. The commit says it “also includes 1.20.0.2 preview EOS SDK for 260403,” but its diff only changes GDK_SDK.json. The EOS binaries are the separate commit listed below (94537b05), so read them together. Separately, “Fix PlayFab crash on game resume after suspending” (609cee13).
    • Runtime crashes. Motion warping with the root bone as target (211410e6), Chaos Vehicles on NaN inputs (de15ce34), and a VSM crash with “more than VSM_MAX_SINGLE_PAGE_SHADOW_MAPS local lights.” With that last one, “Lights with VSM allocation failure now have their shadows disabled,” which is a visible change (ce4ee23d).
    • Editor crashes. Python wrappers after a forced purge (a8f4ac30), Content Browser async text filtering (9cc52583), shutdown while PIE is active (6427cdaa), Control Rig, whose commit says it “stays hotfix compatible” (302f0118), a bandwidth debug visualizer exit crash, “Built and tested on UE5.8 Editor” (aeb67086), brush models with no polygon list (19781e75), and the “top Modeling Tools crash family” (9b8d904e).
    • Mac. “Mac: fix crash on editor exit after closing the -log console window” (679494e6), and “Do not crash when something else reaps our child process,” with “40 reports across three engine versions” (fad3ced4).

    Still worth taking from the last two editions: the Mac editor exit crash from the October 12 to 18 post (a different crash from the one above), the shader compile hang with async compilation off, the movie staging pair, the physics handle use-after-free, the Niagara redo crash, and the CEF crash pair.

    Take if you hit them

    • UMG FieldNotify order. MVVM two-way bindings “read the stale value (and wrote it back to the viewmodel).” This is the commit that mentions 5.8.5 (2612e93a).
    • GeometryScript skin weight race. It says “cpp-only change for hotfix compatibility” (487d1156). The same workaround was removed on ue6-main the next day because the underlying race got a real fix, so read both before taking it.
    • SDK binaries. “EOSSDK v1.20.0.2 CL 59731904 Binary Only update” (94537b05) and CEF v128 binaries (64f81504). Both only partly match 5.8.4, so expect to resolve them by hand.
    • Rendering. SMAA with Instanced Stereo crash (f7b0c304), and non-Lumen scene captures “discarding pending Lumen Scene buffer updates” (f278e3f5).
    • Stylus and tablet. A Wintab crash, a “RealTimeStylus COM object leak,” and an RTSCom crash on release (b0123ed5, 82347223, 391b78bd). Take the last two in that order, because the third only applies on top of the second.

    Looks like a fix, but is not one for you

    • 14b74eed is titled “ABrush::PostLoad no longer dereferences a null level,” but its diff changes only a comment.
    • 224ba26c says “hot fix compliant,” but its MovementBaseInterface.cpp context does not match 5.8.4, and the CVar it refers to is not in that file at the tag.
    • a7658bad, a UMG queued animation fix, is off by default unless you set UMG.ReregisterQueuedAnimationsOnTick.

    Closing

    If you track ue6-main, check for legacy ray tracing and -ue4exe before anything else. If you ship on 5.8, nothing forces you to move this week, and the Live Link Hub, Landscape, and loader fixes are the ones we would take first.

    Commit SHAs are cited inline, in parentheses, next to each claim. They reference the ue6-main branch of EpicGames/UnrealEngine, except in the “For teams shipping on 5.8” section, where 2a59efda is on the public 5.8 branch and the rest are on ue5-main.

    Share this article