8年时间,29款产品,揭秘网易自研引擎的背后故事

竞核

竞核

· 2022.05.18

早前笔者在《75页游戏引擎研报:3A较难推动国产inhouse引擎,东西方路径差异明显》提出,有两大要素影响国内游戏厂商做引擎:技术壁垒、投产比。

展开来讲,技术壁垒有赖于长期优化算法及投入的人才规模。这些取决于厂商的入局时间及投入决心。世界上首款游戏引擎诞生于1991年,彼时由《德军总部3D》研发商ID Software推出 Wolfenstein 3D游戏引擎。

它让游戏引擎成功走向舞台中央。与之相比,国内游戏厂商布局自研游戏稍晚。以网易游戏为例,公司旗下两款自研引擎NeoX、Messiah,立项时间分别是2007年、2014年。

虽迟但到,且日益精进。笔者认为,这是对网易游戏自研游戏引擎最好的注解。像自研引擎Messiah经过八年时间持续研发,已成为横跨移动、PC、主机的全平台次世代游戏引擎。

截止2021年7月,已支持9款产品研发。目前在研项目高达20款,品类涵盖MMO、FPS、TPS、ARPG、赛车等,代表性产品如《暗黑破坏神:不朽》等。据悉,Messiah先后拿下了20多项独创专利技术,极大地提升了游戏研发效率。

在网易互娱首席游戏软件设计专家、Messiah引擎领衔者琨少看来,Messiah是网易在技术突破上第一次野心勃勃的巨大尝试,也是国内软件研发历史上一个巨大复杂软件成功研发的里程碑。

如今使用Messiah引擎开发的游戏如《荒野行动》《一梦江湖》等产品,早已送达至国内外玩家手中。通常情况下,项目组技术选型挑选inhouse游戏引擎还是商业化引擎,除却需考量技术外,也需要考量投产比。

对此琨少解释道,Messiah引擎偏执地追求执行效率,只有执行效率和能耗指标远高于商业引擎,才能抵御体量庞大的商业引擎。

在本文中,琨少详细介绍了Messiah引擎并行架构设计的初衷,及研发心路历程。此外,他还阐述了游戏引擎之于科技竞争的意义。以下是以下是网易互娱采访大师HOHO与琨少对话全文,请大家enjoy:

不能被卡脖子

您有看到过最近讨论度还挺高的“游戏引擎或将成为‘下一个时代全世界最重要的底层工具之一’、‘大国科技竞争另外一个关键技术’”的说法吗?

琨少:有看过,里面的一些说法挺切合实际。从我自身的经历和经验来看,游戏引擎不单只是代表了我们单纯做游戏产品的工业化实力,更重要的是,游戏工业是整个影视工业和互联网服务业结合的结晶,影视工业代表了离线计算的品质,互联网服务代表了即时计算,要在实时的苛刻条件下提供无限接近于影视高质量的视觉听觉综合体验、还是交互式的,这样对技术的要求是非常高标准的。能创造和研发出游戏引擎,代表着研发综合实力的强横,也同时意味着有巨大的技术沉淀。

往近说工业化4.0有很多需要实时模拟仿真进行虚拟化深度学习的游戏引擎运用场合,比如自动驾驶技术用虚拟世界进行学习,可以在游戏引擎中同时模拟上百万量车的自动驾驶状况,而AI在这个情境下进行学习效率更高,还不需要真实的汽车和道路。往远处说,扎克伯格曾经推崇一本科幻小说《安德的游戏》,内容讲的是未来人类用游戏训练青少年控制和外星人战斗的飞船,最终打败虫族的故事,虽然听起来很中二,但未来用AI或者游戏模拟进行战斗及国防研发的可能性巨大。而游戏引擎的研发提供的这种基础工业的可能性和预先的技术储备,是必不可少的。

所以围绕着游戏引擎研发所需要的图形、物理、网络、AI、软件硬件等一切技术,以及这些技术能无缝相容在一个框架内进行合作、融为一体,这种技术沉淀对未来科技竞争是非常关键的。

这些技术是核心,是命脉,不能寄望于别人、不能买、不能借、不能依托于开源或者授权,更不能被别人卡脖子,要牢牢掌握在我们自己的手里,要能彻底地为我们自己所用,以发挥这些技术最大的威力。

坚持要做自研,这种想法是因为什么契机产生的呢?

琨少:我最早在学习编程的时候其实有这样的一个感觉,前面有很多非常聪明的、非常伟大的计算机科学家,他们发明了各种算法、写出了各种很牛的软件。

