橘猫新闻 综合报道 鹰角网络技术中心负责人Will在韩国首尔举行的Unite Seoul 2023上,首次系统公开了《明日方舟:终末地》在Unity引擎底层代码层面的突破性改造。这场标注为“进阶”(Advanced)的演讲是议程中唯一来自中国游戏公司的项目分享,现场座无虚席。Will在会后接受专访时透露,团队通过自研ECS数据内核、重构剔除与排序链路、手写原生C++渲染管线等一系列激进优化,成功将游戏在主流PC、主机及移动端旗舰机上稳定运行于60帧甚至更高帧率。
Will在Unite Seoul上的演讲题为“重构《明日方舟:终末地》渲染管线:从ECS到原生C++”,内容涵盖四大核心技术突破:其一,自研ECS数据内核,用于支撑每帧数万个可渲染对象的高吞吐处理;其二,重构剔除、排序与批处理链路,让多个视图共享同一组可见性数据,并将渲染状态编码进同一个sort key,实现“按状态聚簇”的自然排序;其三,将关键的运行时渲染管理改为自写的原生C++管线,配合CPU上手写Render Graph,管理资源生命周期和依赖关系;其四,底部垫一层沿用Vulkan语义的设备抽象,屏蔽平台图形API差异,把移动端和PC端拉到同一条数据导向路径上。
Will向记者解释,这套架构的核心目标是在最低端可运行设备上保住至少一公里的视距,而非用浓雾遮挡远景。团队采用CPU软件遮挡技术:从场景中选取数百个主要遮挡物,制作成简单的遮挡片(通常为几个quad),由CPU在屏幕空间内绘制低分辨率深度图,再据此剔除被完全遮挡的对象。这一过程与视锥体测试和LOD选择并行进行,线程间不互相等待,实现“不留空闲气泡”的设计。
在ECS框架的定制上,团队做出了激进取舍:约70种component ID全部在编译期写死;使用固定的128-bit mask描述component组合;job直接使用原生C++和显式fence;磁盘文件与运行时chunk尽量采用相同布局;结构变更集中批处理,不在帧中途随意发生。Will强调,这实际上是一套专为《终末地》定制的ECS框架,由此实现了趋向极致的性能压榨。例如,开发团队预先对场景打包,使磁盘上的ECS数据与运行时chunk采用相同布局,加载时通过一次memcpy直接搬入内存,省去逐对象解析和分配。
Will坦言,早期尝试套用Unity原生方案时,游戏甚至难以稳定达到30帧。“一帧画面的完整预算只有16.66毫秒,其中留给CPU端遮挡和剔除的时间只有零点几毫秒。”通过自研ECS、连续内存、多线程剔除、一次排序和原生C++管线接成的完整架构,才达到项目所追求的性能效用。
