騰訊魔方《洛克王國》開放世界技術詳解

愛分享的小魔方發表於2022-07-25
以下文章來源於騰訊魔方工作室 ,作者愛分享的小魔方

魔方工作室後臺主程式derry,帶大家探班洛克開放世界在研專案後臺程式開發組,瞭解伺服器研發同學的腦海中,如何讓“拯救世界的一千種可能”成為現實,其背後又有著哪些規則與挑戰。

騰訊魔方《洛克王國》開放世界技術詳解

開放世界網遊是如何搭建起來的

在談開放世界網遊前,我們不妨先回頭看看傳統網路遊戲。在傳統網路遊戲中,玩家總是扮演著食客的身份,享受著由策劃大廚呈上來的美食。反覆斟酌的美術設計與動線設定,足夠合玩家胃口,但久而久之初見時的驚豔便慢慢褪去;機關式的玩法、固定化的通關條件,透過任務引導的唯一解,平淡甚至厭煩的情緒正在玩家心頭醞釀,玩家是時候換一換口味了。

開放世界網遊中,玩家的身份正從“食客”向“業餘廚師”的身份轉變,可以自由操刀,對設定進行各種腦洞大開的排列組合。策劃作為規則層面的制定者,需要做的是準好新鮮、完備的食材和一份貼心的使用說明。技能組合、天氣系統、地理環境等都被納入考慮,多元解成為玩家和策劃的共同追求。

騰訊魔方《洛克王國》開放世界技術詳解

✦物理✦

和傳統無縫大地圖相比,開放世界除了超大的世界規模,更多是體現在“開放”二字。在我們的理解中,“世界規則”與“操作自由度”是開放世界設計的兩個維度,我們也在不斷探索這個度在哪裡。

騰訊魔方《洛克王國》開放世界技術詳解

我們不希望既定成文的規則去約束更多可能性產生,比如在世界的通達性上、物質迴圈上,給到玩家更多的自由度,例如,可以嘗試給遊戲內每個元素更多的屬性值,策劃可以去自由配置,甚至是產生複合型物體出來。

將現實世界的物理法則移植到遊戲世界中能產生哪些奇妙現象呢?比如草系精靈可以使種子生長,火系精靈可以點燃路障荊棘,冰系精靈可以凍結湖面,翼系精靈可以帶你乘風飛翔……

對於遊戲中過河的方法,我們希望看到不一樣的回答,可以讓玩家擁有更多的操作空間,去形成不同的解題效果。像使用魔法使河面結冰、各種飛行姿勢、點燃擋路的藤蔓等等。

騰訊魔方《洛克王國》開放世界技術詳解

策劃負責腦洞大開,我們則負責搭建舞臺,調配好遊戲的物理引擎、模擬好貼近現實生活中真實的物理世界。而這也依賴物理和化學引擎的支援,為了保證正常的開發程式,在立項初期,團隊就對一款業界物理引擎進行了深入的研究,包括官方文件、原始碼、相關技術文獻,並且在業務側進行了封裝和持續的重構、最佳化與測試,跨過了商業引擎門檻高的障礙,對引擎有了很深的瞭解。

騰訊魔方《洛克王國》開放世界技術詳解

✦AI的智慧設計與生態圈的擬真✦

對於開放世界網遊的搭建來說,如果說物理法則是開放世界規則制定的基石,AI的智慧設計與生態圈的高度擬真則是讓開放世界擁有了靈魂。

因此,我們理解中的開放世界,驅動世界的不止是玩家,而應該是MetaAI驅動的,包括AI、TOD、季節與天氣等,即使沒有玩家的探索,整個世界還在按預設的規則進行推動,世界上的生物依舊可以按照自己的節奏來棲息生存。

騰訊魔方《洛克王國》開放世界技術詳解

像是塞爾達都進行了這種嘗試,隨著外部事件的不斷髮生,AI會自主決策做出行動。遊戲中的精靈會有明確的種群差異,一些溫順的精靈會接近玩家,而一些兇猛的精靈甚至會在大世界攻擊玩家。同樣精靈AI也會遵守基本的生活作息和趨利避害的思維模式,像白天工作晚上休息、躲避暴雨、閃電等自然災害。假如有一天你發現精靈在摸魚,或是在互相拌嘴,千萬別意外。這種機制在開放世界網遊中是合理存在的,如果更細緻地蹲點觀察,也許會挖掘隱藏彩蛋。