我接触到了比如Ed Catmull发明的Stochastic Sampling算法,以及他在Pixar研发的PhotoRealistic RenderMan这个渲染器,他们写得非常棒。当时我问了自己一个问题:大家都是人,为什么别人能写出来我们写不出来?我很强烈地觉得不服气,既然人家可以做得那么好,我们也是可以写出(优秀的软件)来的。所以我整个大学阶段都在做一件事,就是尝试写一个能和RenderMan一较高下的离线渲染器。

后来我到了网易游戏,我开始接触游戏引擎。在立项做这个自研引擎的时候,我们的想法就是,人家3A游戏能做到跨平台的全平台的顶级的引擎,我们也都可以做到;人家能够做到实时的全局光实时的动态全局光,我们也都能做到;而且我们要做得更好、在更短的时间内做得比他们好。

所以我一直在贯彻这个观点,去推动网易的技术发展。在这个开发的过程里面我觉得比较有意思的是,我们不断地去挑战,不断地去努力,希望可以和那些已经站在顶尖的人们站在一起。我们从用一个非常简陋的demo在饭桌上用iPad mini 2给丁老板演示、直到现在能够支持上十数款产品在研发运营、乃至有《暗黑破坏神:不朽》这样的世界顶级的史诗级的项目采用的自研引擎,我一直贯彻Messiah每一行代码都是我们自己写出来的,每一个功能都是我们亲手制作研发打磨出来的。我们的这种不服气、不认输贯穿了整个研发过程的始终。

我希望同学们能加入到我们这样的一个企业,在这样的一种研发氛围里面,也能做出自己的东西,通过自己的能力去敢挑战世界顶尖水平。世界顶尖不是说要挂在嘴巴上,而是要做出来。就网易自身而言,包括我们之前的《一梦江湖》、《荒野行动》、《王牌竞速》,以及现在已经即将全球上线的《暗黑破坏神:不朽》,都已经能够和世界顶尖的产品站在一起,依靠的也是我们自己一个字符一个字符敲出来的代码。

大概在2017年开始,我们陆陆续续有非常多的机会和各种世界顶尖研发团队进行交流,甚至还有机会和业界传奇游戏历史销量前三制作人、第一个提出Deferred Shading的大牛、第一个提出Cascade Shadow Map的大牛这样站在游戏世界之巅的人进行对话,我自己感触良多。

跟他们交流,给他们看到我们的技术,获得他们的尊重、认可和赞许,他们还主动邀请我们进行更多更深入的沟通,甚至还有顶尖国外的制作人三番四次地想获得使用我们引擎的授权来进行新游戏的研发,我深切的感受到我们的技术真的开始摸到了世界顶尖水平。

新时代的3D手游引擎Messiah 带来《一梦江湖》丰富而自由的捏脸3.0时代

新时代的3D手游引擎Messiah 带来《一梦江湖》丰富而自由的捏脸3.0时代

 

架构是引擎发展的命根子

 

我看到您的POPO工作签名写的是“如果没有来生,我希望这辈子留下的都是最好的代码”哈哈~真实地感受到了一个“极客”的灵魂追求,能分享一下您从一开始接触写代码,到现在在用代码去做自研引擎的故事吗?

琨少:从高中开始,“写程序”这件事贯穿我整个人生已经有二十多年了。说真的,我一直觉得写程序是个很有意思的过程,贯穿整个过程的是快乐。毕业的时候我只有一个简单的想法:我想找一份从上班一直到下班都是写程序的工作,能够一直写下来,这就是我的初心。非常开心,非常幸运能够在网易找到这样一份工作,我不需要去想太多事情,只需要专心地去写我喜欢的程序,去征服我认为的技术高峰。

我觉得选择互联网和程序员这样一个职业是非常幸运的,你可以运用自己的智慧、技术去改变生活,给人们带来快乐。这是一个非常棒的工作,我们每天都很开心。因为我们创造的东西让人看到会开心、会笑,我们自己也非常激动。进入这个行业最重要的是,你千万不要失去热情,不要失去对技术的热爱。

我自己是一个非常喜欢技术的人,非常喜欢新的东西。比如说PS5,我们在很早就拿到了传说中的开发机进行适配和测试了,而我自己也第一时间预定了一台,第一批发售就拿到了,在家研究PS5也不用假装这是一台WIFI路由器,名正言顺地试玩各种游戏。

