人气 371

[综合技术] 腾讯郭智:从技术角度打造3A级高品质《使命召唤手游》 [复制链接]

cgsd 2019-12-15 22:28:52

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
近期由腾讯联合动视推出的大型多人在线射击手游《使命召唤手游》开启预约,短短几天,预约人数已破两百万。

就在5月12日Unity主办的Unite Shanghai 2019开发者大会上,腾讯天美工作室技术副总监郭智先生以《使命召唤手游,引擎技术升级与演化》为主题分享了《使命召唤手游》在技术方面的开发历程和经验。

以下是演讲实录:

123659og3gsw38wc58w9ns.jpg

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

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

123700rrh1gg2mfpri5ehj.jpg

挑战主机画面,《使命召唤手游》如何建立3A手游画面标准?

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

123700xccmb9sa6ecseyo6.jpg

对于整个IP产品来说,首先是要定义制作的主基调。在一开始COD立项的时候,我们为了性能经历过一整段时间的纠结,我们曾经纠结要不能使用Phong的模型,要不要使用最经典的手绘模式。去年我们对COD的游戏画面做了重大的翻新,使用PBR去复刻整个主机的画面效果。能达到主机的品质,这个游戏才能上线。我们需要挑战的是达到整个主机画面的丰富度和还原度,去满足整个IP高端用户的主机情怀。

123701msw9si4g67g6s6ll.jpg

既然我们要做PBR,我们首先要做的第一个事就是需要统一制作管线和技术管线。对于制作管线来说,美术需要的所有的贴图资源都需要在线性空间进行计算,无论你用任何工具去制作任何贴图,都需要是线性的。对于技术管线来说,需要为引擎定义统一的渲染管线,也就是说我们的渲染管线是通过技术做Scalable的HD渲染管线,对于高配进行HDR的RT输入,对于低配来说为了节省性能不能做任何的后处理,就使用OnePassHDR的管线,使用Tonemapping在最终的shader做相应的数学拟合,来拟合我们的目标曲线。

123701cfahzyw966hqynhy.jpg

整个的制作管线和技术管线建立之后,我们再说画面标准的建立。对于画面呈现来说,我们需要一致的画面标准,比如这个角色,每个像素我们都要定义得非常标准,在国际标准上,任何的3A游戏里面都会这么定义,要定义Material Model,Lighting Model,Shading Model。

标准建立了,就可以用同样的语言说话,如果没有这个标准,美术同学会说我要这样贴图,这里面画点光上去,要做一些阴影的效果。

统一标准之后,在团队里面,每个场合里面就不会再有分歧和异义,讨论起来非常简单。这些标准都是具有物理意义的参数和基于真实物理的定律,也就是遵循PBR的。

还有一点是全场景物理一致的光照环境,也就是说我们要使用动态的光影+PBR+IBL。

123702mbb7cx0kzob7oubp.jpg

接下来介绍这三个方面,materiallightingshader,在COD手游里面到底是什么样的。

先看一下shading Model是什么。我们构建了完整的手机平台的PBR光照方案,用分级对PBR进行近似,我们提出4级的PBR的数学拟合,最高级肯定是给现在的835这些系列的高端的GPU去用的,3级就是在520这种机器,2级给更低端的机器,最后一级为那种兼容型是有问题的机器去使用,解决所有的兼容型的问题。而人物在高中低配都使用最完整的PBR方案,也就是说不会做Shader LOD的切换。直接光用了GGX specular+lambert diffuse,间接光用cubemamp做GI Specular,用SH probe做GI diffuse。

123702xq748yevqvz008qv.jpg

对于建筑来是,出于性能的考虑,低端会简化一些光照的部分,就是刚才说的Shader LOD。直接光会在远景用shadowmask,直接光不会烘焙进lightmap,直接光用纯动态的光照,间接光用的是IBLcubbmap+GPU bake的lightmap。

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

123703mh3bnrczbhcn3bge.jpg

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

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

123703rn50ckn586nznmpd.jpg

我们看看制作里面的核心因素:

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

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

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

123704coo4mhmdz9drjsof.jpg

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

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

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

123704i73k37y49jyx2mcy.jpg

PBR的初衷在欧美那边提出来的,它的初衷不是为了效果,而是为了量产。

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

