思路方向:如何在移动端实现3A级画面 from《使命召唤手游》技术副总监

原始链接:https://mp.weixin.qq.com/s/Zm3rRXQf6yCoiXJ-wVtJsA

为了查找方便 备份一份 如有需求 请移步原文

5月11日-12日,由Unity举办的全球开发者大会Unite Shanghai 2019在上海召开。期间,来自腾讯天美工作群的技术副总监郭智以《使命召唤手游》为例,分享了其对引擎技术升级与演变的经验与看法,其中包括了建立3A级手游的画面标准、PBR管线量产化策略等多个方面的实践探索。

在这里插入图片描述

以下为演讲内容整理:

早上好,感谢今天大家来到这个会场,这个分享肯定会有很多干货给大家。我先介绍一下自己,2011年入职腾讯,在腾讯天美工作室任职技术副总监、技术专家,负责整个工作室的手游客户端的研发和一些管理工作。我有数十年从业经验,今年刚好是第11年,负责过不同品类的项目的开发,用过一些自研和商业的引擎,做过几款FPS游戏,有比较深厚的积累。

下面是我所参与过的游戏。主要涉及MMORPG、FPS品类,以及各种端手游,涉及的引擎首先是最左边用的是自研引擎,第二款是用的Gamebryo,第三款是Unreal,后面的涉及到Unity 5的一些项目的发,用Unity用得比较多,也做过Unity的整个引擎升级。

在这里插入图片描述

《使命召唤手游》是怎么建立3A手游画面呈现标准的?

2017年大家都知道是手游画面升级的元年,所以今天对于引擎技术来说,我们首先要聊一聊画面。对于整个游戏的画面来说,我先要谈一下整个画面呈现标准的建立。我相信各位以前从来没有听过什么叫做画面标准,说的都是要用哪几张贴图,怎么做,画面标准都是美术师去定的。《使命召唤手游》目标是打造3A手游画面呈现标准,所以必然要探索普PBR时代画面呈现的最佳实践与升级。

对于整个IP产品来说,首先是要定义制作的主基调。在一开始《使命召唤手游》立项的时候,我们为了性能其实经历过一整段时间的纠结,我们曾经纠结要不能使用Phong的模型,要不要使用最经典的手绘模式。

去年我们对《使命召唤手游》的游戏画面做了重大的翻新,使用PBR去复刻整个主机的画面效果。能达到主机的品质,这个游戏才能上线。我们需要挑战的是达到整个主机画面的丰富度和还原度,去满足整个IP高端用户的主机情怀。

在这里插入图片描述

既然我们要做PBR,我们首先要做的第一个事就是需要统一制作管线和技术管线。对于制作管线来说,美术需要的所有的贴图资源都需要在线性空间进行计算,无论你用任何工具去制作任何贴图,都需要是线性的。

对于技术管线来说,需要为引擎定义统一的渲染管线,也就是说我们的渲染管线是通过技术做Scalable的HD渲染管线,对于高配进行HDR的RT输入,对于低配来说为了节省性能不能做任何的后处理,就使用OnePassHDR的管线,使用Tonemapping在最终的shader做相应的数学拟合,来拟合我们的目标曲线。

在这里插入图片描述

整个的制作管线和技术管线建立之后,我们再说画面标准的建立。对于画面呈现来说,我们需要一致的画面标准,比如这个角色,每个像素我们都要定义得非常标准,其实在国际标准上,任何的3A游戏里面都会这么定义,要定义Material Model、Lighting Model和Shader 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,直接光不会烘焙进lightmap,直接光用纯动态的光照,间接光用的是IBL Cubbmap+GPU bake的lightmap。

再来看material,固有色、一张法线+粗糙度合并的贴图,金属度+AO放在另外一张贴图。材质接受了lightprobe的间接光照和一个直接光,还有来源于environment的间接光,最后得到我们整体的呈现,这就是我们的material model 和lighting model。

在这里插入图片描述

3A级手游制作管线——PBR管线量产化之路

定好这些标准之后,整个团队每个人对于所有场景就基本确定了。确定这些东西之后我们要讨论的是制作本身,对于《使命召唤手游》这样一个3A级手游里面的一些制作管线,我相信可能对于程序员或者是一些开发者来说,其实不怎么在意怎么制作管线,但是由于2017年之后大家知道TA其实比较吃香,还有我认为所有的技术人员都要了解美术的工作甚至要了解所有策划的一些工作,这样才能把这个游戏制做好,所以我们来聊一聊对于3A级手游里面的制作管线是什么样子的。

决定制作管线的三个核心要素:

第一个是量产。所有的游戏现在需要最慢也要3年出来,但是往往我们没有那么多钱或者是那么多的时间,所以我们需要做大量的外包,所以量产是首要因素。量产能保证我们所有的外包,所有的人员,所有的开发,所有的美术标准都统一,才能达到量产。

第二个是引擎。所以现在对于任何引擎来说,我们都觉得要做成自己认为一两年后所看到的最好样子。

最后一个方面是性能。无论是主机平台还是PC平台到现在的手机平台都是非常重要的,不可能让玩家玩得很卡顿,肯定要有最流畅的体验。这三个因素决定了我们整个制作管线。