我们也会跟硬件企业合作,比如新手机、新主机设备在开卖以前,我们就能摸到、测试、做软硬件适配。同时我们也要承受一些学习压力,比如说像C++的标准可能两三年就更新一次,然后有新的技术、新的库不断更新。每年有大量的paper,我们需要去读各种各样的paper去看算法,更新新的硬件认知以适应新技术、新API。所有这些东西我们都需要付出一些努力和代价,但我认为非常值得,因为整个工作是让人非常地兴奋,我们也非常投入。这种压力对我来说是动力,我很享受。

最后我认为其实在这份工作里,如果你想保持进步,希望能做得更好的话,就不要停止学习,不要停在自己的舒适区里面。我对我们的引擎开发立了一个不成文的规矩,就是每六个月就要把一个大的系统重构和翻新一次,这个也是对我们自己的一个鞭策。我认为这样能够使我们不断地前进,不断地进步,不至于一直在一个自己认为“还可以”的得过且过的状态下工作。

是的!我有在公司的技术社区中经常看到Messiah迭代的资讯。能再详细分享一下吗,如果是每半年就要做一次大的系统重构,其中会涉及到不小的工作量吧?在实际过程中遇到过哪些挑战呢?

少:自2014年以来,至今Messiah经历了8年的持续研发迭代,成为一个横跨移动、桌面、主机的全平台次世代游戏引擎,至2022年完成了8款大型产品的研发工作。目前正在研发的产品达数十款,涵盖MMO、FPS、TPS、ARPG、赛车、体育竞技等多个游戏品类,引擎支持iOS、macOS、安卓、PC、Linux、PS4/PS5、Switch、XBox等几乎所有的游戏平台。架构与效率就一直贯穿于整个引擎开发工作,我们相信良好的架构能提供足够高的执行效率以及良好的扩展伸缩性。我们深信——“如果自己不革自己的命,别人就会来革你的命”,所以我们一直贯彻一个开发规则,每半年左右必须全面更新一个大型子系统框架,架构是引擎发展的命根子。

大概2007年,在我最早刚刚开始构思和设计Messiah雏形的时候,PC业界正开始面对摩尔定律的“失效”,即芯片频率的提升遇到瓶颈,Intel开始向多核心CPU发展,在超线程技术加持下并行计算日益提上议程。我在刚刚加入网易的时候有幸参与了当时的一个XBox 360开发课程,其中一个很有趣的点就是360的CPU在安排计算指令的时候需要“凑”一对儿一对儿的指令,以加大并行度,否则单条计算指令会降低PowerPC芯片的效率。这个是我之前没接触过的领域,让我大开眼界,也给了我灵感。后来我看到x86平台也开始有这样的趋势,我深刻地感受到多核心计算一定是未来的重中之重,于是我理想中的游戏引擎的样子,应该是一个天生并行的架构,应该是一个像现实世界一样多线程的架构,而不是传统游戏引擎——顺序逐一更新计算——的架构。

Messiah刚研发的时候是2013年左右,当时是移动游戏刚刚开始爆红的时候,所有人都开始关注移动游戏,所以大家都觉得要针对当时的移动芯片进行开发,要根据当时的移动平台来设计。但是我断定移动平台必将走过PC平台的每一步,将会复刻PC平台的发展,包括CPU和GPU,他们将在很短的时间内变得一模一样。

所以我坚持Messiah的移动平台版本也需要做多线程,多核心优化。在我们多线程刚出来的时候,不少人嘲讽,说我们不懂移动平台,说Messiah的多线程架构一定会死的很难看。后来恰恰相反,更短时间内更高效率的计算、以及多核心分摊计算成本反而能降低核心频率从而降低功耗,Messiah在移动平台上出色的效率及功耗控制赢得了很多项目的良好口碑。

在2017年我们成功推出了《天下手游》和《楚留香》(后更名为《一梦江湖》)以后,Messiah的架构迭代并没有停止,我认为我们需要更进一步的推动架构发展,需要为5年甚至10年以后的产品打基础做准备,于是我们又进一步的重构了整个多线程体系;2018年我们在支持了《荒野行动》这种可以做到无限大世界的游戏架构以后,重构了整个渲染管线,引入了Frame Graph系统——比Unreal引入这套系统提早了两年;2020年我们又再次大规模重构了多线程渲染系统,在PC上效率提高了10倍;2021年我们推出了Frame Graph 2.0;2022年我们迭代了多线程架构专门优化了大小核心调度,等等等等。