123705g6dlkz3l6azcki6o.jpg

先说一下整个的验证。我们需要在sp里面提供一系列的光照环境给美术做验证,因为所有现在做PBR生产以前都是在photoshop里面做的,但是在里面做的任何贴图都可能是错的的,都可能让美术制作失控,所以我们整个场景制作要符合三大要点:一个是图形技术的保证,在同样的一个PBR的光照环境,有95%以上是一致的,怎么保证一致?大家看sp里面的再看Unity的渲染管线就可以保证一致;另外一个是制作环境约束,美术制作者使用的渲染环境必须与标准的光照环境是一致的;再下来是验收标准的约束,任何人讨论素材的本身的效果品质的时候,只能参考标准的光照环境,你不要在max或者是MAYA里面打开,或者是任何引擎或者是其他里面打开,我们就要在标准环境里面打开,这样讨论才有意义,要不然管线不一致,讨论的结果也会有差异。

123705yzmk4miw7ududw5f.jpg

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

123706gh7wpcrww7ohnhrm.jpg

有验证环境之后要定义好详细规则的白皮书,这里面是我们里面的白皮书,比如说输出是什么样子,环境是怎么配置的,还有一些漫反射还有镜面反射率是什么样子的,基本是一些数学原理。同时会有一些黑科技作为素材验证的参考工具,包括了屏幕校色器还有照度仪,包括一些标准的色彩,通过这些去做校验。同时也出去测量SH或者lightmap环境,以保证你在房间色调也是一致的,不至于美术在调各种各样的色彩甚至是光照值都是感性的认识,我们需要给他们一个非常标准和标量的参考。

123706qz5sp84ypzyczqm5.jpg

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

123707fpltxktlehttnttt.jpg

123707f449948mmh44ae4d.jpg

123708d646pnokk2944pxn.jpg

颠覆与拓展,《使命召唤手游》或成3A手游引擎技术标杆

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

123708wqryrkpcr1z51pcy.jpg

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

123709klmklwh4dm2twdlt.jpg

123709czbuzb41wz22955u.jpg

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

123710oprt2ah0rhitw4ki.jpg

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

123710kc1i7d4dkca4yh0r.jpg

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

123711fz5q7sr1c335pemr.jpg

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

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

123711x297322j47j5yyt3.jpg

最后一部分会更加重要,就是在做任何引擎的改动的时候,需要了解引擎技术的演化

最近面试了很多候选人,聊了很多行业里面的大咖,对不同层次的开发人员做讨论。大家在做任何修改的时候,我觉得很多时候是没有依据的,或者是在翻博客时突然发现一个技术我就用。

在我们的技术里面。对我们团队来说非常注重引擎技术的演化,包括最重要的三个方面:

一个方面是引擎技术的移动端化。

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

123712rzq6fzx96k1ny05e.jpg

再下来引擎技术与工具的升级,引擎版本不断升级

我在第一次使用Unity的时候是4.5的版本,现在这个游戏基本上可升到五点几,现在也在升级2018年,2019,这些引擎的不断升级对底层的改造比较大,比如现在Unity ECS,各方面的烘焙方式的先进还有各方面的技术也在做升级,所以你要升级引擎的时候你要想到用引擎升级的哪一个游戏,你做一些你自己最稳定的技术的演化,再加上现在的工具也在不断地发展。近几年用Substance与Houdini,之后这一系列的美术工作在团队里面普及越来越明显,所以我们需要使用所有的工具做配合进行游戏的制作。

最后就是芯片的发展

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

大家在一些高端平台上做这些特性,可以让你的游戏得到加分。再加上现在业界一些前沿技术的推进,也会让你整个手游更迈进一步,比如说RTX光线追踪,基本上现在已经在讨论要不要用RTX做光线的一些烘焙方案,我们自己用过光线追踪的渲染技术,会发现它的理想效果会大有增益,可以做很多的你想不到的东西。再加上过程化制作,我前面演示了很多过程化制作的方面,有些部分没有在这里讲,但是2018年开始,过程化制作已经深入到我们每一个制作过程比如说植被立型、任务、AI还有玩法本身都可以参与到过程化制作。

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

今天讲的就这么多,谢谢大家。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-3-29 17:39 , Processed in 0.109748 second(s), 27 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.