优化《神之锻造》:200多位英雄,数百万多边形构成的世界

请阅读我们对《Fateless》联合创始人兼联合首席执行官西蒙·洛克比(Simon Lockerby)和希沙姆·萨利赫(Hisham Saleh)的专访,他们将在采访中分享在《Godforge》中管理超过200名英雄角色以及包含多达百万多边形的高保真场景时所采用的关键优化策略。他们解释道,借助 Unity 开发,他们成功将内存占用从 4 GB 降至 1.3 GB,并将帧率提升了 57%。
西蒙·洛克比:《Godforge》是一款以神话为主题的回合制小队角色扮演游戏。你可能会与拉、宙斯,甚至是奇辛这样的玛雅神明交战,并迎战史诗级的首领战。
在开始使用 Unity 时,我们在移动端优化方面面临的最大挑战,主要集中在构建包的大小、游戏帧率以及实际下载速度上。
我们希望尝试优化多项内容,包括着色器变体、提升帧率、缩小APK下载包体积以及整体下载速度

随时间推移的性能扩展
希沙姆·萨利赫:随着我们不断开发和完善这款游戏,这绝非一个仅需六个月就能完成的项目。这是一个漫长的过程。因此,随着时间的推移,优化目标和目标设备实际上已经发生了变化,这本就是意料之中的事。
我们始终致力于支持尽可能多的移动设备。我们希望确保组装出一台外观精美的PC,因此我们着重让团队明确:这是最低配置要求,也是大家需要达到的基准。此外,我们希望在最低分辨率下呈现最佳效果,并在Mobilive最高分辨率下作为重点呈现。Unity 为我们开发了大量工具,以便我们能够实现这一点。
西蒙·洛克比:这确实帮助我们做好了面向未来的准备,因为这些工具是由 Unity 团队提供的。这帮助我们及时发现大型网格或重复网格被纳入构建的情况,从而确保从一开始就正确使用贴图集;而所有这些已建立的系统,意味着我们能够控制未来构建包的大小、下载速度、帧率等各项指标。
希沙姆·萨利赫:如果回顾我们真正关注的是什么,你知道的,就是这些场景、这些角色,以及我们在屏幕上看到的内容。如果你有一个场景,其中包含数百万个多边形——虽然我觉得可能还没到数百万,但大概有一百万个多边形——而且你试图一次性加载所有内容,那么加载速度肯定不会很快。
所以,遮挡检测功能真的让我们能够实现所有想要的功能,不仅画面效果非常酷炫,加载速度也很快。玩家进入游戏后,参与战斗时,不再像以前那样——我都不记得具体是多久了,有时要等五六秒,简直荒谬——而是,你知道的, 在高端设备上加载非常迅速,而在低端设备上,最多也就一两秒。

优化素材资源加载性能
西蒙·洛克比:最令人兴奋的时刻就是当我们集齐所有英雄的时候,因为我们是英雄收藏家,拥有超过200个不同的英雄。因此,玩家随时可以拥有超过200张英雄肖像。因此,将这些内容整合到地图集中后,我们的英雄列表加载速度就变得快如闪电,相比之前那糟糕透顶的加载速度简直是天壤之别。
希沙姆·萨利赫:将最佳实践应用于 Addressables 确实大大缩减了 CDN 的规模,这对我们帮助极大。我的意思是,这主要是为了确保我们不会加载不需要加载的内容,只在必要时向玩家提供所需内容,并且避免让大量版本和副本在构建中四处散落。
有时,当你全神贯注于推进工作进度,确保游戏画面精美、体验流畅、玩法足够出色时,可能会忽略这些最佳实践,因此你不得不回头去修正这些问题。

提升内存和帧率
希沙姆·萨利赫:我认为,资产调整对它的影响最大。我认为,当我们面对一款内存仅有2到3GB的低端设备时,要达到我们期望的游戏品质标准确实很困难。因此,通过优化MIP贴图,确保所有内容都经过标准化处理、在恰当的时间被正确加载,这才真正让我们得以达到预期的品质标准。
西蒙·洛克比:我们确实从——我记得在开始进行这些优化之前,内存占用是4 GB——降到了1.3 GB。所以,这真是一个巨大的变化。
Unity 团队成功将我们的着色器变体数量减少了约 76%。他们成功将我们的帧率提升了57%。有一些很棒的工具可以用来识别刚刚尝试运行游戏的设备类型。
所以,你知道,在加载时,我们可以根据设备类型选择低、中或高设置,从而为该设备激活相应的配置方案,这对我们正式上线来说,确实是一个重大的转折点。
欢迎访问我们的 Steam 策展页面,探索更多 Made with Unity 制作的游戏,并前往 Unity 博客和资源中心阅读更多 Unity 开发者的故事。