这些不断的、一次又一次的近乎全面的重写,非常困难,也很痛苦。指出别人的不足、纠正别人的错误是很容易的,很轻松的;推翻曾经的自己、否定曾经的自我是最困难,也是最痛苦的。但是我们就在这些一次又一次的自我否定中,伴随着引擎技术的成长,我们引擎研发人员的知识、技术、经验、得到了一次又一次的提高和升华。不断的挑战和战胜自己,是世界上最有意思的事情。现在我觉得战胜别人没什么值得高兴,战胜自己才是最值得高兴。

而在实际的重构工作中最最最痛苦的就是历史遗留问题,但是我们一直坚持务必解决历史遗留问题,不做任何妥协,一定要妥善处理。至今我们所有的产品都能顺利的升级到引擎的最新版本,包括最早采用Messiah引擎的《天下手游》。而且我们承诺绝不放弃任何一款产品,都一直支持他们的升级。给产品灌注生命力也是维持引擎成长的最大动力。若是产品不再升级引擎了,就证明引擎失去了和产品同步发展的优势。

团队内部是怎么看待这样的架构迭代的呢?

琨少:其实刚刚有提到,我期待的工作状态,绝不是一个自己认为“还可以”的状态,当然,这也是很多做技术的同学都天然会有的追求。如果你选择程序员作为你的终身职业,然后进入到这个行业,以及进入到网易这样的一家以自主研发为主的公司,我认为每一个同学更需要关注自己的一些能力,比如说学习能力。学习是非常重要的,它会贯穿你的整个职业生涯。我们不只是需要学习像学校里面的一些理论知识,更重要的是要学习怎么样去做一个产品,怎么样去让一项技术落地,然后怎么样去接触新的东西,因为技术本身就是不断在更新和迭代的。然后去把这些技术运用到我们的产品上面去产生具体的价值,然后让所有人去享受到、玩到这些技术。

同时在研发Messiah的过程里,我体会到最大的感悟并不是单纯的技术,而是研发引擎这个过程,最重要的,并不是仅仅产出一个产品、一堆代码,最重要的是这个研发过程培养了一个团队、一系列技术专家、沉淀下来了一个良好的技术研发环境氛围。

随着引擎研发成长的人,是网易游戏引擎团队中最大的硕果,人比代码重要、比产品重要,有人才有这些可能性,代码自己不会成长,人会;代码不会自己变强,人会;代码不会自己进化,人只要给与足够的空间和机遇、给养分、给时间、给试错的机会、给动力、给回报,成长的空间是没有止境的。我们研发引擎一开始的初衷是为了解决技术短缺,后来逐步地变成解决人才短缺,再后来变成了我们培养了一个正向循环,一方面引擎的研发环境促进人成长、变强,另一方面人才变强了又促进迭代原有的引擎技术,让引擎变得更先进。

所以团队内部能达成这个迭代的共识,大家都明白迭代是引擎的成长过程,也是自己的成长过程。不断的推翻和重建,让代码更强大、让技术更先进、也让自己进步。不是一日复一日的重复劳动,而是不断推翻残旧的自我。当然我们也经历了一个过程,一开始痛苦、烦躁,明明做好了的东西,还要再来一次,然后慢慢接受,也主动去思考哪里做得不够、再推翻、再重构——变得更好。

偏执地追求执行效率

哇,感觉这也是独属于程序员的热血和浪漫呢!

琨少:是的,我觉得程序员,尤其是游戏研发,确实就是一份极致浪漫的职业。大家非常纯粹,聚在一起讨论自己感兴趣的事,钻研大家都想破解的难题,这种感觉,和热血漫里那些并肩作战的主角团也没什么不同了。而且在网易,技术之间的交流氛围是非常好的,这点其实也很难得,比如Messiah的技术社区,当然还有NeoX的技术社区,都是非常开放的状态,欢迎大家学习、交流、讨论、反馈。

是的,感觉KM上确实硬核干货不要太多,您刚刚提到的两个技术社区就是典型。

琨少:随着互娱越来越多的自研爆款、头部产品使用Messiah,它在业内的曝光度及影响力也逐渐倍增,我们引擎团队也希望逐渐提高Messiah的研发透明度,通过不定期通过互娱KM更新Messiah的开发状况以及Roadmap,逐步公开更多的研发资料和教程,以促进社区交流及Messiah的整体开发生态发展。

当然,我们还有更大的“野心”,我们希望吸引更多项目采用这一网易游戏自主研发的次世代引擎,从而能更好地使用我们自己的技术做出更优秀的世界顶尖产品。因为一款引擎的快速成长得益于大量项目研发的采用和反馈,对于引擎研发来说,项目的需求就是生命,项目的反馈就是粮食,项目的验证就是支柱。每一个项目对我们提的制作需求,都是引擎研发赖以生存的、最有价值的部分,这些需求,我们都将认真总结、吸纳、改进,并且融入到引擎的未来版本中。在此我也打个小广告,期待更多游戏项目采用我们的自研引擎,把研发中最有价值最宝贵的制作需求,提给我们,从而促进大家共同进步、共同发展。

