2026-05-29 引擎周报
✨ 新功能
- 添加 Model Context Protocol 支持:新增
unreal-mcp-proxystdio 桥接,并实现了性能工具集插件,可将 CPU 周期统计和 GPU 分析器数据作为 MCP 暴露。同时,为tools/call的最终 SSE 响应设置了CloseAfterWrite标志。 - glTF 解析增强:添加了 Android 平台支持,并增加了
ReadFromBuffer功能,允许直接从内存缓冲区解析二进制 glTF (GLB) 文件,适用于从非文件源接收缓冲区的 OpenXR 运行时。 - 新模板与测试支持:新增了电影模板项目,并为 ABTest 工具添加了可选的 GPU 计数器测量功能,用于评估特定 GPU 计数器的影响。
- 数据压缩格式:添加了对 SPZ4 格式的支持,并根据平台特性(是否支持 zstd)进行门控。
🚀 重大变更
- Dashboard 与 deferral 处理改进:对 deferral 的显示逻辑和状态处理进行了多项优化,包括:持久化 deferral 详情;在 dashboard 上正确维护被阻塞的语法状态;以及调整 deferral 显示时机,使其更符合预期。
- 版本与错误处理:版本号更新至 3.8.1。同时,为避免
RangeError: Invalid string length错误,对错误消息长度进行了限制。 - 验证与安全增强:优化了验证性能,并引入软截止时间以返回部分结果,防止网关超时。修复了 DOM XSS 漏洞,加固了认证 Cookie,并添加了 CSRF 保护和安全头。
- 语法错误检测:改进了对 Robomerge 指令中拼写错误的捕获能力,并更频繁地检查语法错误解析。
- 认证流程调整:将 Okta 登录流程移至服务端。
⚡ 性能优化
- Delta 生成加速:通过使用 Bloom 过滤器显著加速了 BPT (Build Promotion Tool) 的 Delta 生成过程。
- 渲染器优化:Path Tracer 进行了次要清理,并改进了 PrimaryRays 模式下的路径状态累积。MegaLights 通过移除不必要的引导哈希清除进行了小幅优化。
- 编译与运行时确定性:为确保确定性,为 ISPC 禁用了 FMA (Fused Multiply-Add)。
- 跟踪与日志优化:
InputComponent中的ConditionalBuildKeyMap跟踪现在仅在实际重建时触发,减少了跟踪文件的杂乱信息。为结构化日志添加了编译时格式字符串验证。
🐛 Bug 修复
- 新材质翻译器修复:修复了多个问题,包括:在兼容性配置文件中匹配旧版 min/max 行为;正确处理 LWC Subtract 当操作数最初为浮点数时的截断;在非世界空间位置转换中正确降级 LWC 输入;在
PrunedPrimitiveUniforms上触发断言;修复GetMaterialEmissiveForCS函数;填充CompilationOutput中的bIsLightFunctionAtlasCompatible标志;以及修复因早期更改导致的烹饪崩溃(在包保存期间StaticFindObject)。 - Nanite 修复:为网格简化器添加了安全机制,在边折叠导致所有三角形被移除时恢复遇到的最大三角形。修复了在组装具有
Keep Triangle Percent < 100或Trim Relative Error > 0属性时,Nanite 构建过程中可能触发的断言。 - 系统与模块修复:
- PCG:修复了缓存禁用时 ISKM spawner 的 CRC 问题;并使用网格体包围盒进行网格地形区段过滤。
- Niagara:修复了 DDC 的 Put 回调在垃圾回收期间注销
FGCObject的问题,通过将任务完成延迟到游戏线程来避免冲突。修复了NiagaraDataInterfaceWater的bFindClosestBody在 World Partition 中不可靠的问题。 - 材质与着色器:修复了旧材质翻译器被破坏导致烹饪崩溃的问题。从 ShaderMap 编辑器数据中移除了材质路径,以消除 DDC 数据中的不确定性源。将着色器预处理器的断言连接到引擎检查机制,并加强了对空/短源缓冲区的防护。
- 动画与游戏性:修复了循环的 GameplayCues 有时在供应其标签的 GameplayEffect 被移除后仍然持续存在的问题。为 AnimOp 添加了使用验证。修复了增强输入中,无法创建依赖于通过较低优先级 IMC 推送的输入动作的和弦输入的问题。
- 其他:修复了 VulkanRHI 中稀疏缓冲区的内存跟踪问题。修复了
FOnDemandInstallCache丢失无法刷写到磁盘的已引用块的问题。修复了IoStore OnDemand错误信息在FError重构过程中丢失有用信息的问题。修复了 Windows 上GraphicsPSOLockedCS在从 LRU 中移除 PSO 时未被锁定的问题。修复了MeshVertexAttributePaintTool在无法找到有效绘制属性时的崩溃。修复了UbaVisualizer在 D2D 最大位图尺寸低于BitmapCacheHeight时的崩溃。修复了 Verse VM 调用栈在 Blueprint 保护禁用时无法启用的问题。修复了编辑器透视相机在从 Sequencer 启动的驾驶模式弹出时传送到原点的问题。修复了 iOS 上单次向上滑动导致 UE5 应用最小化的问题。修复了加载未经过目标层升级的景观流代理时出现的虚假地图检查错误消息。修复了当从已下载的编辑器上下文中过于激进地删除框架摘要以及确定项目框架摘要写入位置的逻辑的问题。修复了导出 DCC 包时 Body 材质未被分配的问题。修复了程序化工具脚本在事务无修改时遇到错误也会执行撤销的问题。修复了MovieGraphImageSequenceOutputNode中FMovieGraphSampleState载荷的C6011NULL 解引用警告。
- 测试与工具修复:修复了 BPT 调试目标配置以防止 smoke tests 崩溃。修复了
TedsActorFolderTests测试中确保TEDS.Feature.Folders控制台变量在运行前已启用。修复了 Cat F 跟进:移除了测试侧特例,让实验节点诚实失败。
🔧 API 变更
- 工具调用结果:新增
UToolCallAsyncResultJson抽象类,用于处理无法通过属性系统轻松创建结果(例如嵌套树)的情况,并强制具体子类描述其值结构。 - Verse 调试:启用了 Verse VM 调用栈,即使在 Blueprint 保护禁用时也可用。
- 输入逻辑:移除了测试侧特例,允许实验节点诚实失败。
⚠️ 废弃预告
- (无相关提交)