洛克王國12周年生快!你們要的開放世界技術(shù)力大揭密
親愛的小洛克們,今天是洛克王國十二周年紀(jì)念日,除了為洛克王國送上祝福之外,小魔方還請到了魔方工作室后臺主程序derry,帶大家探班洛克開放世界在研項目后臺程序開發(fā)組,了解服務(wù)器研發(fā)同學(xué)的腦海中,開放世界網(wǎng)游如何讓“拯救世界的一千種可能”成為現(xiàn)實,其背后又有著哪些規(guī)則與挑戰(zhàn)。


開放世界網(wǎng)游是如何搭建起來的?
在談開放世界網(wǎng)游前,我們不妨先回頭看看傳統(tǒng)網(wǎng)絡(luò)游戲。在傳統(tǒng)網(wǎng)絡(luò)游戲中,玩家總是扮演著食客的身份,享受著由策劃大廚呈上來的美食。反復(fù)斟酌的美術(shù)設(shè)計與動線設(shè)定,足夠合玩家胃口,但久而久之初見時的驚艷便慢慢褪去;機(jī)關(guān)式的玩法、固定化的通關(guān)條件,通過任務(wù)引導(dǎo)的唯一解,平淡甚至厭煩的情緒正在玩家心頭醞釀,玩家是時候換一換口味了。
開放世界網(wǎng)游中,玩家的身份正從“食客”向“業(yè)余廚師”的身份轉(zhuǎn)變,可以自由操刀,對設(shè)定進(jìn)行各種腦洞大開的排列組合。策劃作為規(guī)則層面的制定者,需要做的是準(zhǔn)好新鮮、完備的食材和一份貼心的使用說明。技能組合、天氣系統(tǒng)、地理環(huán)境等都被納入考慮,多元解成為玩家和策劃的共同追求。

?物理?
和傳統(tǒng)無縫大地圖相比,開放世界除了超大的世界規(guī)模,更多是體現(xiàn)在“開放”二字。在我們的理解中,“世界規(guī)則”與“操作自由度”是開放世界設(shè)計的兩個維度,我們也在不斷探索這個度在哪里。

我們不希望既定成文的規(guī)則去約束更多可能性產(chǎn)生,比如在世界的通達(dá)性上、物質(zhì)循環(huán)上,給到玩家更多的自由度,例如,可以嘗試給游戲內(nèi)每個元素更多的屬性值,策劃可以去自由配置,甚至是產(chǎn)生復(fù)合型物體出來。
將現(xiàn)實世界的物理法則移植到游戲世界中能產(chǎn)生哪些奇妙現(xiàn)象呢?比如草系精靈可以使種子生長,火系精靈可以點燃路障荊棘,冰系精靈可以凍結(jié)湖面,翼系精靈可以帶你乘風(fēng)飛翔……
對于游戲中過河的方法,我們希望看到不一樣的回答,可以讓玩家擁有更多的操作空間,去形成不同的解題效果。像使用魔法使河面結(jié)冰、各種飛行姿勢、點燃擋路的藤蔓等等。

策劃負(fù)責(zé)腦洞大開,我們則負(fù)責(zé)搭建舞臺,調(diào)配好游戲的物理引擎、模擬好貼近現(xiàn)實生活中真實的物理世界。而這也依賴物理和化學(xué)引擎的支持,為了保證正常的開發(fā)進(jìn)程,在立項初期,團(tuán)隊就對一款業(yè)界物理引擎進(jìn)行了深入的研究,包括官方文檔、源代碼、相關(guān)技術(shù)文獻(xiàn),并且在業(yè)務(wù)側(cè)進(jìn)行了封裝和持續(xù)的重構(gòu)、優(yōu)化與測試,跨過了商業(yè)引擎門檻高的障礙,對引擎有了很深的了解。

?AI的智能設(shè)計與生態(tài)圈的擬真?
對于開放世界網(wǎng)游的搭建來說,如果說物理法則是開放世界規(guī)則制定的基石,AI的智能設(shè)計與生態(tài)圈的高度擬真則是讓開放世界擁有了靈魂。
因此,我們理解中的開放世界,驅(qū)動世界的不止是玩家,而應(yīng)該是MetaAI驅(qū)動的,包括AI、TOD、季節(jié)與天氣等,即使沒有玩家的探索,整個世界還在按預(yù)設(shè)的規(guī)則進(jìn)行推動,世界上的生物依舊可以按照自己的節(jié)奏來棲息生存。

像是塞爾達(dá)都進(jìn)行了這種嘗試,隨著外部事件的不斷發(fā)生,AI會自主決策做出行動。游戲中的精靈會有明確的種群差異,一些溫順的精靈會接近玩家,而一些兇猛的精靈甚至?xí)诖笫澜绻敉婕?。同樣精靈AI也會遵守基本的生活作息和趨利避害的思維模式,像白天工作晚上休息、躲避暴雨、閃電等自然災(zāi)害。假如有一天你發(fā)現(xiàn)精靈在摸魚,或是在互相拌嘴,千萬別意外。這種機(jī)制在開放世界網(wǎng)游中是合理存在的,如果更細(xì)致地蹲點觀察,也許會挖掘隱藏彩蛋。