騰訊魔方《洛克王國》開放世界技術詳解

開放世界在擬真化,AI生態搭建上是不斷進化的一個命題。為了讓AI的表現行為、執行效率、擴充套件效能達到折中,研發團隊需要對傳統的AI製作工藝進行迭代升級。傳統的AI經過了FSM、GOAP、行為樹、決策矩陣等多種組織形式的迭代,但在研發過程中,我們發現任何一種形式,都無法滿足對“設想”中,豐富的AI生態的需求。

以騰訊自己的產品舉例,走近AI,他可以與玩家對視甚至是吵架,這些行為可以基於行為編寫程式實現。當玩法發生變化,需要玩家唱歌從AI面前路過並引發AI的“贊識”行為,那就需要為新加行為做一個變更。同時一些自然條件的變化,如日夜、天氣、隨機的自然事件等等都可以影響AI的最終行為。

騰訊魔方《洛克王國》開放世界技術詳解

當一個AI行為樹很龐大時,新加一個AI的“響應”行為非常困難,同時行為樹的執行順序,以及輪詢式的Service機制,也會給執行時帶來很多不必要的開銷。

因此,我們希望把決策能力單獨成立一個系統,實現行為和決策可複用,並可以整體管理維護。在此機制上,我們再去做TOD、天氣,以便展現遊戲其他內容。雖然原則上比較簡單,但很多的細節需要反覆的打磨、討論,經過幾個月的最佳化,我們已經有一個比較優秀的框架,但我們還會持續最佳化和迭代。

騰訊魔方《洛克王國》開放世界技術詳解

有了豐富的AI表現,AI的載體即生態圈也應該是理性化的產物。像現實生活中,雪山在特定海拔才會有雪線,特殊植被生長週期,遊戲中的設定應該符合客觀世界的常規認知。在嚴謹追求的基礎上,開放世界的遊戲玩法,如採集、戰鬥、世界觀的設定,才能更好的結合地形地貌等地理因素實現合理的搭配。

開放世界網遊伺服器面臨的挑戰

開放世界網遊的真實3D場景,寄託了複雜玩法AI、物理、化學、導航尋路、場景破壞等,豐富的元素給玩家開放世界提供了多元解,這無疑是我們期望的,但這也依賴非常大的“算力開銷”。

在傳統的單機遊戲中,幾乎所有的計算都是在客戶端完成的,以一種“獨佔”的方式享受百分百的硬體資源。而在網遊框架下,玩家的操作行為、遊戲狀態以及場景中成千上萬個可互動物件都是伺服器權威的,因此需要在伺服器上完成比傳統網遊更復雜的運算,這對伺服器的算力、承載人數提出了更高的挑戰。

✦與傳統網遊相比✦

傳統的遊戲地圖尺寸一般比較小,如800米*800米,大一點的可能是1200米*1200米,伺服器需要採用2D灰度圖或3D體素的方式,匯出一份場景描述檔案用於伺服器邏輯計算,大概伺服器載入記憶體約在20-50M左右,那麼對於開放世界而言,地圖大小是乘方級的增長。

騰訊魔方《洛克王國》開放世界技術詳解

例如一個8公里*8公里的開放世界地圖,大小可能是傳統遊戲單場景的的50——100倍,這意味著整個伺服器使用時候尺寸檔案更大,載入時長更長、記憶體佔用會更多。

同時為了滿足豐富的場景互動玩法,伺服器對場景描述的精度要求也會更高,甚至需要保證和客戶端一樣的精度水平,用於進行一些物理模擬、碰撞與射線檢測等;此外,場景也並非一成不變的,天氣、季節變化等更復雜玩法的實現也要求伺服器進行更龐大的運算,這對伺服器的挑戰也是極為巨大的。

騰訊魔方《洛克王國》開放世界技術詳解

✦與開放世界單機遊戲相比✦

