网易自研引擎首席专家:每半年一次系统重构,这8年我们是怎么过的?
网易自研引擎Messiah的研发即将走进第九个年头。 |
自研引擎或许是国内游戏研发的一大技术痛点。
一方面因为目前市面上已经有几款相对成熟且优质的商用引擎,大多游戏厂商并不会在这「吃力又不讨好」的领域深究;另一方,自研引擎需要的技术力门槛相当高,并非投入大量资金就能立刻实现。
那么,网易作为较早开始研究自研引擎的游戏厂商,对于行业这一技术痛点有哪些不同的看法?他们自研引擎的技术又达到了何种水平?
本篇文章便邀请到网易Messiah自研引擎领衔者&网易互娱首席游戏软件设计专家赵钰琨,围绕着网易自研引擎Messiah相关情况简单聊了聊。
2020年,网易自研引擎Messiah推出
世界游戏业领先的全平台动态全局光方案,
并已获得专利
以下是经过整理的采访内容:
01
为什么要坚持自研引擎
坚持要做自研,这种想法是因什么契机产生?
赵钰琨:我最早在学习编程的时候其实有这样的一个感觉,前面有很多非常聪明的、非常伟大的计算机科学家,他们发明了各种算法、写出了各种很牛的软件。
刚开始学习做离线渲染的时候,我接触到了比如Ed Catmull发明的Stochastic Sampling算法,以及他在Pixar研发的PhotoRealistic RenderMan这个渲染器,他们写得非常棒。
当时我问了自己一个问题:大家都是人,为什么别人能写出来我们写不出来?我很强烈地觉得不服气,既然人家可以做得那么好,我们也是可以写出(优秀的软件)来的。所以我整个大学阶段都在做一件事,就是尝试写一个能和RenderMan一较高下的离线渲染器。
RenderMan渲染效果图 | 图片来源:网络
后来我到了网易游戏,我开始接触游戏引擎。在立项做这个自研引擎的时候,我们的想法就是,人家3A游戏能做到跨平台的、全平台的、顶级的引擎,我们也都可以做到;人家能够做到实时的、全局光实时的动态全局光,我们也都能做到;而且我们要做得更好、在更短的时间内做得比他们好。
简单来说就是有点“不认输”。
赵钰琨:对,是这个意思没有错。我自己实际上也是一直在贯彻这个观点,去推动网易的技术发展。在这个开发的过程里面我觉得比较有意思的是,我们不断地去挑战,不断地去努力,希望可以和那些已经站在顶尖的人们站在一起。
我们从用一个非常简陋的demo在饭桌上用iPad mini 2给丁老板演示、直到现在能够支持上十数款产品在研发运营、乃至有《暗黑破坏神:不朽》这样的世界顶级的、史诗级的项目采用的自研引擎,我一直贯彻Messiah每一行代码都是我们自己写出来的,每一个功能都是我们亲手制作研发打磨出来的。我们的这种不服气、不认输贯穿了整个研发过程的始终。
我希望同学们能加入到我们这样的一个企业,在这样的一种研发氛围里面,也能做出自己的东西,通过自己的能力去敢挑战世界顶尖水平。世界顶尖不是说要挂在嘴巴上,而是要做出来。
就网易自身而言,包括我们之前的《一梦江湖》《荒野行动》《王牌竞速》,以及现在已经即将全球上线的《暗黑破坏神:不朽》,都已经能够和世界顶尖的产品站在一起,依靠的也是我们自己一个字符一个字符敲出来的代码。
大概在2017年开始,我们陆陆续续有非常多的机会和各种世界顶尖研发团队进行交流,甚至还有机会和业界传奇游戏历史销量前三制作人、第一个提出Deferred Shading的大牛、第一个提出Cascade Shadow Map的大牛这样站在游戏世界之巅的人进行对话,我自己感触良多。
跟他们交流,给他们看到我们的技术,获得他们的尊重、认可和赞许,他们还主动邀请我们进行更多更深入的沟通,甚至还有顶尖国外的制作人三番四次地想获得使用我们引擎的授权来进行新游戏的研发,我深切地感受到我们的技术真的开始摸到了世界顶尖水平。
新时代的3D手游引擎Messiah,
带来《一梦江湖》丰富而自由的捏脸3.0时代
02
“如果自己不革自己的命,
别人就会来革你的命”
听说Messiah每半年就要做一次大的系统重构,其中会涉及到不小的工作量吧?
赵钰琨:自2014年以来,至今Messiah经历了8年的持续研发迭代,成为一个横跨移动、桌面、主机的全平台次世代游戏引擎,至2022年完成了8款大型产品的研发工作。目前正在研发的产品达数十款,涵盖MMO、FPS、TPS、ARPG、赛车、体育竞技等多个游戏品类,引擎支持iOS、macOS、安卓、PC、Linux、PS4/PS5、Switch、XBox等几乎所有的游戏平台。
架构与效率一直贯穿于整个引擎开发工作,我们相信良好的架构能提供足够高的执行效率以及良好的扩展伸缩性。我们深信——“如果自己不革自己的命,别人就会来革你的命”,所以我们一直贯彻一个开发规则,每半年左右必须全面更新一个大型子系统框架,架构是引擎发展的命根子。
那这几年里,Messiah大概都经历过哪些迭代变化呢?
赵钰琨:大概2007年,在我最早刚刚开始构思和设计Messiah雏形的时候,PC业界正开始面对摩尔定律的“失效”,即芯片频率的提升遇到瓶颈,Intel开始向多核心CPU发展,在超线程技术加持下并行计算日益提上议程。
我在刚刚加入网易的时候有幸参与了当时的一个XBox 360开发课程,其中一个很有趣的点就是360的CPU在安排计算指令的时候需要“凑”一对儿一对儿的指令,以加大并行度,否则单条计算指令会降低PowerPC芯片的效率。这个是我之前没接触过的领域,让我大开眼界,也给了我灵感。
后来我看到x86平台也开始有这样的趋势,我深刻的感受到多核心计算一定是未来的重中之重,于是我理想中的游戏引擎的样子,应该是一个天生并行的架构,应该是一个像现实世界一样多线程的架构,而不是「传统游戏引擎——顺序逐一更新计算」的架构。
为什么是多线程?
赵钰琨:Messiah刚研发的时候是2013年左右,当时是移动游戏刚刚开始爆红的时候,所有人都开始关注移动游戏,所以大家都觉得要针对当时的移动芯片进行开发,要根据当时的移动平台来设计。
但是我断定移动平台必将走过PC平台的每一步,将会复刻PC平台的发展,包括CPU和GPU,他们将在很短的时间内变得一模一样。所以我坚持Messiah的移动平台版本也需要做多线程,多核心优化。
在我们多线程刚出来的时候,不少人嘲讽,说我们不懂移动平台,说Messiah的多线程架构一定会死得很难看。后来恰恰相反,更短时间内更高效率的计算、以及多核心分摊计算成本反而能降低核心频率从而降低功耗,Messiah在移动平台上出色的效率及功耗控制赢得了很多项目的良好口碑。
《一梦江湖》:网易Messiah引擎大胆尝试
只在主机与PC端游用到的渲染技术
在2017年我们成功推出了《天下手游》和《楚留香》(后更名为《一梦江湖》)以后,Messiah的架构迭代并没有停止,我认为我们需要更进一步的推动架构发展,需要为5年甚至10年以后的产品打基础做准备,于是我们又进一步的重构了整个多线程体系。
2018年我们在支持了《荒野行动》这种可以做到无限大世界的游戏架构以后,重构了整个渲染管线,引入了Frame Graph系统——比Unreal引入这套系统提早了两年。
2020年我们又再次大规模重构了多线程渲染系统,在PC上效率提高了10倍;2021年我们推出了Frame Graph 2.0;2022年我们迭代了多线程架构专门优化了大小核心调度等等。
团队内部怎么看待这样的架构迭代?
赵钰琨:其实刚刚有提到,我期待的工作状态,绝不是一个自己认为“还可以”的状态,当然,这也是很多做技术的同学都天然会有的追求。
如果你选择程序员作为你的终身职业,然后进入到这个行业,以及进入到网易这样的一家以自主研发为主的公司,我认为每一个同学更需要关注自己的一些能力,比如说学习能力。
学习是非常重要的,它会贯穿你的整个职业生涯。我们不只是需要学习像学校里面的一些理论知识,更重要的是要学习怎么样去做一个产品,怎么样去让一项技术落地,然后怎么样去接触新的东西,因为技术本身就是不断在更新和迭代的。然后去把这些技术运用到我们的产品上面去产生具体的价值,然后让所有人去享受到、玩到这些技术。
同时在研发Messiah的过程里,我体会到最大的感悟并不是单纯的技术,而是研发引擎这个过程,最重要的,并不是仅仅产出一个产品、一堆代码,最重要的是这个研发过程培养了一个团队、一系列技术专家、沉淀下来了一个良好的技术研发环境氛围。
随着引擎研发成长的人,是网易游戏引擎团队中最大的硕果,人比代码重要、比产品重要,有人才有这些可能性,代码自己不会成长,人会;代码不会自己变强,人会;代码不会自己进化,人只要给与足够的空间和机遇,给养分,给时间,给试错的机会,给动力,给回报,成长的空间是没有止境的。
我们研发引擎一开始的初衷是为了解决技术短缺,后来逐步的变成解决人才短缺,再后来变成了我们培养了一个正向循环,一方面引擎的研发环境促进人成长、变强,另一方面人才变强了又促进迭代原有的引擎技术,让引擎变得更先进。
所以团队内部能达成这个迭代的共识,是因为大家都明白迭代是引擎的成长过程,也是自己的成长过程。
03
做真正made in China
的中国游戏
你自己会怎么定位Messiah这款引擎?
赵钰琨:可以说,Messiah是网易在技术突破上第一次野心勃勃的巨大尝试,也是国内软件研发历史上一个巨大复杂软件成功研发的里程碑。
游戏引擎的复杂度、耦合度、广度、深度,都决定了它是除了操作系统以外,其中一种最复杂的软件。其对执行效率有极端苛刻的要求,对前沿技术的落地注重、对产品直接支持面向用户、同时也承接整个产业的工业化,同时面对用户和生产者,既要运行时效率非凡也要生产时易用耐用。既要达到宣传片里的顶级画面、也要在伸缩性上考虑极广泛的用户设备宽度。我认为这是极其苛刻的研发指标,仅亚于带图形用户界面的操作系统。
这是第一次网易从零开始规划一个面向十年甚至二十年后的引擎。在规划的时候就提出需要从最底层开始解决根本性技术难题,并且贯彻始终,一直没有偏差的执行研发战略的引擎研发项目。
我们在第一行代码写下来的时候就坚持跨平台、原生多线程、并发执行、支持尽可能多的图形API和操作系统、向主机看齐向移动兼容,务求一次研发所有平台都能跑起来一模一样。
这种理念现在看起来是理所当然,而我最早构思Messiah的时候是2007年,成立项目的时候是2014年,当时这是大逆不道的破天荒的想法。很幸运我们坚持并一路走下来了,而且能做得到。
今年是2022年,8年过去了这个规划看起来还刚刚能满足目前的需求,证明我们8年前的想象力也仅仅足够支撑至今,所以接下来我们需要更大胆、更具有想象力的规划,去憧憬下一个8年后的未来。
同时Messiah也是一个非常极端的敏捷软件开发的产物,在研发的同时就开始供应给在研项目,相互促进。
我们坚持精兵简政策略,坚持只采用极少量的顶尖研发人员、进行极高的迭代效率、以及非常迅速的响应,在很短的时间内支持了大量项目的开发、上线、运营。
在你看来,Messiah和市面上的商业引擎最大的区别体现在哪里呢?
赵钰琨:我们和商业引擎是有非常大的不同。
首要的便是,自研引擎专注对内,所以我们很偏执地追求执行效率,只有执行效率和能耗指标远高于商业引擎,才能抵御体量庞大的商业引擎。俗话说船小好掉头,我们在采纳新的技术架构上、以及适应新的硬件上,响应速度远超商业引擎。
在一些核心问题的修改上,我们的决策速度也远比商业引擎快、准、狠,所以Messiah最大的特点是,执行快、响应快、变化快。
当然,虽然Messiah研发即将走进第九个年头,已经从一个简陋的demo飞速成长为有能力支撑世界级品质、全平台发行的大型游戏开发的成熟自研引擎,但我们也承认,Messiah至今依然有大量的不足,我们每天仍然面对很多反馈、很多珍贵的制作需求。
我们团队中的每一个成员都正在努力改进,努力进步,希望有一天,属于我们自己的引擎能够矗立在世界游戏技术之巅,大家能用上世界最顶尖的技术——我们自己开发出来的技术。
本文转载自公众号 网易游戏互娱校园招聘 。