開放世界在擬真化,AI生態(tài)搭建上是不斷進(jìn)化的一個命題。為了讓AI的表現(xiàn)行為、運(yùn)行效率、擴(kuò)展性能達(dá)到折中,研發(fā)團(tuán)隊需要對傳統(tǒng)的AI制作工藝進(jìn)行迭代升級。傳統(tǒng)的AI經(jīng)過了FSM、GOAP、行為樹、決策矩陣等多種組織形式的迭代,但在研發(fā)過程中,我們發(fā)現(xiàn)任何一種形式,都無法滿足對“設(shè)想”中,豐富的AI生態(tài)的需求。
以騰訊自己的產(chǎn)品舉例,走近AI,他可以與玩家對視甚至是吵架,這些行為可以基于行為編寫程序?qū)崿F(xiàn)。當(dāng)玩法發(fā)生變化,需要玩家唱歌從AI面前路過并引發(fā)AI的“贊識”行為,那就需要為新加行為做一個變更。同時一些自然條件的變化,如日夜、天氣、隨機(jī)的自然事件等等都可以影響AI的最終行為。

當(dāng)一個AI行為樹很龐大時,新加一個AI的“響應(yīng)”行為非常困難,同時行為樹的執(zhí)行順序,以及輪詢式的Service機(jī)制,也會給運(yùn)行時帶來很多不必要的開銷。
因此,我們希望把決策能力單獨成立一個系統(tǒng),實現(xiàn)行為和決策可復(fù)用,并可以整體管理維護(hù)。在此機(jī)制上,我們再去做TOD、天氣,以便展現(xiàn)游戲其他內(nèi)容。雖然原則上比較簡單,但很多的細(xì)節(jié)需要反復(fù)的打磨、討論,經(jīng)過幾個月的優(yōu)化,我們已經(jīng)有一個比較優(yōu)秀的框架,但我們還會持續(xù)優(yōu)化和迭代。

有了豐富的AI表現(xiàn),AI的載體即生態(tài)圈也應(yīng)該是理性化的產(chǎn)物。像現(xiàn)實生活中,雪山在特定海拔才會有雪線,特殊植被生長周期,游戲中的設(shè)定應(yīng)該符合客觀世界的常規(guī)認(rèn)知。在嚴(yán)謹(jǐn)追求的基礎(chǔ)上,開放世界的游戲玩法,如采集、戰(zhàn)斗、世界觀的設(shè)定,才能更好的結(jié)合地形地貌等地理因素實現(xiàn)合理的搭配。

開放世界網(wǎng)游服務(wù)器面臨的挑戰(zhàn)?
開放世界網(wǎng)游的真實3D場景,寄托了復(fù)雜玩法AI、物理、化學(xué)、導(dǎo)航尋路、場景破壞等,豐富的元素給玩家開放世界提供了多元解,這無疑是我們期望的,但這也依賴非常大的“算力開銷”。
在傳統(tǒng)的單機(jī)游戲中,幾乎所有的計算都是在客戶端完成的,以一種“獨占”的方式享受百分百的硬件資源。而在網(wǎng)游框架下,玩家的操作行為、游戲狀態(tài)以及場景中成千上萬個可交互物件都是服務(wù)器權(quán)威的,因此需要在服務(wù)器上完成比傳統(tǒng)網(wǎng)游更復(fù)雜的運(yùn)算,這對服務(wù)器的算力、承載人數(shù)提出了更高的挑戰(zhàn)。
?與傳統(tǒng)網(wǎng)游相比?
傳統(tǒng)的游戲地圖尺寸一般比較小,如800米*800米,大一點的可能是1200米*1200米,服務(wù)器需要采用2D灰度圖或3D體素的方式,導(dǎo)出一份場景描述文件用于服務(wù)器邏輯計算,大概服務(wù)器加載內(nèi)存約在20-50M左右,那么對于開放世界而言,地圖大小是乘方級的增長。

例如一個8公里*8公里的開放世界地圖,大小可能是傳統(tǒng)游戲單場景的的50~100倍,這意味著整個服務(wù)器使用時候尺寸文件更大,加載時長更長、內(nèi)存占用會更多。
同時為了滿足豐富的場景互動玩法,服務(wù)器對場景描述的精度要求也會更高,甚至需要保證和客戶端一樣的精度水平,用于進(jìn)行一些物理模擬、碰撞與射線檢測等;此外,場景也并非一成不變的,天氣、季節(jié)變化等更復(fù)雜玩法的實現(xiàn)也要求服務(wù)器進(jìn)行更龐大的運(yùn)算,這對服務(wù)器的挑戰(zhàn)也是極為巨大的。

