← 返回首页

鹰角首次公开《明日方舟:终末地》底层技术突破:自研ECS与原生C++管线成核心

橘猫新闻 综合报道 7月27日,在韩国首尔举行的Unite Seoul大会上,鹰角网络技术中心负责人Will首次公开了《明日方舟:终末地》在底层代码层面的技术突破,详细披露了自研ECS数据内核、重构剔除与排序链路、以及自写原生C++渲染管线等核心优化方案。这场演讲被标注为“进阶”(Advanced),是议程中唯一来自中国游戏公司的项目分享,现场座无虚席。

鹰角首次公开《明日方舟:终末地》底层技术突破:自研ECS与原生C++管线成核心

Will在演讲中系统阐述了终末地如何突破Unity通用路径,实现跨平台高性能渲染。据他介绍,团队自研了ECS数据内核,用于支撑每帧数万个可渲染对象的高吞吐处理;同时重构了剔除、排序与批处理链路,让多个视图共享同一组可见性数据,并将渲染状态编码进同一个sort key,使“按状态聚簇”成为排序的天然产物。此外,团队将关键的运行时渲染管理改为自写的原生C++管线,并配合CPU上手写Render Graph,管理资源生命周期和依赖关系。在最底层,团队沿用Vulkan语义的设备抽象,屏蔽平台图形API差异,将移动端和PC端拉到同一条数据导向路径上。

针对性能优化的具体实现,Will透露了多个关键细节。团队采用CPU软件遮挡技术,从场景中挑选几百个主要遮挡物,制成简单遮挡片,在CPU上变换、裁剪成屏幕空间三角形,按屏幕区域分组绘制低分辨率深度图,从而剔除被完全挡住的对象。这一过程与视锥体测试和LOD选择同时进行,线程间不留空闲气泡。在排序批处理方面,团队将屏幕顺序、pipeline、mesh、材质和距离等信息编码进128-bit排序键,通过一次标准排序让相同状态对象集中,重复绑定整段跳过。全场景共用一份绑定表,每次draw仅移动偏移量,实现零分配。

Will强调,这些优化并非“灵感式”的临时技巧,而是技术团队先做出能力,再向美术和策划推荐利用遮挡关系设计场景。他透露,早期实验性尝试中,若尽量套用原生方案,游戏甚至难以稳定达到30帧;而通过自研ECS、连续内存、多线程剔除、一次排序和原生C++管线组成的完整架构,终末地才达到了在主流PC、主机和移动端旗舰机上以60帧甚至更高帧率运行高画质的目标。

在ECS框架方面,团队做了系列激进取舍:约70种component ID全部在编译期写死,用固定128-bit mask描述组件组合,job直接使用原生C++和显式fence,磁盘文件与运行时chunk尽量采用相同布局,结构变更集中批处理。这些定制化改造使终末地在处理大量动态对象和无缝箱庭场景时,能实现极致的性能压榨。