原本開放世界單機豐富的體驗,遷移到網遊後,產生更大的計算開銷,傳統開放遊戲單機中中,對人和場景,AI互動,沒那麼複雜,合理配置視野同步和AI運算即可。

但在開放世界網友中所需要承擔的不是某一個玩家,而是一群玩家。開放世界場景大,場景物件多,如一個場景伺服器支援5000個使用者,每個使用者有100個NPC,那就有50W個場景物件需要管理。事件發生產生的效果,不僅需要引發事件的玩家感受到,還要考慮到在場的其他玩家。

騰訊魔方《洛克王國》開放世界技術詳解

開放世界單純大不是目的,要既定規則之內,和世界進行互動,物理、化學規則成立,玩家的行為會被允許,能被第三個人客觀感受到,時間也更短。於是對客戶端伺服器通訊模型,處理事務複雜能力提出了要求。

✦開放世界遊戲——魔方初體驗✦

在“開放世界遊戲伺服器”這個命題下,傳統的Unreal Delicate Server的模式還不是很成熟,因此大量商業引擎的能力,在伺服器側還是需要我們自己去構建。

一是物理引擎涉及到物理模擬,如持續進行旋轉的水車、山上滾下的落石、泥濘的沼澤、使用磁鐵時的反饋等。

二是開放世界通達性互動,多種到達任意地點的實現手段:飛行\騎乘、搭橋過河、任意攀爬繞路等等。

騰訊魔方《洛克王國》開放世界技術詳解

三是網遊執行效率、安全、反外掛等方面。

四是AI的複雜運算,傳統網遊中一個AI不會藉助於整個3D場景去做豐富表現,但在開放世界網遊中客戶端要承擔AI的這些表現所需的運算,這也需要伺服器側的適配。

五是遊戲內的AI視野管理演算法同步問題,每一個AI在遊戲場景中都有自己的視野範圍,距離較遠的玩家的AI不會產生互動,玩家也不必關注AI的狀態變化,這能讓伺服器節省大量計算資源。

開放世界伺服器只有做得足夠好,才能經得住算力的挑戰,才能夠提升玩家的同時線上,才能在落實預先設想到的遊戲玩法。許多遊戲開服時都有伺服器崩潰的現象,這種情況也是我們首要考慮的問題,而且還需要在滿足豐富玩法的同時,保證比較高的承載人數。

以一般的UnrealDS承載為例,一般的遊戲可能搭載32核伺服器,每個核可以承載2-3個單局,那一臺伺服器能實現1000-1500名左右的玩家線上。我們要做的則是要承擔至少2-3倍的人數,並不斷提高上限,這離不開伺服器的持續最佳化。

架構最佳化離不開量化的分析與監控指標,在伺服器搭建的早期,我們就搭建了一個非常專業的量化監控體系,對伺服器上的所有子系統、元件、模組都進行了持續的監控,有了監控就可以邊開發邊最佳化,在玩法疊加的同時也持續保障伺服器的承載在一個健康的水平。

總結

開放世界網遊不僅僅要照護到單人體驗,更要顧及到多人體驗,所面臨的是一個複雜、綜合的課題。在AI和伺服器算力方面,我們已經開始了前瞻的嘗試,將來也將會在其他方面深耕解決更多的難題。

騰訊魔方《洛克王國》開放世界技術詳解

在玩法設計上,作為程式開發,面對“開放世界”這個課題,我們希望在做好技術儲備的同時,也充分在技術上探索更多突破的可能性,從而給策劃團隊更大的想象空間的同時,保障網遊化多人體驗的及時性與一致性。像是聽覺與嗅覺判斷,這是傳統遊戲沒有嘗試的,我們希望場景中的NPC和AI在基於視覺判斷的基礎上,可以擁有聽覺和嗅覺的判斷。策劃知道你在這做這套機制到時候,他們也會有不同的想法冒出來,我們也鼓勵他們去創新,這也是技術團隊希望達到的效果。

願景

開放世界網遊並不是一個筐,裡面有各種要素、地圖足夠大就會好玩。我們渴望的是一起制定“拯救世界”的無數種可能,並且在遊戲中實現我們天馬行空的想法!


來源:騰訊魔方工作室

相關文章