对于制作管线来说,我觉得使用流程与工具去保证美术素材的正确性与合理性,原则有两个:

第一是美术素材输入一切都符合PBR标准的,也就是说你不能画各种阴影,你的色彩,你的明暗不能大于我们所认为推荐的值范围。

第二是我们需要统一所有的生产规格和生产环境,这一切达到之后才能量产化。达到统一规格之后你的画面才是统一的,才是你们认为能够把握的样子。

在这里插入图片描述

其实PBR的初衷在欧美那边提出来的,它的初衷其实不是为了效果,而是为了量产。量产的策略其实有几个:一个是验证,我们能尽可能地验证,一个是文档,我们需要有各种各样的白皮书,各种各样的地方去阐述我们的思路,最后一个是科学性,PBR诞生本身是工业化的产物,不是美术或者是艺术的产物,所以当你一味强调各种各样的hack强调美术不同的制作方式,强调每个TA做各种各样的画面的雕琢之后就不可能再科学,这个游戏就不可能可控,你的这个团队就会很失控,就不可能把这个游戏做出来,所以也不可能有量产,所以如果要做PBR就一定要遵循这三个原则。

在这里插入图片描述

先说一下整个的验证。我们其实需要在sp里面提供一系列的光照环境给美术做验证,因为所有现在做PBR生产以前都是在Photoshop里面做的,但是在里面做的任何贴图都可能是错的的,都可能让美术制作失控,所以我们整个场景制作要符合三大要点,一个是图形技术的保证,在同样的一个PBR的光照环境,有95%以上是一致的,怎么保证一致?大家看sp里面的再看Unity的渲染管线就可以保证一致。

另外一个是制作环境约束,美术制作者使用的渲染环境必须与标准的光照环境是一致的,再下来是验收标准的约束,任何人讨论素材的本身的效果品质的时候,只能参考标准的光照环境,你不要在max或者是MAYA里面打开,或者是任何引擎或者是其他里面打开,我们就要在标准环境里面打开,这样讨论才有意义,要不然管线不一致,讨论的结果也会有差异。

在这里插入图片描述

刚才说验证的标准场景其实包含一个主场景,用于验证固有色的明暗色相,不同粗糙度表面的镜面反射情况还有金属材质的镜面反射情况。六个辅助场景检验包括室内外环境光源,暖色調环境下效果,强对比度的明暗光照还有典型室外光照下效果或固有色是否太黑的环境。我是参考装修里面的原则还有各种各样抽象出来的环境,这样能帮助美术师在做各种各样的验证讨论的时候有一些可以让他们去看到制作问题的场景。

在这里插入图片描述

有验证环境之后要定义好详细规则的白皮书,这里面是我们里面的白皮书,比如说输出是什么样子,环境是怎么配置的,还有一些漫反射还有镜面反射率是什么样子的,基本是一些数学原理。

在这里插入图片描述

同时会有一些“黑科技”作为素材验证的参考工具,包括了屏幕校色器还有照度仪,包括一些标准的色彩,通过这些去做校验。同时也出去测量SH或者lightmap环境,以保证你在房间色调也是一致的,不至于美术在调各种各样的色彩甚至是光照值都是感性的认识,我们需要给他们一个非常标准和标量的参考。

在这里插入图片描述

在这里插入图片描述

以上其实这些标准就是能保证我们在制作整个PBR的时候有所参考,有所依据。最后才能呈现得到现在这样的很好的画面效果。

在这里插入图片描述

拓展Unity功能,《使命召唤手游》的引擎技术沉淀

说完这些说一下《使命召唤手游》的引擎技术的沉淀,上面两个部分掺杂一些TA和美术以及工程师的一些工作,下面就是一些相关的纯技术人员的工作。其实就是颠覆或者说是去拓展整个Unity引擎之路,会作为未来的3A手游的引擎实践的一些标杆。

首先我们需要做的是补齐游戏里面所缺的渲染的东西,比如说头发怎么做,皮肤怎么做,角色怎么做,这些都要尽可能做补齐。我们可能对于一些包含地形的地图或者是其他技术方案要做拓展,比如说地形里面我认为我们其实应该是在国内工作室中Unity结合houdini应用最多工作室,我们有这个组合的工作流,还有不同地貌的Drawcall合并,还支持Vertex fetch texture,当我们使用地形的时候,我认为是现在手游最佳的地形方案,所以我们对地形系统做了深度的改造。

在这里插入图片描述

在这里插入图片描述

再接下来其实是我们的烘焙,烘焙使用了GPU烘焙,当你的地形非常复杂的时候如果用Enlighten就等着通宵吧。现在我们烘焙复杂度非常高的场景就只需要3-5分钟,以前烘焙其实是需要4-6个小时,这是不能接受的。当你出现bug的时候发现同一天就要卡十张图,就会出现无限的加班时间,这个迭代时间非常重要。再接下来用GPU烘焙可以做更多的效果的提升,计算正确性和参数科学性有了更强的依据。甚至于可用到一些AI技术对烘焙结果做一些降噪和算法上的改造,所以我们这边用了整套GPU的烘焙方案。

