
各位市长,大家好! 在本期城市专栏中,我们将深入探讨《都市:天际线2》的技术细节,尤其是游戏性能方面的内容。我们与技术总监和首席程序员进行了座谈,他们详细介绍了游戏性能的总体情况。此外,我们还将了解开发团队正在研究的两类性能问题,以及未来针对这些性能问题的修复计划,同时提前预览一下我们计划在下一个补丁中添加的新工具! 话不多说,让我们马上开始! 什么是性能? 那么,“性能”这个术语具体指什么呢?简而言之,《都市:天际线2》在开发时就以最大化利用多核CPU为目标。这意味着基础技术表现良好,但仍有许多可改进之处。这类城市建造游戏的挑战独具一格:你可以近距离观察市民细节,也能快速拉远视角欣赏整座城市全貌。这些不同视角对性能优化而言颇具难度。此外,游戏世界动态且持续变化,这意味着无法提前预计算或烘焙数据来解决性能问题。尽管在性能方面仍有许多问题需要进一步调查,但我们将这些挑战视为有趣的课题,并希望直面它们,这也是我们当初选择游戏开发作为职业道路的原因。我们也一直在与Unity合作,以帮助找出具体的性能问题并寻求解决方案。现在,让我们来看看目前影响性能的一些因素,以及可能的修复方法。 渲染性能(GPU) 我们已确定,对渲染性能影响最大的是需要渲染的三角形数量,这一点可能听起来很明显,但实际上还有更多因素。以市民的牙齿为例:过去,无论距离远近,城市中每个可见市民的牙齿都会被渲染。好在这款游戏并非关于牙科,牙齿渲染问题早已修复,但仍有许多地方可以进行性能优化。 提升渲染性能最简便的方法是添加更多更好的细节层次(LOD)模型。LOD是模型的简化版本,当物体远离相机时会切换使用,因为对于地平线上的建筑,你并不需要与眼前建筑相同的细节水平。简化后的资源减少了GPU需要处理的三角形数量,这也间接提升了阴影渲染性能,因为阴影是使用相同的几何图形绘制的。 水模拟同样在GPU上运行,因为它涉及到GPU专为处理的那种大规模并行数学运算,用于计算水流、水压累积以及与地形的相互作用。水系统是渲染管线中负载较重的部分之一;在低端硬件上,这个问题尤为明显——水系统会占用大量GPU资源,导致其他渲染工作无法同时进行。我们目前正在研究改善水模拟的方法,尤其是针对性能较弱的硬件,以使其能与渲染管线的其他部分更好地协同工作。地形渲染是我们目前正在研究的另一个领域。目前,地形系统会为相机不可见的部分生成几何图形。在某些情况下,我们提交的地形几何图形中约有65%因超出视野范围而被剔除(移除)。通过在流程早期添加更智能的可见性检查,我们可以从一开始就避免向GPU发送不必要的几何图形。我们的分析显示,发送到GPU的三角形中有40%-60%因太小而无法在屏幕上显示,最终被丢弃,这造成了大量的工作浪费。更好的LOD(细节层次)系统可以更早地发现这些情况,并在GPU处理之前替换为更简单的几何图形。

冰花竞技场的不同LOD等级 模拟性能(CPU) 与渲染性能相比,模拟性能是一块难啃的骨头,因为只有当你的城市发展到特定阶段后,相关问题才会凸显出来。通常,这些问题与人口增长以及市民的寻路行为密切相关。因此,解决模拟性能问题最简单的方法就是关注游戏中的寻路请求及其发生频率。例如,市民是否需要步行30公里去商店——这需要寻路系统搜索整个城市——还是说他们可以找到更智能的方式购买杂货?这类小型游戏玩法调整确实有可能实现,但由于它们也会影响模拟系统的其他部分,因此修复仍需较长时间。不过,我们正在研究各种可能性,例如减少行人数量以更好地反映城市规模,这将有助于提升模拟性能,尤其是在大型城市中。 游戏中的问题也可能导致更严重的性能问题。其中一些问题我们已经修复,比如市民或罪犯被困在特定建筑中导致寻路操作过多,以及大量自行车对寻路系统造成额外压力。但仍有类似问题有待发现和解决,以进一步提升性能。

我们使用Unity Profiler来追踪寻路性能瓶颈。在这种情况下,许多CPU线程都在忙于寻路及相关计算。 提升性能的措施: 在之前的更新中,我们已针对性能问题应用了一些简单修复。例如,在较低硬件设置下降低阴影分辨率,根据所用硬件自动匹配图形质量设置,以及在低端硬件上禁用部分最消耗性能的效果,如SSGI。 虽然性能问题仍需更多调查、优化和尝试不同解决方案,但我们对提升性能时应优先处理的事项已有大致思路。我们目前正优先处理LOD(细节层次)和影响渲染的算法,这将提升GPU端的性能,即使在你最小的城市中也能立即感受到变化。我们同时也在研究不同CPU和显卡的性能限制。 我们已准备了一个基准测试工具,它能让你在补丁更新前后检查性能变化,以及更新对你电脑性能的影响。该工具将包含在下次补丁中,如果一切顺利,计划于本月底发布。





换一换 






























