累計銷量超2000萬,任天堂:開放世界得這麼做
去年中旬,任天堂的《塞爾達傳說:王國之淚》發售三天銷量突破1000萬,目前這款遊戲的全球總銷量已經超過2000萬份,延續了前作《荒野之息》的勢頭。
而讓人記憶猶新的是,《塞爾達傳說:王國之淚》在開放世界設計上更進了一步,別人還停留在走地雞和下副本模式中,這款遊戲已經能讓玩家在無縫的大世界中「上天入地」了。
日前,《塞爾達傳說:王國之淚》(後簡稱王國之淚)開發組在CEDEC大會上分享了遊戲在製作無縫三維開放世界(即充分利用天空、地面、洞穴場景的開放世界)時的技術經驗。
注:文中PPT可用微信一鍵掃描翻譯。
01 「二維」的荒野之息
作爲王國之淚的前作,《塞爾達傳說:荒野之息》(後簡稱荒野之息)奠定了這兩作的技術框架。比如,爲了實現無縫大世界,製作組採用了更具多邊形性能優勢的延時渲染技術;爲了兼容高自由度的玩法,製作組又使用了在各種環境下都很難出現物理計算紕漏的物理引擎,來呈現高靈活度的動作。
從製作組希望實現的要素倒推,在劃定技術範圍的過程中,他們面臨最大的問題,就是「廣闊的世界」和「無縫的運動」。
對於前者,在荒野之息開發初期,製作組的頭腦風暴後,最終確定了「製作一個廣闊的、平坦的世界」這個方向,換句話說,製作組將荒野之息的世界視作「二維」世界。
這種思維方式也有助於簡化玩家無縫移動的設計。從結果來看,荒野之息的地圖能夠繪製「遠處粗糙、近處精細的物件」「重要物件在遠處也能顯示,太細節的物件只有靠近纔會顯示」的LOD(Level of Detail)效果,能夠配合着玩家在二維平面的移動,而順暢地讀取數據。
自想要實現的目標出發,進而選擇的這些技術,有些時候也會造成「無法實現」的其他功能。至於「根據地圖上二維數據加載」的機制沒辦法實現什麼?那就是「三維立體構造」了。
換句話說,雖然荒野之息是一款能爬牆、能滑翔的3D動作遊戲,但從遊戲設計和實機體驗來看,這仍然是一款被限制在二維開放世界中製作出來的遊戲。
相比之下,王國之淚自開發初期團隊的頭腦風暴階段,就開始思考如何向着地面、天空、地底去做縱向拓展。這種思考,也出於製作組希望挑戰「荒野之息無法實現的東西」這個目標。
此外,荒野之息必須考慮兼容Wii U的硬件性能,而王國之淚是Switch專用遊戲因此硬件限制很少。所以總的來說,王國之淚開放世界的開發技術難點,還是在於「如何將荒野之息當中的二維要素,擴展爲三維式的設計」。
02 實現三維的「洞穴系統」
隨着王國之淚的開放世界轉爲三維式設計,在場景開發時,涉及到了除地面之外的天空島、洞穴、地下區域,因此在技術角度,有必要從三維視角重新考慮數據加載和LOD。
製作組首先關注的包含地面、牆壁、天花板這幾個要素的洞穴。爲此,製作組專門開發了一個既能針對三維洞穴數據進行讀取和LOD,又能無縫繪製洞穴地形的「洞穴系統」。
使用這個洞穴系統,製作組能輕易地構建和呈現出一個巨大的空間,並且進行無縫加載。於是他們創建了一個巨大的地下洞穴,與地面場景搭配後,就能形成一個無縫銜接的地面+地下區域。
在驗證這個廣闊的空間裡能設計什麼玩法的過程中,製作組也慢慢誕生了探索黑暗、與強大的地下敵人戰鬥,以及騎乘者之間的戰鬥等想法。
經過反覆測試,製作組得出的結論是,哪怕地下多出一塊巨大的場地,也能給製作組帶來更多的玩法設計思路。進一步來說,如果地下場景和地表相關聯,製作組還能設計出更多「發現-遊玩」的循環要素,於是後來遊戲內也誕生了可以在地底和地表相互找到對應提示的遊戲玩法。
在製作地底場景時,製作組會以地上的數據爲基礎來設計,比如地上凸起的地方在地下有凹陷,在地上有神社的地方地下也有檢查點。
與地底洞穴相同,空島的製作也採用了「洞穴系統」。
03 重新設計的加載系統
在將王國之淚的開放世界擴展到三維的同時,加載系統也進行了重新設計,以使得遊戲加載起來比荒野之息更加靈活。比如其中一種,是根據遊戲的推進在村莊地形變大時,可以針對遊戲標識靈活替換物件的機制。
又如,在荒野之息中,進入大型地下城時會出現一個加載屏幕,但在王國之淚裡,製作組構建了一個通用的數據預讀取獨立區域,從而實現無縫加載。
另一方面,由於加載系統的算法來自荒野之息,因此如何讀取地下和天空的數據就成了一個問題。例如,地底場景處於遠離地表的地下空間,玩家就沒有機會同時看到地底和地面。
因此,製作組認爲處於地底就加載地底、處於地面就加載地面,這樣才能高頻地呈現廣闊的世界,所以只有當玩家到達一定深度時,纔會卸載地面場景,加載地底場景。
然而在第一次實裝的時候,卸載和加載無法及時完成,導致玩家在落向地底的過程中出現畫面卡頓。理論上地底和地面是相連的,玩家直接從地面走向地底時,加載速度也夠用了,但作爲遊戲商品還是有瑕疵的。所以對製作組來說,在玩家高速墜落時,也有必要讓加載和卸載跟得上。
因此,製作組使用了四種方法進行改進。第一種,是通過「使用分析器進行可視化和處理重新排序」,將瓶頸和耗時的處理分爲立即需要的部分和其他部分,並將前者排到不執行加載時的空閒時間處理,再將後者延遲處理。
在解決這種排序帶來的瓶頸問題時,又篩選出文件加載速度本身就來不及的部分,所以第二種解決方案是「減少需要加載的文件數量」。
在基於二維世界的加載系統中,加載是根據爲每個對象設置的顯示距離來執行的,但即使是實際上看不到的東西,例如懸崖底部,也會被加載。因此在轉向三維時,製作組在玩家可以到達的多個位置設置攝像點,並根據「從這些點看不到哪些物體」的數據來減少需要加載的文件數量。
製作組還用了第三種方法「減少了必須加載的文件大小」。其中一個例子,是確定模型中使用紋理的分辨率是否合適,如果降低分辨率沒有問題,則自動降低分辨率,從而減少加載文件大小。
然而,即使充分利用了上述三種方法,仍然存在加載未及時完成的情況,所以製作組的第四種方法是「提前加載的開始時間」。
具體來說,首先根據所有用於進入地下場景的洞口,列出進入地下時需要的文件清單;然後,當玩家接近洞口時,讓遊戲在內存允許的情況下加載儘可能多的關聯文件。通過上述四種方法,王國之淚實現了玩家從地面到地底的無縫移動。
那麼,天空世界的加載情況如何呢?
在早期,天空島還處於遊戲策劃的試錯階段,所以他們顯然採取了「激進的空島放置策略」。然而,如果在空島設計最終確定之前實裝加載技術,那麼無法兼容的空島創意和設計就無法採用了。
因此,製作組利用荒野之息的加載系統,創造了一個環境,讓遊戲策劃可以不受限制地嘗試空島設計,創作他們真正需要的東西。結果來看,空島上設計出了許多物品和道具,還有與主線的關聯的大體量內容,以及與空中移動和途徑地形的小型內容,也包括如何登上空島的方式方法等細節。
基於上述功能和定位,製作組根據玩家的動作,只加載了一個大的空島,以及多個小空島並儲存在內存中,而未加載的空島會根據配置信息呈現預生成的LOD低模。通過這種定義「單位」並提前確定分配的方式,就可以在遊戲中高速處理空島卸載和替換新空島的過程。
在製作組看來,製作無縫大世界以及建立順暢的製作流程,某種程度上是渾然一體的事情。製作時不僅需要有實現無縫世界的技術,還要具備靈活運用的方法,再搭配良好的工作流程,最終才能發揮每個環節最大的作用。
製作組最後聊到,在玩王國之淚的時候,有的場景是你在看世界,有的場景是你只專注於眼前的物體,通過在這些場景之間的反覆切換,才能在玩家的腦海裡將整個世界無縫的連接到一起。
遊戲開發中,製作組既需要考慮一整個週期的製作循環,也需要思考1/1000秒內的遊戲優化細節,又或者是考慮整個團隊的迭代。從程序製作的角度來看,要實現王國之淚的無縫大世界,最需要的還是能在「微觀和宏觀之間來回切換」的視角。
消息來源:
https://www.4gamer.net/games/578/G057883/20240824003/
遊戲葡萄編譯整理