酷!来,那接下来就让我们来详细讲讲更多和Messiah相关的内容,很多同学都知道,网易一直有两款自研引擎,而且这两款自研引擎已经成功支持了网易将近80款游戏项目。

但是因为是自研引擎,很多同学是没有办法对我们引擎的实际技术部分有比较多的了解的。如果让您给Messiah引擎做个定位的话,您会怎么介绍这款引擎呢?

琨少:Messiah是网易在技术突破上第一次野心勃勃的巨大尝试,也是国内软件研发历史上一个巨大复杂软件成功研发的里程碑。

游戏引擎的复杂度、耦合度、广度、深度,都决定了它是除了操作系统以外,其中一种最复杂的软件。对执行效率有极端苛刻的要求,对前沿技术的落地注重、对产品直接支持面向用户、同时也承接整个产业的工业化,同时面对用户和生产者,既要运行时效率非凡也要生产时易用耐用。一方面既要达到宣传片里的顶级画面、也要在伸缩性上考虑极广泛的用户设备宽度。我认为这是极其苛刻的研发指标,仅亚于带图形用户界面的操作系统。

这是第一次网易从零开始规划一个面向十年甚至二十年后的引擎。在规划的时候就提出需要从最底层开始解决根本性技术难题,并且贯彻始终,一直没有偏差的执行研发战略的引擎研发项目。

我们在第一行代码写下来的时候就坚持跨平台、原生多线程、并发执行、支持尽可能多的图形API和操作系统、向主机看齐向移动兼容,务求一次研发所有平台都能跑起来一模一样。这种理念现在看起来是理所当然,而我最早构思Messiah的时候是2007年,成立项目的时候是2014年,当时这是大逆不道的破天荒的想法。很幸运我们坚持并一路走下来了,而且能做得到。今年是2022年,8年过去了这个规划看起来还刚刚能满足目前的需求,证明我们8年前的想象力也仅仅足够支撑至今,所以接下来我们需要更大胆、更具有想象力的规划,去憧憬下一个8年后的未来。

同时Messiah也是一个非常极端的敏捷软件开发的产物,在研发的同时就开始供应给在研项目,相互促进。我们坚持精兵简政策略,坚持只采用极少量的顶尖研发人员、进行极高的迭代效率、以及非常迅速的响应,在很短的时间内支持了大量项目的开发、上线、运营。依靠的是相信技术、相信科学,一切问题用技术手段解决,尽量不留技术空白,历史问题当下解决。快速开发,快速迭代,快速验证,天下武功,唯快不破。

我们和商业引擎也有非常大的不同,因为自研引擎专注对内,所以我们很偏执地追求执行效率,只有执行效率和能耗指标远高于商业引擎,才能抵御体量庞大的商业引擎。俗话说船小好掉头,我们在采纳新的技术架构上、以及适应新的硬件上,响应速度远超商业引擎。在一些核心问题的修改上,我们的决策速度也远比商业引擎快、准、狠,所以Messiah最大的特点是,执行快、响应快、变化快。

当然,虽然Messiah研发即将走进第九个年头,已经从一个简陋的demo飞速成长为有能力支撑世界级品质、全平台发行的大型游戏开发的成熟自研引擎,但我们也承认,Messiah至今依然有大量的不足,我们每天仍然面对很多反馈、很多珍贵的制作需求。我们团队中的每一个成员都正在努力改进,努力进步,希望有一天,属于我们自己的引擎能够矗立在世界游戏技术之巅,大家能用上世界最顶尖的技术——我们自己开发出来的技术。

 

本文系作者竞核授权竞核发表,并经竞核编辑,转载请注明出处、作者和本文链接
想和千万竞核用户分享你的新奇观点和发现,点击这里投稿

注册邮箱未验证

我们已向下方邮箱发送了验证邮件,请查收并按提示验证您的邮箱。

如果您没有收到邮件,请留意垃圾邮件箱。

更换邮箱

您当前使用的邮箱可能无法接收验证邮件,建议您更换邮箱

账号合并

经检测,你是“竞核”和“商业价值”的注册用户。现在,我们对两个产品因进行整合,需要您选择一个账号用来登录。无论您选择哪个账号,两个账号的原有信息都会合并在一起。对于给您造成的不便,我们深感歉意。