在这里插入图片描述

接下来其实是我们对烘焙做了深度的定制,也就是说结合houdini做了自动的部署,以前我相信所有美术人员这些LightProbe是用手工一个一个去摆的,而且摆的纯属人体劳动力并且不准确,所以我们拓展了我们的整体算法,然后使用程序化自动生成LightProbe,让这些迭代更加快速,所有的这些光影可以看到其实是非常密集的,我相信各位如果要做这种游戏的时候也可以做这样的尝试,算法不是特别复杂。

在这里插入图片描述

接下来对植被制作,原来完全是用美术做制作的,我们现在很多场景都要用到很多的植被,以前我们的生产方式其实都是美术逐棵逐棵地做,我们现在程序化去生产他的AO和法线,这样原来2周的工作量等于节省到2天。这些都是很有意义的,省掉大量的制作成本和人力成本,也省掉很多外包的工作,所以现在无论制作什么,我们都要积极地去拥抱整个PCG的技术,用这些技术去助力我们的整个生产过程。

在这里插入图片描述

最后,我们生产了很多很多的游戏,大家可以看到制作标准和美术规格也是非常高的,我们如何保证整体制作和引擎和性能能够保证一体化?我们所有程序和管线的制作都是要后期去进入的。比如我们用了4张贴图都是零散的贴图,我们肯定要有自己的一些技术,美术原来做的所有的都是零散的贴图,事后会对它的图进行整理和整合,这样避免一开始就定规范和美术去讨论我的贴图如何分配,我如何去做这种性能的保证,对于美术人员来说他们根本不敏感或者是会出现问题,所以对于技术人员本身来说需要包括这一项技能。

然后我们会用一些Texture Streaming之类的技术保证包括iPhone 6的机型也要做兼容。所以整个的制作过程都不会打乱美术的工作流,直到后续再做优化,我们会用很多比如说Texture Aalas,Texture Streaming,PbrShader的Shader lod等一系列的技术去助力我们后续进入优化阶段也能做到性能的动态收缩。

在这里插入图片描述

引擎技术演化的三个重要方面

最后一部分其实会更加重要,就是在做任何引擎的改动的时候,需要了解我们引擎技术的演化。其实最近面试了很多候选人,聊了很多行业里面的大咖,对不同层次的开发人员做讨论。大家在做任何修改的时候,我觉得很多时候是没有依据的,或者是在翻博客时突然发现一个技术我就用。在我们的技术里面。对我们团队来说非常注重引擎技术的演化,包括最重要的三个方面:

第一就是引擎技术的移动端化。可以认为从2017年到现在,其实所有的客户端PC Game里面的技术在移动端已经可以使用,如果现在不能使用,我相信未来两三年也可以使用,比如现在流行使用线性空间的运算,做PBR的渲染,做雾和大气的效果,会做渲染标准的一些更新,这一些其实在端游我记得在8年前就做过了,但是现在手游里面再次使用,所以现在所有技术的本身都是端游往手游做演化,我们只是做相对的数学拟合和科学性的一些探索。所以大家做手游移动端化的时候一定要注意端游技术的移动端化。

在这里插入图片描述

第二是引擎技术与工具的升级。引擎版本不断升级,其实我在第一次使用Unity的时候是4.5的版本,现在这个游戏基本上可升到5.多版本,现在也在升级2018、2019版本,这些引擎的不断升级对底层的改造其实是比较大的,比如现在Unity ECS,各方面的烘焙方式的先进还有各方面的技术也在做升级,所以你要升级引擎的时候你要想到用引擎升级的哪一个游戏,你做一些你自己最稳定的技术的演化。

现在的工具也在不断地发展。近几年其实用Substance与Houdini,之后这一系列的美术工作在团队里面普及越来越明显,所以我们需要使用所有的工具做配合进行游戏的制作。

这里提一下芯片的发展,芯片发展会更加快,可以认为现在芯片可以达到了五六年前渲染的一些量级,只是功耗没有跟上来而已,所以我们基于现在芯片发展趋势可以做的事会越来越高,我们团队其实现在也在做一些PRT的动态GI的效果,我觉得这些将来都会变成可能。大家在一些高端平台上做这些特性,可以让你的游戏得到加分。

第三是现在业界一些前沿技术的推进。也会让你整个手游更迈进一步,比如说RTX光线追踪,基本上现在已经在讨论要不要用RTX做光线的一些烘焙方案,我们自己用过光线追踪的渲染技术,会发现其实它的理想效果会大有增益,可以做很多的你想不到的东西。

关于加上过程化制作,我前面其实演示了很多过程化制作的方面,有些部分没有在这里讲,但是2018年开始,过程化制作已经深入到我们每一个制作过程比如说植被立型、任务、AI还有玩法本身都可以参与到过程化制作。

再加上最后一点对国内来说可能有点前沿,就是Machine Learning,现在整个匹配算法还有后面的AI是各方面,其实我们都会尝试使用Machien Learning做探索,这些所有的技术都会推动我们引擎技术不断演化。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值