8年時間,29款產品,揭秘網易自研引擎的背后故事

競核

競核

· 5月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。所有這些東西我們都需要付出一些努力和代價,但我認為非常值得,因為整個工作是讓人非常地興奮,我們也非常投入。這種壓力對我來說是動力,我很享受。

最后我認為其實在這份工作里,如果你想保持進步,希望能做得更好的話,就不要停止學習,不要停在自己的舒適區里面。我對我們的引擎開發立了一個不成文的規矩,就是每六個月就要把一個大的系統重構和翻新一次,這個也是對我們自己的一個鞭策。我認為這樣能夠使我們不斷地前進,不斷地進步,不至于一直在一個自己認為“還可以”的得過且過的狀態下工作。

是的!我有在公司的技術社區中經??吹組essiah迭代的資訊。能再詳細分享一下嗎,如果是每半年就要做一次大的系統重構,其中會涉及到不小的工作量吧?在實際過程中遇到過哪些挑戰呢?

少:自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年我們迭代了多線程架構專門優化了大小核心調度,等等等等。

這些不斷的、一次又一次的近乎全面的重寫,非常困難,也很痛苦。指出別人的不足、糾正別人的錯誤是很容易的,很輕松的;推翻曾經的自己、否定曾經的自我是最困難,也是最痛苦的。但是我們就在這些一次又一次的自我否定中,伴隨著引擎技術的成長,我們引擎研發人員的知識、技術、經驗、得到了一次又一次的提高和升華。不斷的挑戰和戰勝自己,是世界上最有意思的事情?,F在我覺得戰勝別人沒什么值得高興,戰勝自己才是最值得高興。

而在實際的重構工作中最最最痛苦的就是歷史遺留問題,但是我們一直堅持務必解決歷史遺留問題,不做任何妥協,一定要妥善處理。至今我們所有的產品都能順利的升級到引擎的最新版本,包括最早采用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至今依然有大量的不足,我們每天仍然面對很多反饋、很多珍貴的制作需求。我們團隊中的每一個成員都正在努力改進,努力進步,希望有一天,屬于我們自己的引擎能夠矗立在世界游戲技術之巔,大家能用上世界最頂尖的技術——我們自己開發出來的技術。

 

本文系作者競核授權競核發表,并經競核編輯,轉載請注明出處、作者和本文鏈接。
想和千萬競核用戶分享你的新奇觀點和發現,點擊這里投稿 。

注冊郵箱未驗證

我們已向下方郵箱發送了驗證郵件,請查收并按提示驗證您的郵箱。

如果您沒有收到郵件,請留意垃圾郵件箱。

更換郵箱

您當前使用的郵箱可能無法接收驗證郵件,建議您更換郵箱

賬號合并

經檢測,你是“鈦媒體”和“商業價值”的注冊用戶?,F在,我們對兩個產品因進行整合,需要您選擇一個賬號用來登錄。無論您選擇哪個賬號,兩個賬號的原有信息都會合并在一起。對于給您造成的不便,我們深感歉意。

70老太另类极品grand
      1. 
        
        1. <th id="xykpr"></th>
          <rp id="xykpr"><acronym id="xykpr"><u id="xykpr"></u></acronym></rp>
          <nav id="xykpr"></nav>

        2. <dd id="xykpr"></dd>
          <th id="xykpr"></th>