終末地上線,對話鷹角CEO&CTO:陣痛、反思、向上走
《明日方舟:終末地》(以下簡稱終末地)終於開服了。
作爲鷹角時隔六年多的新旗艦,它的意義非凡,不管是從產品的規格體量,還是全球多平臺(PS5、PC和移動端)的發行策略,都算是完成了一次突破式的飛躍。
正如遊戲製作人海貓絡合物在公測前瞻節目中所說,「從最初的構想到即將正式與大家見面,這條路並不算短,也談不上輕鬆。」
而對於行業來講,作爲曾經開啓新一代二遊內容範式的標杆,鷹角面對當下時代命題所給出的這份答卷,市場究竟會做如何反應,大家也相當好奇。
一週前,終末地的全球預約人數突破了3500萬,玩家們在這艘鉅艦啓航前的三次測試過程中,對遊戲的未來圖景,常常圍繞美術表現、玩法設計和劇情演繹,展開討論。
沒錯,這也是大家過去提起鷹角這家公司時,最先映入腦海的幾個關鍵詞。
但在葡萄君完整體驗三測開放的所有內容之後,我們最好奇也最感慨的部分反而是技術——這大概是鷹角成立以來技術跨度最大的一次嘗試。
畢竟2019年上線的《明日方舟》是一款2D遊戲,項目成本相對3D遊戲並不高,是當年二次元公司以小搏大的典型案例。沒有多少人會覺得它在技術上有什麼天塹。
而到了終末地,不論是PBR與NPR的混合渲染實現、還是多角色同屏的視聽邏輯;不論是無處不在的水體交互,還是完全動態的工廠基建……對一個多端大型3D遊戲來說,都是相當嚴苛的技術考驗。
更何況鷹角還需要在這個項目裏,第一次自己去做全球全平臺同步發行。
很顯然,在終末地各種顯性內容的背面,鷹角的技術管線——這個對大多數玩家而言既不生動也不刺激、但卻具有基石作用的模塊,同樣正處在高速迭代的狀態中。
爲此,公測前夕,葡萄君與鷹角聯合創始人&CEO hyf、以及CTO顧煜,進行了一次技術專訪。
在交流過程中,我幾乎沒看出什麼即將大功告成的興奮,反而聽到了不少關於取捨、痛苦以及「做得還不夠」的覆盤。
一家二次元公司在跨越3D工業化門檻時,要付出多少代價?在這場對話中,他們沒有炫耀太多黑科技,而是向我講述了鷹角技術進化過程中的不同切面。
以下對談爲方便閱讀,內容經過整理和調整。
01
跨越:
始於穩健,終於自洽
葡萄君:先聊聊終末地的技術選型吧,它有什麼特殊之處嗎?
hyf:它的特殊在於項目選擇的方向,行業裏鮮有人涉足。
第一,同樣是PBR和NPR結合的寫實二次元,風格根據兩者不同的配比,會很不一樣。而基於我們自己的美術表現訴求,終末地要比市面上絕大部分同類遊戲都更偏向寫實,這意味着我們需要更精細的畫面表現,以及將風格化的角色融入進更加寫實的場景當中。
第二,對於工廠玩法,我們會希望它能更偏沙盒化,讓玩家除了在相對集中的區域裏搭建流水線外,也能在世界中自由建造,並使用礦機、滑索、戰鬥輔助設施等等。
第三,我們想做高內容密度的箱庭體驗,也因此在地圖中做了大量的可交互物和玩法設計。同時,我們在一開始就希望箱庭與箱庭之間能夠無縫加載,實現更加順暢的遊戲體驗——因爲如果是「有縫」地圖,就會阻斷沙盒自由建造的沉浸體驗,玩家就沒法橫跨地圖去建造滑索和拉電線。
這些方向所帶來的性能負載,對技術團隊提出了前所未有的挑戰。
葡萄君:去挑戰這些模塊,對於鷹角的定位以及意義是什麼?
hyf:首先一定是項目本身需要。其次,我們確實也希望積累3D產品開發經驗,探索大規模研發流程管線,把公司的團隊、管線、技術、工具儲備等各方面,都往前推到行業頭部的水平,爲鷹角未來更進一步的3D項目「打個板」。
葡萄君:那爲什麼要繼續使用Unity?而不是更加熱門的虛幻引擎?
顧煜:終末地作爲鷹角第一個3D大型項目,又有這麼多新的技術挑戰,所以選擇鷹角此前已經有更多積累的Unity,風險會更加可控。其實公司也有一些新的項目在用UE,這個主要看整體規劃。
業內有一個共識,對於50人以內的項目來說,Unity非常友好,因爲效率很高;100人項目則兩邊差不多,200人規模的團隊,UE的工具鏈、管線和渲染效果會更適用一些。
而對於終末地這個規模的項目而言,不論選擇哪種引擎,都有非常多需要深度定製、改造、優化的部分,我們也是一開始就做好了要深度改造的打算,所以它們原生狀態下的差距其實沒那麼重要。
hyf:就像剛剛說的,項目已經有很多巨大的挑戰了,如果我們還要同時去嘗試探索一個當時還不夠熟悉的引擎,那相當於是把兩個挑戰疊加在一起了。而我的做事風格,傾向於選擇更加偏向穩健、務實的做法。
葡萄君:聽上去很保守,但從實際呈現來看,終末地給人的感覺還是很激進。
hyf:你的最終願景可以遠大,但你每個階段性的目標得務實。比如剛纔說的,我們雖然很早就想好最後要打通無縫箱庭地圖,但技術測試的時候並沒有直接把無縫端上來,而是先驗證了箱庭玩法,覺得團隊可以做,纔去做了進一步的改造。
顧煜:項目的規模和野心,都是逐步增大的。我們並不想好高騖遠,定一個達不到的目標。只是隨着團隊的成長,產品達到了更高的質量,大家自然就會想做得更好。
B站UP金烏在2測時期用滑索穿越了六個地圖
葡萄君:但這個「更好」應該有所限度?你們會怎麼定位項目想要追求的品質標準?它要做到比當下所有產品都好嗎?
hyf:雖然我是技術出身,但我不會單獨去追求某個更高的技術指標、更高的質量標準,也不會盲目地用“技術侷限性”爲理由去簡化一些策劃需求,而是關注遊戲有沒有這個需要,或者說是否「自洽」。
就像「寫實」這個維度,並不是說要做到極致,纔是最好的。比如我們要平衡項目特色的風格與氣質,所以會在寫實的服裝材質上,去保留手繪筆觸的處理。
再比如說場景裏小擺件、交互物的密度之所以很高,不是單純說要比別的產品更多,而是因爲寫實風格的箱庭關卡不像開放世界有那麼開闊的可探索區域,內容密度不夠的話,玩家很容易覺得單調,進而撐不起遊戲的沉浸感和可信度。
另外一方面,像是我們工廠玩法裏面有那麼多建模精緻、帶有不同生產動畫效果的建築物,如果單純考慮技術指標的合理性,我們應該去做簡化,但由於遊戲是越肩視角,當玩家走近一個建築時,如果發現它的質量較低,就很容易出戏。
所以我們做了一套比較複雜的分層機制。讓玩家近看時,建築的模型品質足夠好,材質也能有一些半透明的高級效果,同時拉遠後,畫面又能簡化到一個性能能夠承載的狀態。
以上這些都是我們基於「自洽」邏輯而去攻克的技術課題,而這種對「自洽」的追求,我們只跟自己比。別人可能不是做不了,只是別人不需要這樣做。
葡萄君:具體來說,這個「自洽」的標準是怎麼定下來的?比如說PC和主機版的武陵城300萬-500萬的渲染面數,這是基於寫實風格呈現的基礎要求嗎?
顧煜:行業常見的做法有兩種,一種是正推,給出一個多邊形的預算,同屏就只能這麼多面,你不能超過它。這樣性能是可控的,但就把壓力給到了美術,他需要根據預算反覆調整。
另一種是反推,美術先做,然後程序再進行性能評估和優化。這個做法最大的好處是,效果可能會更好,因爲性能並不是一個很簡單的算術題,你多邊形多一點,但結構、材質、光影可能更簡單,那也可以超,程序來優化就行。
但它的缺點在於,美術如果過於放開,可能會導致後期引來一波大的返工,就是程序怎麼都優化不下來,你只能回頭再減下去。
我們折中的做法是,先給出一個比較寬鬆的正推指標,讓美術開發有更大的自由度,同時在後期引入大量的性能測試調優,來解決性能熱點,以此達到更好的效果。
所以像300萬-500萬的數量級,是一個在研發過程中逐漸推敲出來的結果,而不是一開始確定的。
葡萄君:這其中的取捨是不是也涉及到性價比?可能某些部分做好了,玩家能很明顯就感知到品質感。
hyf:有些東西是必須要達到一個很高的指標,比如說畫面的渲染風格肯定是最顯性的,它能直接抓住玩家的眼睛。
但有些東西光是達到基礎指標就已經很困難了,像終末地這樣的工業化玩法和內容密度,要想達到和市面上第一梯隊遊戲一樣的流暢度,得要付出更多的努力纔行。
終末地的雨水效果
葡萄君:以目前的標準來說,終末地稱得上是下一代產品嗎?
hyf:「代際」或者說「某個世代」這類概念其實最早主要源於主機市場,是在說面向下一代主機平臺的作品。但在跨平臺領域,這個詞的定義很模糊,如果單獨提可能會產生歧義。
從鷹角自己的技術管線發展角度,對比《明日方舟》來說,終末地確實是一個在技術、視聽體驗上有着飛躍式進步的作品。
葡萄君:畢竟《明日方舟》還只是一個2D遊戲。
hyf:其實嚴格來說,《明日方舟》不算是一個純2D遊戲,其中的羅德島基建、關卡場景走的都是3D管線。鷹角創立之初,就有一個大的願景,希望未來能做高品質的3D項目,於是《明日方舟》嘗試了一些3D開發的環節,比如3D場景美術、TA(技術美術)、客戶端開發、渲染引擎等等。
通過這些模塊,我們積累了很多可以衍生到大型3D遊戲裏的基本流程,也逐步驗證和明確對於3D開發的一些認知,包括團隊之間的磨合。這些都是很寶貴的經驗。
《明日方舟》
02
陣痛:
管線改動牽一髮動全身
葡萄君:在整個研發過程中,終末地的開發卡點主要來自什麼地方?
顧煜:有一個很大的卡點來自於組織大規模團隊研發的管線流程。遊戲開發與傳統工業流水線有着本質的區別——每一個步驟都是不確定的,非常依賴於創作者的主觀判斷。
像終末地這幾年裏做了很多技術改動,每一條都是牽一髮而動全身的,都會對團隊已有的工作造成衝擊,甚至需要推翻重做。
所以在外界看來,我們做出了一個品相不錯的遊戲產品,但在內部,我覺得對團隊更有價值的是,我們打造了一整套全新的大型3D項目研發管線。有了這個基礎,才能確保團隊在未來可以持續產出高質量的內容。
葡萄君:有沒有具體的例子?
顧煜:就拿宏山地圖的竹林來說吧,它的多邊形數量明顯超標了。
這就需要美術先要大致定一些基準,玩家在不同位置,不同的視角下能看見的東西有哪些。隨後,技術團隊需依據這些基準進行詳細的數據採集:涵蓋CPU與GPU的開銷、貼圖及顯存內存的資源佔用,以及不同算法模塊的性能消耗。
然後讓關卡美術去調整佈局,這又會倒推到更前面的步驟,我們要跟關卡策劃商量,劇情發展裏的竹林位置能不能變動。
引擎和TA也沒閒着,會去做很多底層優化,模型也會去做一些取巧的東西,比如說竹林的陰影不是由每棵竹子單獨投出來的,而是做了一個專門用來的投影的遮罩(頂蓋),這能節約很多性能。
葡萄君:這種技術與策劃、美術的拉扯,一般最後聽誰的?
hyf:可能傳統情況下,大家會覺得這是一個雙方拉鋸的過程,技術同學比較保守,說這不能做,那不能做。但我們項目有一個特色,就是技術也想要挑戰自己,所以最後可能變成雙方互相推高要求.....
葡萄君:於是最後你們徹底改造了Unity底層引擎。
顧煜:這是一個愚公移山的過程。有幾個大的觸發因素,每次都導致一部分的重構和改造,兩三年積累下來,就有非常多的成果了。
第一是遊戲玩法需求,從箱庭地圖,到無縫箱庭地圖,都需要對底層資源的加載、串流做改動;第二是性能需求,大規模的場景和工廠,需要各種引擎優化,來釋放更多的CPU算力到玩法邏輯上;第三是渲染需求,這個就很好理解了,比如說光追和DLSS。
另外,管線流程的落地工作,也會造成大量工作。以我們的多人協作美術管線爲例,我們需要爲複雜的地圖編輯,引入多開發者並行工作的能力。本來關卡編輯製作就是非常複雜的,遊戲研發的各種內容都在這個環節被整合起來,需要多工種協作。而引入並行工作能力,會讓這個過程變得更爲複雜,打一個不恰當的比方,多人在網頁上共同編輯一篇長文的難度,遠大於單人寫一篇長文。
我們即使有了心理準備,在實際開發中,依然遇到了很多問題。這部分工作,開始投入4人做前期研發,大半年後初步完成。然後我們投入了6人進行落地的嘗試,並和美術、策劃一起嘗試用新的工具,修改流程中的卡點,花費了半年時間。最終我們又持續跟進內容製作人員的工作過程,找到影響效率的痛點,持續迭代改善工具,又花了半年時間。
這些流程變革中的陣痛,源於技術迭代的固有周期。從功能實現到驗證效果,往往是一個漫長的過程,期間還會伴隨大量的反覆與磨合。
葡萄君:這其中最難的部分是哪?
顧煜:技術的決策很難。你知道這個改動方向對項目一定有幫助,但你不知道有多大的幫助,它是否對得起它的代價。這需要我們做一個更前置的判斷。
很多時候,代價能一眼看到,但提升就說不定了,可能是15-20%,也可能只有3%。那如果是後者,我就會覺得不是很值得,因爲付出代價的不只是技術團隊,上下游的團隊也要付出代價。
對於落地的判斷也很難,有時候某個技術同學卡住了,你沒法確定他只是暫時性的,多給他兩個禮拜就能搞定了,還是真的完全沒辦法了,需要給他調配更多的資源。
葡萄君:那你一般怎麼做這個判斷?
顧煜:這個得分情況來看了,針對一些關鍵技術點,如果真搞不定了,我們會有一個撤退方案。然後在這個過程中,我們會持續去做判斷,每個禮拜討論三四次,直到某個必須要做出決策的時間點。像之前的全面測試,其實還是有一些東西被砍掉了,比如說光照壓縮技術,因爲實在是做不完了。
葡萄君:想聽聽撤退方案。
hyf:一測的地圖加載方式,就是二測無縫地圖的撤退方案。就如果我們最後沒能完成無縫這個技術挑戰,那麼終末地地圖之間的關係,大概就會採用一測的方案了。
所以我們的邏輯更多還是小步快跑,分階段的去做事情。假如是要做一個開放世界項目,那麼在第一個版本的時候,就得把無縫地圖這個技術給搞定了。
03
攻堅:
從四人同屏戰鬥,到實時運算工廠
葡萄君:來說說幾個核心玩法的挑戰吧,感覺都不太容易,比如說四人小隊同屏戰鬥。
顧煜:四人小隊的難點主要在於性能分配,它意味着我們要給更多渲染的資源預算到角色上,這大大壓縮了其他模塊的資源,比如場景和特效等。
此外,隊友要有可信的表現,也是一個難點。比如隊友如何在冒險中自然地和玩家對話、開玩笑,如何幫助玩家採集資源,在戰鬥中合理走位和釋放技能,在箱庭中找到祕密並走過去提醒玩家,這裏有非常多的細節,稍有不慎就很容易出戏。
hyf:另外四個人小隊還涉及到另一個問題,就是畫面重點的分配。比如說戰鬥特效很華麗,那麼四個人的光污染就會乘以4倍,你根本看不清場景。那麼我們就要在特效調度上,把主控角色和AI隊友做出區別。
我們還曾討論過一個問題:跑圖探索的時候,玩家的三個隊友是在視野裏,還是不在視野裏面比較好?全部在視野裏,你會覺得很亂;但長時間不在,又會覺得沒有陪伴感。所以我們做了一套針對性的系統,讓隊友會時不時在你的視野裏出現、既不會讓你覺得平淡、又不會一直干擾你。
前面提到了隊友會自然地和玩家對話、開玩笑,其實在四人同屏的語境裏面,我們有更多的空間去塑造多個角色之間的關係,所以還設計了很多隊友間的對話。這個其實也是歐美3A遊戲裏面會涉及的,自然化的敘事方法。
遊戲裏諸如此類的細節設計還有很多,它們未必是在技術上有多難實現,但它在工程裏要怎麼定下來,到底是多少比例,都需要一點點去調整。
葡萄君:基建玩法的挑戰應該也不只是性能消耗吧。
顧煜:是的,還有服務器的壓力。因爲終末地的工廠在玩家離線狀態時也在運算,服務器需要不停進行校驗運算。一個32Core 64G的服務器,在算複雜工廠時,可能只能同時算3000個玩家——每個玩家在線運算的服務器工廠節點平均可達到2000個以上。
這個量非常大。所以如何在大規模和密集型的複雜狀態機中獲得更高的單機承載是我們主要解決的問題。針對這個問題,我們採用了內存複用和管理優化,事件聚合,Tick分級,GC優化,PGO優化等多種優化方式,將單機複雜工廠場景的穩定在線人數,從3000人提高到了4000人,單人每秒工廠核心的運算時間保持在1ms左右。
葡萄君:但玩家規模上來後,還能頂住嗎?
顧煜:我們會對離線運算做分級,在玩家活躍期裏會調用最高的運算頻率,如果玩家幾天沒上線,就會用相對精簡的頻率去估算,以此類推。這種分級處理的策略,一方面能最大程度保障所有玩家的基建體驗,同時也讓服務器的壓力得到一些緩解窗口。
hyf:我們目前的解決方案也不能說有多好,但未來會持續探索下去。畢竟這個挑戰確實很少見,以往工廠遊戲主要還是集中在單機領域,很少有人把它改造成一個長期持續運行的服務性遊戲,至少在我們的探索過程中,沒有找到這樣的參考案例。
葡萄君:這個技術突破包括音效嗎?
顧煜:當然,我和負責音效的老師專門瞭解過,他說現在終末地整體有十幾萬條之多的音頻資產,其中擬音採樣也是以萬來計數,在PC和PS5平臺更是引入了卷積混響技術,可以說音頻表現的規格和品質是相當高的。
而爲了在全平臺都能達到高水準的效果,尤其是手機平臺,我們改造了底層的音頻系統, 例如工廠系統大量聲源的優化計算,360度環繞的環境聲效,高性能的空間音頻算法和無縫銜接的音樂音效體驗。
因爲我們遊戲語音的數量巨大,不僅需要多國語言同時錄音製作,還需要能在遊戲內合適的時機播放正確的臺詞,避免嘈雜感。爲此我們投入了較大的精力去從零開始打造語音生產管線,經過三年的迭代與沉澱,目前達到了一個較爲先進的狀態,並且也爲此申請了一些專利。
出乎意料的是,震動表現也是音頻團隊的工作之一,震動和音頻都是不同頻率的波形融合,很適合音頻團隊發揮他們的專業能力。
因此,終末地也爲手機藍牙手柄,PS5的DualSense無線控制器,Xbox手柄等各種遊戲手柄設計了震動表現,強化了操作反饋與視聽沉浸感。 例如在一些支持觸覺模擬的手機上,拖動包裹物品等操作會有非常細膩的震動手感。
葡萄君:有沒有一些具體的例子?音效到底做得有多細?
hyf:音效的好,是潤物細無聲的。你如果不去深究,就只是遊戲感受的一部分,甚至意識不到這個事,只會覺得遊戲的聲音品質很好。比如說遊戲中不同體型的角色,踩在不同材質上的聲音,會有很多差分的細節變化。
再比如,我們在公測還實裝了實時3D Audio+HRTF渲染技術,用通俗的話來解釋,它能讓隊友在玩家身邊戰鬥和說話時的表現,也會有比此前測試更爲逼真的包圍感和空間方位感,尤其當你用iOS的AirPods Pro開啓3D Audio或者使用家庭影院,真的會有“彷彿隊友就在身後對我說話似的”那種身臨其境的體驗。
葡萄君:說到多端,終末地的適配有多難做?
顧煜:多端適配的困難主要在於每一個平臺都有自己的獨特之處,需要在多平臺中儘可能提煉出共性,節約工作量,但又要針對每一個平臺把相關特性打磨到足夠好。比如說PS5獨特的手柄交互、PS5 Pro的增強特性。
而在移動端,最考驗我們的,就是如何做好性能和功耗上的平衡,以及對於高端特性的支持(比如iOS的光線追蹤)。
葡萄君:在平衡這方面,有沒有一些可以分享的經驗?
顧煜:比如,我們會根據箱庭關卡中不同地點的性能開銷,做一個熱點圖,越紅的地方性能就越差,而在同一個點位,我們則會多視角地去看哪個方向會很紅。然後讓美術看一下,能不能調整一下場景。
hyf:我們會有專門的人去盯性能,去做監控和分析工具。包括爲什麼引擎改的這麼徹底,很大程度上也是爲了移動端能夠做得更好。
葡萄君:主流手機能跑得動終末地嗎?
顧煜:之前的測試版本,下探到了近幾年內的旗艦機,應該都能相對流暢地體驗。同時,產品還有一些引擎功能在繼續開發,目標是在上線後提升更多低性能手機的流暢度。受限於經驗和時間,我們可能還沒有做到盡善盡美,未來優化的範圍會更大。
04
理念:
藝術和技術互相激發,不斷向上走
葡萄君:在做終末地的過程中,是否有感到痛苦的時刻?
hyf:涉及到個人主觀判斷的時候。比如說移動端上的性能優化做到什麼程度算夠了?如果繼續往下做可能會有工程風險,但不做,玩家是否能接受?我心裏沒底,就會很忐忑。
顧煜:是的,很多時候,我們都是在信息不夠多的情況下,去做一個前置的決策。這個事對我來說就是很大的一個折磨,因爲我可能會判斷錯誤。
有時候爲了一個大的目標,我們需要放棄某些同事做了蠻久的東西,這種決策自然會傷害一部分人的感受。但你沒有辦法,爲了項目只能這麼做。當然,同學們都很配合,但對我來說,做這種決策還是蠻痛苦的。
不光是我們,其實很多研發同事也會有這種痛苦,因爲每個人都特別想把東西做好,會自己給自己加量,但是加量就會影響到工期,進而成爲項目的風險,所以有些時候會被我們叫停,必須得做出取捨。
hyf:痛苦的來源,往往是你心中會有一個完美的形象,但現實不可能做到完美,你必須說服自己接受這件事。
葡萄君:那現在我們可以說終末地已經完成了它的技術課題嗎?
hyf:我們確實克服了很多難題,但無論是在移動端的下探、還是在PC端更高級的效果表現,包括怎麼讓幾百人的大型團隊能夠以一個更高效的方式去運作,都還存在很多未完成的課題。這些都需要更多的人才和時間去解決。
這裏想借機打個廣告,我們的渲染引擎、動畫TA、通用引擎技術、客戶端程序、測試開發等等崗位,都還有不少需求缺口,非技術職能也都需要大量志同道合的小夥伴,歡迎喜歡我們項目的同學來投遞簡歷。
葡萄君:但在過去,我們其實很少談論鷹角的技術,對你們的印象標籤可能還只是停留在美術、內容調性、玩法等方面上。我很好奇鷹角對技術的理解和態度是什麼?
hyf:作爲一個程序員出身的創作者,對於技術積累在遊戲開發當中的重要性,我從來不懷疑,這是立身之本。
但鷹角技術團隊的理念也不是技術至上。我認爲技術只是實現落地的方法。
我希望鷹角技術團隊能強大到儘量不去限制創意和想法,能夠承載大家想要創作的遊戲。這個要求看似普通,但實現起來非常非常困難,爲此我們一直都在默默積累和深耕。
葡萄君:那你會覺得終末地做到了以前別人從未做過的事嗎?
hyf:回過頭來看,我不認爲終末地有做到什麼業界從來沒人做到過的事情,我們做的每一項技術挑戰都是站在行業前輩的肩膀上,只是根據項目的實際需求,多向前探索了一步。這個探索你不能說它做得更好,它只是更適合終末地這款遊戲。
我們會更強調技術和藝術的結合,技術做到八九十分,再加上美術更好的應用才能做到120分,最後一定是兩邊融合才能出現頂級的效果。但我們還想做得更多、更好。
我很喜歡皮克斯創始人之一,約翰·拉塞特說過的一句話「藝術挑戰科技,科技激發藝術」。終末地的研發之路,也是一個靠藝術和技術互相激發和影響,不斷往上走的過程。