本文是腾讯游戏火箭计划引擎技术沙龙-北大专题分享内容节选,分享主题为《天涯明月刀》手机游戏技术研发分享。敬请期待后续更多精彩内容上线。天涯明月刀手游始于2017年,经过4年的研发,于2020年10月正式上线。在这里我们将回顾整个项目的开发过程,让大家对“天涯明月刀手游”的技术水平有一个更深入的了解。首先,让我们来看看天涯明月刀手游一些比较有特色的游戏内容。
高品质端面夹紧系统:
捏脸一直是mmo游戏的必备系统。《天涯明月刀手游》在这个系统中表现出了非常高的品质,不仅完美还原了终游的品质,甚至许多细节都超过了终游。
因此,许多玩家转向终端游戏开发团队寻求手机游戏的一些效果。
高度开放的战斗系统:
《天涯明月刀手游》战斗系统的战斗表现既没有失去动作游戏的战斗效果,也有炫目的技能表现。自游戏结束以来,战斗系统已经存在了8或9年,但它在表现良好的同时也非常复杂。
在如此复杂的战斗系统中,多人战斗的性能压力是巨大的。潜在的性能优化可能对玩家来说是不可见的,但它们为许多玩家提供了一个可以看到的基础。
Host-level场景呈现:
《天涯明月刀手游》中表演的场景也很不错。大气、植被、水体都有很好的效果,在我们的PBR2.0架构下的夜间灯光更加真实,更能让玩家感受到真实的武术世界。场景的广阔观看距离和远距离细节的高精度让人身临其境。我们的艺术生产流水线为艺术创造一些高度程式化的场景效果提供了很大的空间。
《天涯明月刀手游》是一款以掌机游戏屏幕为目标的产品,所以我们在任何时候都很好节日期间没有放松的时候。
无论是画面效果、战斗系统、精美捏面都是建立在天手发动机的基础上,技术在整个产品开发中发挥了非常重要的作用。
我们在技术上取得了许多突破,对整个行业产生了影响。我们的开发周期大约是三到四年,但背后有整整十年的技术。
天涯明月刀发动机集团非常重视团队技术的积累,在发动机技术的各个方面都有详细的知识图谱,积累了各种技术的实现和经验总结。很重要的一点是,任何技术,团队中的任何学生,都可以快速发展。
今天,游戏开发是一个非常复杂和系统的项目。
在游戏开发中,每个人都想要创新。但当我真正开始制作时,我发现有太多的想法是无法实现的。
是依靠技术来解决问题,还是限制创新来制造可以完成的产品,这是许多团队需要回答的问题。
“天涯明月刀手游”的整个发展过程也经历了这样的起起落落。
回顾天涯明月刀手游的发展历程
这是2017年开发之初的场景。美术正在试验资源规格和效果,程序也在添加各种基本功能。
2018年的游戏已经显示出了较高的艺术质量。但是很多细节也突出了性能问题。在这个镜头中,Drawcall达到800-1000,而SNAPdragon 835 CPU只能运行大约10fps。
对于整个团队来说,这是一个妥协的关键点。对于这样一个IP,技术上的妥协是不可接受的。
我们对Unity引擎做了大量的研究和分析,最终决定重写整个底层渲染管道架构,并使用Vulkan作为Android的默认图形界面。这是一个正确的决定,我们在同一款产品上取得了很大的进步为未来奠定了基础。
2019年,我们推出了一些基于多线程架构和Vulkan的新技术。持续的性能优化为美术和游戏内容留下了空间。
上图正好是2017年的位置,效果已经完全改变了。
2020年是我们最后的冲刺。在这一年里,《天涯明月刀手游》又完成了大量的内容开发,以及不断的适配调校,使我们能够适应的模式不断的探索。我们也想让游戏能够面向尽可能多的人。
mmorpg可以说是手机游戏开发中最困难的挑战。
首先,我们必须面对大量的资源,而这些高质量的高质量的资源必须在游戏中堆积起来。特别是在组队战斗中,玩家的数量和特效会在最需要表现的时候进一步增加表现压力。
《天涯明月刀手游》为了应对这样的挑战,可以说是介绍了一套非常复杂的技术。
图为“天涯明月刀手游”技术栈
我们以清晰的技术思维引入了这些技术。
数据处理的并行能力可以说是整个行业未来的发展方向,也是Skyhand引擎技术的大方向。我们通过调整架构并引入一些新技术来最大化引擎的并行处理能力。
在实际的项目开发中要控制这么复杂的技术堆栈是一个非常大的挑战,对于关键技术我们坚持循序渐进的引进,不断的测试,不断的迭代,以保证天崖明月刀的顺利开发。
正是在这样的理念指导下,我们完成了“天涯明月刀手游”不止一个令人惊叹的四个外部测试。
这四项测试不仅是测试游戏的内容和质量,也是我们的主要技术里程碑。我们在每个测试阶段安排了一些验证的关键技术要点。
很多工作实际上是我们一开始并没有考虑到这一点,在4年的开发和测试过程中,我们不断迭代并提出更多要求。
小楼整夜听着春雨
在第一个测试中,我们主要验证了多线程呈现框架。
与原生Unity相比,我们可以看到,在drawCall 1000左右,原生Unity的渲染每帧大约需要80毫秒。
天涯明月岛手游最终上线时,我们通过各方面的技术支持优化,将一帧时间优化至16ms以内,整体提升了5倍。
发动机设计的核心是对数据的处理。在重写底层框架的开始,我们对整个引擎的数据处理进行了详细的设计。
我们将数据分为三个部分:
在这些设计的指导下,我们对底层引擎进行了大量的重写,从而得到了更好的架构。
除了重构引擎架构外,性能优化还很大程度上依赖于对硬件的理解。
手机的硬件环境非常复杂。最新的CPU Snapdragon 865和855具有4个小核、3个大核和1个超级核的架构。以前的大多数cpu都有4个大核、4个小核、2个大核等架构。
由于温度是移动硬件非常重要的指标,手机厂商的温度控制策略也有所不同,包括降低频率甚至关闭核心。
在这样复杂的硬件条件下,如何做好性能和热平衡,这就需要对硬件有深入的了解和大量的测量。
一般来说,手机厂家不建议调整Thread Affinity。cpu有自己的调度策略,以保证性能和温度之间的平衡。然而,这并不是一个绝对正确的选择。
经过广泛的测试,我们提出了一个解决方案,该方案不计算除主线程和提交线程外的性能负载所有其他线程都被绑定到小内核上。这将导致多人战斗的FPS略微下降,但会导致2-3度的温度上升。就产品体验而言,这可以说是一个更好的选择。
另一个测试是线程计时的调整。
提高硬件并行度,在短时间内更好地利用CPU是一种更适合移动硬件的方法。我们能够在不同的手机上通过调整线程计时而获得3-9度的降温,而无需进行任何代码优化。
在我们的团队中,这种情况通常被称为“低垂的果实”,即许多低层次的工作已经到位,并且可以以非常低的成本获得良好的回报。如此大的温度下降是基于Skyhand引擎的大规模并行架构。
整个天手引擎的开发过程不是一朝一夕就能完成的,从一个项目开发的角度来看,在开发项目的同时对引擎进行一次完整的重写是非常困难的。所以我们在开发《the Skyhand》引擎时非常谨慎,从项目收益最大化的角度考虑这个问题。
通过引入Vulkan API,通过渲染大量drawcall,我们获得了20%-30%的性能提升,并且我们能够从其他新技术的后续性能提升中受益。
Vulkan实际上很难使用,因为技术团队实现了一些以前由驱动层实现的功能。我们投入了大量的时间和精力来解决兼容性问题和各种GPU挂起的问题。但我们从这个过程中获得的经验是其他任何团队都无法比拟的。
更令人兴奋的是,我们与硬件供应商的密切合作反过来也使Vulkan更加成熟。高通、华为这些厂家都对天手发动机给予了很高的评价。
谁请了月光酒
基于Vulkan和我们的并行化引擎架构的方向,GPU驱动是合乎逻辑的它已成为天寿发动机后续发展的主要技术要点。CPU和GPU之间的并行性进一步优化了性能。
凭借《Vulkan》在图像方面的表现,《Skyhand》引擎可以开始挑战主机平台上的一些最尖端技术。
但在电话上是非常困难的。里面有很多细节。天汉发动机集团的一位专家工程师用了大约一年到一年半的时间,不断地重复。它最终在移动平台上实现,在那里,地形渲染的平均利润是前者的两倍。
另一项技术是GPUDriven,这在最新一代的主机中也很重要,即以数据驱动的方式将进程从CPU完全转移到GPU上,如地形剔除和渲染。
这部分的手引擎获得了另一个非常强大的技术优势,原来可能需要十几个渲染指令才能完成任务,现在只需要一个,节省了90%的开销。与此同时,渲染的顶点数据量减少了75%,因为GPU可以进行更精细的剔除。
在所有这些性能改进之后,Skyhand引擎有了更多的发挥空间。于是引擎组与艺发一起,进一步提升了“天涯明月刀手游”的效果,开始发力。
当有足够的表演空间时,负责渲染特性开发的学生和艺术类学生可以开始发挥自己的优势,将整体照明水平提高到一个更高的水平。
BRDF,这部分除了一些优化算法外,不要做大的简化,以确保物理正确性。
LookDev创建了一个管道,以确保美术在每个环境中获得最终的游戏内部外观,并制作了正确的材料。
完整照明组件充分考虑了各种照明组件的物理正确性。白天的时间、动态光照变化和遮挡信息通过光照组件的分离体现在游戏中。
物理上正确的渲染管道如何,基于材料信息,光方向和遮挡被正确计算正确地呈现光线、颜色和其他玩家最终能够接收到的信号也很重要。根据光源的物理照度和相机曝光的原理为艺术品提供曝光设置,可以保证艺术品能够正确设置亮度。这与Tonemapping算法的后期调整相结合,产生了非常自然和真实的灯光。《天涯明月刀》手游戏开发四年下来,从试玩到上线都得到了玩家的认可,也得到了业界的认可。这背后是技术不断创新和积累的结果。因此,我们不会止步于此,我们将继续追求更高的目标。