Unite 2019|《使命召唤手游》,引擎技术升级与演化
《使命召唤》无疑是今年腾讯手中最重磅的IP之一。在Unite Shanghai 2019大会中,腾讯天美J3工作室技术副总监郭智分享了《使命召唤手游》的引擎技术升级与演化。
演讲内容
大家好,感谢来到Unite 2019会场听我的分享。
首先介绍一下自己, 我是郭智,2011年入职腾讯,现任腾讯天美J3工作室任职技术副总监、技术专家,负责整个工作室手游客户端的研发和一些管理工作。我有数十年从业经验,负责过不同品类项目的开发,用过一些自研和商业的引擎,做过几款FPS游戏,有比较深厚的积累。
下面是我所参与过的游戏,主要涉及MMOG、FPS以及各种端手游,涉及的引擎最左边的一些自研引擎,第二款是用的Gamebryo,第三款是Unreal,后面涉及到Unity 5的一些项目的开发。目前Unity使用得比较多,也做过Unity项目的整个引擎升级。
2017年大家都知道是手游画面升级的元年,所以对于今天,对于引擎技术来说,我们首先要聊一聊画面。对于整个游戏的画面来说,我先要谈一下整个画面呈现标准的建立。
相信各位以前从来没有听过什么叫做画面标准,说的都是要用哪几张贴图,怎么做,画面标准都是美术师去定的。 《使命召唤手游》的目标是打造3A手游呈现画面,所以我们必须探索普PBR时代画面呈现的最佳实践与升级。
对于整个IP产品来说,首先是要定义制作的主基调。《使命召唤手游》开始立项的时候,我们为了性能经历过一段时间的纠结,纠结要不要使用Phong的模型,要不要使用最经典的手绘模式。
去年我们对《使命召唤手游》的游戏画面做了重大的翻新,使用PBR去复刻整个主机的画面效果。只有能达到主机的品质,游戏才能上线。我们需要挑战的是达到主机画面的丰富度和还原度,去满足整个IP高端用户的主机情怀。
既然要制作PBR,我们要做的第一件事是统一制作管线和技术管线。
对于制作管线来说,美术需要的所有的贴图资源都需要在线性空间进行计算,无论使用任何工具去制作任何贴图,都需要是线性的。
对于技术管线来说,需要为引擎定义统一的渲染管线,也就是渲染管线是通过技术做Scalable的HD渲染管线,对于高配进行HDR的RT输入,对于低配来说为了节省性能不能做任何的后处理,就使用OnePassHDR的管线,使用Tonemapping在最终的Shader做相应的数学拟合,来拟合我们的目标曲线。
整个的制作管线和技术管线建立之后,我们再谈谈画面标准的建立。
对于画面呈现来说,我们需要一致的画面标准,例如这个角色,每个像素我们都要定义得非常标准。在国际标准上,任何的3A游戏里面都要定义Material Model、Lighting Model、Shading Model。
标准建立了,就可以用同样的语言说话。如果没有这个标准,美术同学会说我要这样贴图,这里面画点光上去,要做一些阴影的效果。统一标准之后,在团队里面,每个场合里面就不会再有分歧和异义,讨论起来非常简单。
这些标准都是具有物理意义的参数和基于真实物理的定律,也就是遵循PBR的。还有一点是全场景物理一致的光照环境,也就是说我们要使用动态的光影+PBR+IBL。
下面介绍 Material、Lighting 和 Shader这三个方面,在《使命召唤手游》手游里面到底是什么样的。
首先看一下Shading Model是什么?
我们构建了完整的手机平台的PBR光照方案,用分级对PBR进行近似。我们提出4级的PBR的数学拟合,最高级肯定是给现在的835这些系列的高端的GPU去用的,3级就是在520这种机器,2级给更低端的机器,最后1级为那种兼容型是有问题的机器去使用,解决所有的兼容性问题。
人物在高中低配都使用最完整的PBR方案,也就是说不会做Shader LOD的切换。直接光用了GGX Specular+Lambert diffuse,间接光用Cubemamp做GI Specular,用SH Probe做GI Diffuse。
对于建筑,出于性能的考虑,低端设备会简化一些光照的部分,就是刚才说的Shader LOD。直接光会在远景用Shadowmask,直接光不会烘焙进光照贴图,直接光用纯动态的光照,间接光用的是IBL Cubbmap+GPU Bake的光照贴图。
再来看看材质。固有色、一张法线加上粗糙度合并的贴图、金属度+AO放在另外一张贴图。材质接受了光照探针的间接光照和一个直接光,以及来源于环境的间接光,最后得到整体的呈现,这就是Material Model 和Lighting Model。
现在整个团队所有场景就基本确定了。确定之后我们要讨论的是制作本身,对于《使命召唤手游》这样一个3A级手游里面的一些制作管线。
相信可能对于一些程序或者开发者而言,其实不怎么在意制作管线。但是我认为所有的技术人员都需要了解美术,甚至策划的一些工作,这样才能把游戏制作好,所以我们来聊一聊对于3A级手游中的制作管线。
我们来看看3A级手游制作中的核心因素。
第一个是量产。所有的游戏现在最慢也需要3年才能制作完成,但是往往我们没有那么多费用或者时间,所以我们需要大量的外包。量产能够保证我们所有的外包、所有的人员、所有的开发、所有的美术标准都统一,才能达到量产。
第二个是引擎。现在对于任何引擎都要做成我们认为一二年后所看到的最好的样子。
最后一个是性能。无论是主机平台、还是PC平台、手机平台都是非常重要的,不可能让玩家玩得很卡顿,肯定要有最流畅的体验。
量产、引擎、性能这三个因素决定了我们整个游戏的制作管线。
对于制作管线来说,使用流程与工具保证美术素材的正确性与合理性,原则有二个:
美术素材输入一切都符合PBR标准。也就是说你不能画各种阴影,你的色彩,你的明暗不能大于我们所认为推荐的值范围。
需要统一所有的生产规格和生产环境。这一切达到之后才能量产化。达到统一规格之后画面才是统一的,才是认为能够把握的样子。
PBR最初是欧美那边提出来的,初衷其实不是为了效果,而是为了量产。
量产的策略其实有几个:一个是验证,我们能尽可能地验证。其次是文档,我们需要有各种各样的白皮书,各种各样的地方去阐述我们的思路。最后一个是科学,PBR诞生本身是工业化的产物,不是美术或者是艺术的产物。
当一味强调各种各样的Hack,强调美术不同的制作方式,强调每个技术美术做各种各样的画面的雕琢之后,就不可能再科学,游戏就不可能可控,团队就会很失控,就不可能把游戏制作出来,也不可能有量产。
所以如果要做PBR,一定要遵循“验证、文档、科学”这三个原则。
先谈谈验证,我们需要提供一系列的光照环境给美术做验证。
现在的PBR生产,以前都是在Photoshop中完成的。但是在里面制作的任何贴图,都有可能是错误的,都可能让美术制作失控,所以整个场景制作需要符合三大要点:
图形技术保证。在同样的一个PBR的光照环境,有95%以上是一致的。
制作环境约束。美术制作者使用的渲染环境必须与标准的光照环境是一致的。
验收标准约束。任何人讨论素材的本身的效果品质的时候,只能参考标准的光照环境。不要在3ds MAX或者是Maya中打开,或者是任何引擎或其它软件中打开。我们要在标准环境中打开,这样讨论才有意义。如果管线不一致,讨论的结果也会有差异。
验证的标准场景包含一个主场景,用于验证:固有色的明暗和色相、不同粗糙度表面的镜面反射情况、以及金属材质的镜面反射情况。
六个辅助场景检验包括:室内外环境光源、暖色调环境下效果、强对比度的明暗光照、典型室外光照下效果或固有色是否太黑的环境。
我们参考装修中的原则,还有各种各样抽象出来的环境,这样能够帮助美术在做各种各样的验证讨论的时候,有一些可以让他们去看到制作问题的场景。
有了验证环境之后要定义好详细规则的白皮书。这是我们的白皮书,包括:输出是什么样子、环境是怎么配置的、还有一些漫反射还有镜面反射率,基本是一些数学原理。
我们可以使用一些黑科技作为素材验证的参考工具,包括:屏幕校色器、照度仪、以及一些标准的色彩,我们通过这些参考去做校验。
我们要测量SH或者光照贴图的环境,以保证色调也是一致的,不至于美术在调各种各样的色彩甚至是光照值都是感性的认识。
我们需要给美术一个非常标准和标量的参考,这个标准能够保证在制作整个PBR的时候有所参考,有所依据。
最后才能呈现得到很好的画面效果。
我们现在谈谈《使命召唤手游》的引擎技术的沉淀。
上面二个部分掺杂一些技术美术以及工程师的一些工作,下面是一些相关的纯技术人员的工作。其实就是颠覆或者说是去拓展整个Unity引擎之路,会作为未来的3A手游的引擎实践的一些标杆。
首先我们需要补齐游戏里面所缺的渲染的东西,例如:头发怎么做、皮肤怎么做、角色怎么做,这些都要尽可能做补齐。
我们可能对于一些包含地形的地图或者是其它技术方案要进行拓展。
地形方面,我们应该是在国内工作室中,使用Unity结合Houdini应用最多的工作室,我们有完整的组合工作流,还有不同地貌的DrawCall合并,还支持Vertex Fetch Texture,所以我们对地形系统进行了深度的改造。
烘焙使用了GPU烘焙。当地形非常复杂的时候,如果使用Enlighten,可能需要整晚的时间。当出现Bug的时候,同一天就会卡十张图,就会出现无限的加班时间。所以迭代时间非常重要。
以前烘焙其实是需要4-6个小时,这是不能接受的。现在我们烘焙复杂度非常高的场景就只需要3-5分钟。
我们使用GPU烘焙可以做更多效果的提升,计算正确性和参数科学性有了更强的依据。甚至我们可以用到一些AI技术对烘焙结果进行降噪和算法上的改造。
我们对烘焙进行深度的定制,也就是结合Houdini做了自动的部署。以前我相信所有美术人员这些光照探针是用手工一个一个去摆的,而且摆的纯属人体劳动力并且不准确。
我们拓展了整体算法,使用程序化自动生成光照探针,让这些迭代更加快速,所有的这些光影可以看到其实是非常密集的,大家也可以做这样的尝试,算法不是特别复杂。
下面是对植被制作。我们现在很多场景都要用到很多的植被,以前生产方式都是美术逐棵逐棵制作,我们现在程序化去生产它们的AO和法线,这样原来二周的工作量等于节省到二天。
这些都是很有意义的,省掉大量的制作成本和人力成本,也省掉很多外包的工作,所以现在无论制作什么,我们要积极地去拥抱整个PCG的技术,使用这些技术去助力我们的整个生产过程。
我们制作了很多的游戏,大家可以看到制作标准和美术规格也是非常高的,如何保证整体制作和引擎和性能能够一体化呢?
我们所有程序和管线的制作都是要后期去进入的。例如:我们用了4张贴图都是零散的贴图,原来做的所有的都是零散的贴图,事后会对它的图进行整理和整合,这样避免一开始就定规范和美术去讨论贴图如何分配。如何去做这种性能的保证,对于美术来说他们根本不敏感或是会出现问题,所以对于技术人员而言需要考虑这一项。
我们会使用一些Texture Streaming之类的技术,保证包括iPhone 6的机型也要兼容。所以整个制作过程都不会打乱美术的工作流,直到后续再做优化。我们会用很多Texture Atalas、Texture Streaming、PBR Shader Lod等一系列的技术,助力我们后续进入优化阶段也能做到性能的动态收缩。
最后一部分其实更加重要,就是在进行任何引擎的改动的时候,需要了解引擎技术的演化。
最近面试了很多候选人,聊了不少行业中的大咖,与不同层次的开发人员进行讨论。我发现大家在做修改的时候,很多时候是没有依据的,或者仅仅是在阅读到某篇文章,突然发现一个技术就去尝试使用。
我们团队非常注重引擎技术的演化,包括最重要的三个方面。
第一个方面是引擎技术的移动端化。
从2017年到现在,所有的客户端PC Game里面的技术在移动端已经可以使用,如果现在不能使用,相信未来2-3年也可以使用。
现在流行使用线性空间的运算、PBR的渲染、做雾和大气的效果、会做渲染标准的一些更新。这些其实在端游就经历过了,但是现在手游里面再次使用,所以现在所有技术的本身都是端游往手游做演化。
我们只是做相对的数学拟合和科学性的一些探索,所以在制作手游移动端化的时候一定要注意端游技术的移动端化。
第二个方面是引擎技术与工具的升级。
引擎版本不断升级。我第一次使用Unity是4.5的版本,现在升级到Unity 2018,Unity 2019版本。引擎的不断升级对底层的改造是比较大的,例如:现在ECS,烘焙方式、以及各方面的技术也在升级。升级引擎的时候,你要想到使用引擎升级什么游戏,哪些最稳定技术的演化。
现在的工具也在不断地发展。近几年使用Substance与Houdini这一系列的美术工作流程在开发团队中越来越普及,所以我们需要使用所有的工具做配合进行游戏的制作。
芯片也在不断发展,会越来越快,基于现在芯片发展趋势可以做的事会越来越高。我们团队现在也在做一些PRT的动态GI的效果,我觉得这些将来都会变成可能。大家在一些高端平台上做这些特性,可以让你的游戏得到加分。
第三个方面业界一些前沿技术的推进,也会让整个手游更迈进一步。
例如RTX光线追踪,基本上现在已经在讨论要不要使用RTX做光线的一些烘焙方案,我们使用过光线追踪的渲染技术,会发现其实它的理想效果会大有增益,可以做很多想不到的东西。
还有过程化制作,我演示了很多过程化制作的方面,有些部分没有在这里讲,但是2018年开始,过程化制作已经深入到我们团队每一个制作过程,例如:植被立型、任务、AI、还有玩法本身都可以参与到过程化制作。
最后一点是Machine Learning,可能有点对国内来说有点前沿。现在整个匹配算法还有后面的AI等方面,我们都会尝试使用Machien Learning做探索,这些所有的技术都会推动我们引擎技术不断演化。
我们今天分享的主要内容就是这些,谢谢大家!
小结
感谢腾讯天美J3工作室技术副总监郭智关于《使命召唤手游》的分享。我们将陆续分享Unite 2019部分技术演讲内容,如果你有哪些大会技术演讲希望深入了解,请后台进行留言。
观看部分Unity官方视频,请关注B站帐户:Unity官方。下载Unity Connect APP,请点击此处。
推荐阅读
官方活动
Unity将举行六一儿童节特别活动-动画工作坊,我们将带领孩子们进入动画制作的世界。欢迎小朋友们报名参加,家长可陪同参与。
活动时间:5月25日 10:00-16:00 (星期六)
报名链接:
https://connect.unity.com/events/animationworkshop
点击“阅读原文”访问Unity Connect