?與開放世界單機(jī)游戲相比?
原本開放世界單機(jī)豐富的體驗,遷移到網(wǎng)游后,產(chǎn)生更大的計算開銷,傳統(tǒng)開放游戲單機(jī)中中,對人和場景,AI互動,沒那么復(fù)雜,合理配置視野同步和AI運(yùn)算即可。
但在開放世界網(wǎng)友中所需要承擔(dān)的不是某一個玩家,而是一群玩家。開放世界場景大,場景物件多,如一個場景服務(wù)器支持5000個用戶,每個用戶有100個NPC,那就有50W個場景對象需要管理。事件發(fā)生產(chǎn)生的效果,不僅需要引發(fā)事件的玩家感受到,還要考慮到在場的其他玩家。

開放世界單純大不是目的,要既定規(guī)則之內(nèi),和世界進(jìn)行互動,物理、化學(xué)規(guī)則成立,玩家的行為會被允許,能被第三個人客觀感受到,時間也更短。于是對客戶端服務(wù)器通信模型,處理事務(wù)復(fù)雜能力提出了要求。
?開放世界游戲——魔方初體驗?
在“開放世界游戲服務(wù)器”這個命題下,傳統(tǒng)的Unreal Delicate Server的模式還不是很成熟,因此大量商業(yè)引擎的能力,在服務(wù)器側(cè)還是需要我們自己去構(gòu)建。
一是物理引擎涉及到物理模擬,如持續(xù)進(jìn)行旋轉(zhuǎn)的水車、山上滾下的落石、泥濘的沼澤、使用磁鐵時的反饋等。
二是開放世界通達(dá)性互動,多種到達(dá)任意地點的實現(xiàn)手段:飛行\(zhòng)騎乘、搭橋過河、任意攀爬繞路等等。

三是網(wǎng)游運(yùn)行效率、安全、反外掛等方面。
四是AI的復(fù)雜運(yùn)算,傳統(tǒng)網(wǎng)游中一個AI不會借助于整個3D場景去做豐富表現(xiàn),但在開放世界網(wǎng)游中客戶端要承擔(dān)AI的這些表現(xiàn)所需的運(yùn)算,這也需要服務(wù)器測的適配。
五是游戲內(nèi)的AI視野管理算法同步問題,每一個AI在游戲場景中都有自己的視野范圍,距離較遠(yuǎn)的玩家的AI不會產(chǎn)生互動,玩家也不必關(guān)注AI的狀態(tài)變化,這能讓服務(wù)器節(jié)省大量計算資源。
開放世界服務(wù)器只有做得足夠好,才能經(jīng)得住算力的挑戰(zhàn),才能夠提升玩家的同時在線,才能在落實預(yù)先設(shè)想到的游戲玩法。許多游戲開服時都有服務(wù)器崩潰的現(xiàn)象,這種情況也是我們首要考慮的問題,而且還需要在滿足豐富玩法的同時,保證比較高的承載人數(shù)。
以一般的UnrealDS承載為例,一般的游戲可能搭載32核服務(wù)器,每個核可以承載2-3個單局,那一臺服務(wù)器能實現(xiàn)1000-1500名左右的玩家在線。我們要做的則是要承擔(dān)至少2-3倍的人數(shù),并不斷提高上線,這離不開服務(wù)器的持續(xù)優(yōu)化。
架構(gòu)優(yōu)化離不開量化的分析與監(jiān)控指標(biāo),在服務(wù)器搭建的早期,我們就搭建了一個非常專業(yè)的量化監(jiān)控體系,對服務(wù)器上的所有子系統(tǒng)、組件、模塊都進(jìn)行了持續(xù)的監(jiān)控,有了監(jiān)控就可以邊開發(fā)邊優(yōu)化,在玩法疊加的同時也持續(xù)保障服務(wù)器的承載在一個健康的水平。

總結(jié)
開放世界網(wǎng)游不僅僅要照護(hù)到單人體驗,更要顧及到多人體驗,所面臨的是一個復(fù)雜、綜合的課題。在AI和服務(wù)器算力方面,我們已經(jīng)開始了前瞻的嘗試,將來也將會在其他方面深耕解決更多的難題。

在玩法設(shè)計上,作為程序開發(fā),面對“開放世界”這個課題,我們希望在做好技術(shù)儲備的同時,也充分在技術(shù)上探索更多突破的可能性,從而給策劃團(tuán)隊更大的想象空間的同時,保障網(wǎng)游化多人體驗的及時性與一致性。像是聽覺與嗅覺判斷,這是傳統(tǒng)游戲沒有嘗試的,我們希望場景中的NPC和AI在基于視覺判斷的基礎(chǔ)上,可以擁有聽覺和嗅覺的判斷。策劃知道你在這做這套機(jī)制到時候,他們也會有不同的想法冒出來我們也鼓勵他們?nèi)?chuàng)新,這也是技術(shù)團(tuán)隊希望達(dá)到的效果。

愿景
開放世界網(wǎng)游并不是一個筐,里面有各種要素、地圖足夠大就會好玩。我們渴望的是一起制定“拯救世界”的無數(shù)種可能,并且在游戲中實現(xiàn)我們天馬行空的想法!